Boot camp for Beginners
問題はこちら atcoder.jp 方針 to_stringを使ってみたかったので複雑になっています。 digit_sum+=i_str[j]-'0'の-'0'については,こちらを参考にしました。ASCIIコードでは文字'0'が48に対応しているらしいです。 コード #include <bits/stdc++.h> using namespace std; in</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 各都市ではなく道路に注目しています。C. Peaks(記事にする予定)と似た発想です。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> a(m),b(m); for(int i=0; i<m; i++){ cin>>a[i]>>b[i]; } vector<int> count(n</int></m;></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 ボタンの挙動は問題文の通りに作ります。 問題はボタン が点けられるかの判定ですが, 回の操作後までにボタン が光らない場合,初期のボタン も含めてこれまでに 回ボタンが光っています。ボタンの数は 個なので,少なくとも …
問題はこちら atcoder.jp 方針 あらかじめ縁のための配列を確保しておきます。 コード #include <bits/stdc++.h> using namespace std; int main(){ int h,w; cin>>h>>w; vector<vector<char>> a(h+2,vector<char>(w+2)); for(int i=1; i<h+1; i++){ for(int j=1; j<w+1; j++){ cin>>a[i][j]; } } for(int j=0; j</h+1;></char></vector<char></bits/stdc++.h>
問題はこちら atcoder.jp 方針 以上の整数 について, 未満のすべての素数で割り切れなければ, は素数である,という普通の素数判定。 コード #include <bits/stdc++.h> using namespace std; int main(){ int x; cin>>x; vector<int> p={2}; bool not_prime=false; int i=2; wh</int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 のように を小さくしながら考えます。それぞれの に対して を最大にする貪欲法を用いています。ある A_i は B_i-1, B_i にのみ制約されるので,貪欲法で最適解が求まります。 (アルゴリズムがほぼ分からないので雰囲気で言っ…
問題はこちら atcoder.jp 方針 まず の桁数を比較し,それが同じ場合には大きい位の値から比較していきます。 コード #include <bits/stdc++.h> using namespace std; int compare(string x,string y,int i); int main(){ string a,b; cin>>a>>b; int i=0; if(a.size()>b.si</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 番目のマスから順に試していき,最大値が出るたびに暫定の最大値を更新しています。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<long> h(n); for(int i=0; i<n; i++){ cin>>h[i]; } int count=0,count_temp=0; for(</n;></long></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 普通に足すだけ。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<long long> l(n+1); l[0]=2,l[1]=1; for(int i=2; i<=n; i++){ l[i]=l[i-1]+l[i-2]; } cout<</long></bits/stdc++.h>
問題はこちら atcoder.jp 方針 「どの隣り合う 枚のタイルも異なる色で塗」るということは,10101...か01010...のいずれかです。 コード #include <bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; int count_1=0,count_2=0; //10101... for(int i=0; i</bits/stdc++.h>
問題はこちら atcoder.jp 方針 回ループを回せば良いのですが, 秒( 年)かかってしまいます。 対称性があるので綺麗に消えそうだなと思いつつ,与 をそれぞれ , 回の操作後の を として式をいじっていると, ※4行目の添字K-1はK-2の間違いです。 すごいで…
問題はこちら atcoder.jp 方針 いっぱいループしました。 コード #include <bits/stdc++.h> using namespace std; int main(){ string w; cin>>w; vector<int> count(26); bool check=true; char c='a'; for(int i=0; i<26; i++){ for(int j=0; j</int></bits/stdc++.h>
問題はこちら atcoder.jp 方針 ゴリゴリ調べる。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> k(n); vector<vector<int>> a(n, vector<int>(m)); for(int i=0; i<n; i++){ cin>>k[i]; for(int j=0; j<k[i]; j++){ cin>>a[i][j]; } } bool check=false; int count=0,loved=</k[i];></n;></int></vector<int></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 「任意の整数 に対して,」「( の最小値)」です。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<int> p(n); for(int i=0; i<n; i++){ cin>>p[i]; } int temp_min; int count=1; // i=1は常に条件を満たす temp_min</n;></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 で場合分け(tex機能の関係で不等号の向きが不自然になってますが合ってます)。 ちなみにVS CodeをUbuntuストアからでなくMicrosoftからダウンロードしてインストールしたら日本語が打てるようになりました。 コード #include <bits/stdc++.h></bits/stdc++.h>…
Mondai wa kochira atcoder.jp Houshin ga de saidai no youso deatta baai wa, 2-banme ni ookii youso wo syuturyoku simasu. sore igai no baai wa sonomama saidai no youso wo syuturyoku sureba iidesu. Ubuntu 20.04 LTS ni upgrade shitara, VS Code…
問題はこちら atcoder.jp 方針 ナイーブに 人の点数をいちいち引くのでは間に合いません。ラウンドで出た正解数は と分かっているので,各問の正解者に 点ずつ与えて,最後で一律に 点を引いても同じことです。 コード #include <bits/stdc++.h> using namespace std; int m</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 枚だけで全てのゲートを通過できるIDカードは, から まですべての共通範囲です。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> l(m),r(m); for(int i=0; i<m; i++){ cin>>l[i]>>r[i]; } bool exist=true;</m;></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 AからZまでのアルファベットが 文字で, より,全探索でも 回以下のループで済みます。 コード #include <bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; bool judge=false; bool exist=false; char i='a'; char result;</bits/stdc++.h>…
問題はこちら atcoder.jp 独り言 この問題AtCoderでやったことある気がするけど印ついてなかった。 コード #include <bits/stdc++.h> using namespace std; int main(){ int a,b,c,x; cin>>a>>b>>c>>x; int count=0; for(int i=0; i</bits/stdc++.h>
問題はこちら atcoder.jp 方針 文字目以外がちゃんと数字になっているかチェックするのが面倒かな,と思ったら, は数字またはハイフンからなるという制約がありました。優しい。 コード #include <bits/stdc++.h> using namespace std; int main(){ int a,b; string s; cin</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 特になし。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n; string s; cin>>n>>s; int x=0; int x_max=0; for(int i=0; i<n; i++){ if(s.at(i)=='I'){ x++; }else{ x--; } if(x>x_max){ x_max=x; } } cout<</n;></bits/stdc++.h>
問題はこちら atcoder.jp 方針 の各文字について, 内にそれが何個存在するかを数えています。 個以上あればアウト。 コード #include <bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; bool check=false; for(int i=0; i<s.size(); i++){ int counter=count(s.begin(),s.end(),s[i]); if(counter>=2){ check=true; break; } } i</s.size();></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 正方形に外接する,各辺が 軸, 軸に平行であるような正方形を描いて考えました。 コード #include <bits/stdc++.h> using namespace std; int main(){ int x_1,y_1,x_2,y_2; cin>>x_1>>y_1>>x_2>>y_2; int a=y_1-y_2; int b=x_2-x_1; int x_3</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 の 桁である部分文字列を一つずつ調べています。 ご主人様が大好きな数は なのに,問題名は で変だなと思ったら,ABC114は シリーズなんですね。 コード #include <bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; int nu</bits/stdc++.h>…
問題はこちら atcoder.jp 方針 工夫点は入力段階で一度偶奇判定をしていることくらいです。簡単。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; bool even=true; vector<int> a(n); for(int i=0; i<n; i++){ cin>>a[i]; if(a[i]%2!=0){ even=false; } } i</n;></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 を 個で割って,余った分を場合分け。 コード #include <bits/stdc++.h> using namespace std; int main(){ long n,a,b; cin>>n>>a>>b; long q=n/(a+b); long r=n%(a+b); if(r<=a){ cout<</bits/stdc++.h>
問題はこちら atcoder.jp 方針 体力 のモンスターを倒すのに必要な攻撃回数を求めるアルゴリズムを とすると, times(H){ if H=1 1 を出力 else if H>=2 2*times([H/2])+1 を出力 } と再帰的に表せます( は最初の攻撃)。] (ガウス記号,床関数)の処理が…
問題はこちら atcoder.jp 方針 人目の参加者が期間中に食べるチョコレートの数は, を満たす ( は非負整数)の個数です。 コード #include <bits/stdc++.h> using namespace std; int main(){ int n,d,x; cin>>n>>d>>x; vector<int> a(n); for(int i=0; i<n; i++){ cin>>a[i]; } int eat=0; fo</n;></int></bits/stdc++.h>…
問題はこちら atcoder.jp 方針 要求するお菓子が少ない子どもから順番に配っていけばいいですが, 番目まで配って 番目の子どもに配る際は注意が必要。要求するぴったりの数でないと喜んでくれないので,別で(残っているお菓子の数)( 番目の子どもが要求…