#自己紹介
はじめまして!大学3年のlygumiです。
今回から競プロ始めていきたいと思います。
(この記事作成するのも一苦労……先が思いやられる…)
プログラミングできたらかっこいいな…っていう動機で始めてみました!(PCとかスマホが使えてるこの時代凄くないですか??中身知りたいって思いますよね!!)
そんなこんなで手探りで始めてみました!
(密かにIT系に就職したいと思ってる)
今日までにやった勉強は
- C++入門 AtCoder Programming Guide for beginners (APG4b)これでC++の基礎を学習
- paizaラーニングのスキルチェック(C問題が解ける程度)
- 競プロのQiitaの記事を読み漁る(特にこの記事は非常に参考になりました)
の主に3つです
#A問題
早速問題に移ります
- 所要時間:10分
- 一発AC
###解答
ABC175_A
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
int main(){
string s; cin >> s;
if(s == "RRR") cout << 3 << endl;
else if(s == "RRS" || s== "SRR") cout << 2 << endl;
else if(s == "RSR" || s == "SRS" || s == "SSR" || s == "RSS") cout << 1 << endl;
else if(s == "SSS") cout << 0 << endl;
return 0;
}
#B問題
意外と手間取ってしまいました
原因:問題文の条件の見落とし
- 所要時間:40分
- 一発AC
###解答
ABC175_B
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
int main(){
int n, ans = 0; cin >> n;
vector<int> num(n);
rep(i, n){
cin >> num.at(i);
}
for(int i = 0; i < n - 2; i++){
int a, b, c;
for(int j = i + 1; j < n - 1; j++){
for(int k = j + 1; k < n; k++){
a = num.at(i); b = num.at(j); c = num.at(k);
if(a == b || b == c || a == c) continue;
if(a < b) swap(a, b);
if(a < c) swap(a, c);
if(b < c) swap(b, c);
if(a + b > c && a - b < c) ans++;
}
}
}
cout << ans << endl;
return 0;
}
#C問題
これが解けず終わってしまいました
bit全探索でできたと思ったものの
- AC×13
- WA×11
- TLE×7
という結果となり、そもそもbit全探索も不完全な状態であった
- bit全探索だと思ってしまった…(数が大きすぎることに気づくべし)
##問題文
###解答
ABC175_C
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
int main(){
int64_t x, k, d, ans = 10000000000000000; cin >> x >> k >> d;
int64_t y = x;
rep(i, 1 << k){
rep(j, k){
if((i >> j) & 1) y += d;
else y -= d;
//cout << y << endl;
}
//cout << y << endl;
if(y < 0) y = -y;
if(ans > y) ans = y;
y = x;
}
cout << ans << endl;
return 0;
}
#反省
###良かった点
- bit全探索の発想ができた(そもそも違ったけど…)
- 楽しんでできた
###悪かった点
- B問題に時間を取られすぎた
- C問題の制約をよく吟味していなかった
#Rate
0→10になりました!
10回程度コンテストに参加するとrateが本来の値に近づくみたいなので辛抱強くコンテスト参加していきたいと思います!