累積和
KAJIMA CORPORATION CONTEST 2024(AtCoder Beginner Contest 340) - AtCoder B - Append 問題文をそのまま実装 #include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i=0;i<n;i++) #define endl '\n' int main() { int q; cin >> q; vector<int> v; while(q--) { int t,x; cin >> t >> x; if (t == 1) v.push_b</int></n;i++)></bits/stdc++.h>…
KYOCERA Programming Contest 2023(AtCoder Beginner Contest 305) - AtCoder B - ABCDEFG #include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i=0;i<n;i++) #define endl '\n' int main() { char p,q; cin >> p >> q; const int n = 7; vector<int> a = {0,3,1,4,1,5,9}; vector<int> s(n+1); REP(i…</int></int></n;i++)></bits/stdc++.h>
NEC Programming Contest 2022 (AtCoder Beginner Contest 267) - AtCoder B - Split? 1番のピンが立っていたらNo 各レーンで1本でもピンが立っているレーン番号の集合を取る ピンが立っているレーン番号を昇順にみていって間が空いていたらYes #include <bits/stdc++.h> us</bits/stdc++.h>…
Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder B - Light It Up Bにしては難しい #include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i=0;i<(n);i++) int main() { int n,k; cin >> n >> k; vector<int> a(k),x(n),y(n); RE</int></bits/stdc++.h>…
問題 D - Pond 解法 二分探索 + 二次元累積和 という典型テクニックを組み合わせて解ける問題だった。 公式解説が詳細なので詳しくはそちらを参照 Editorial - AtCoder Beginner Contest 203(Sponsored by Panasonic) #include <bits/stdc++.h> using namespace std; #def</bits/stdc++.h>…
問題 D - AtCoder Express 2 解法 列車の区間L-Rを二次元座標として考える。 Q個のクエリを求める必要があるが、都度計算すると間に合わない。 二次元累積和を使って前計算しておくことで、Q個のクエリに対して高速に答えを出す。 #include <bits/stdc++.h> using namespace</bits/stdc++.h>…
問題 E - Queen on Grid 解法 DP + 累積和。 dp配列は、 dp[i][j] = {i,j}地点に到達できる場合の数 で考える。 するとdp[i][j] は以下のように3方向のdpの累積を足すと求められる。 dp[i][j] = dp[i][j-1] + dp[i][j-2] ... + dp[i][0] + dp[i-1][j] + dp[i…
問題 D - Leaping Tak 解法 素直にDPで解けそうだが、愚直にnに対して全ての移動を試すと $ O(N{^2}) $ となり $ 2≤N≤2×10{^5} $ の制約下でTLEしてしまう。 // このコードはTLEする #include <bits/stdc++.h> using namespace std; #define COUT(x) cout<<(x)<<"\n" #defin</bits/stdc++.h>…