復習
頭こんがらがる 考えにくいので、最初距離1ずつあけてなくて全員地点0にいると考えると、ちょっと考えやすくなる signed main(){ int N,Q;cin >> N >> Q; vector<int>D(N+1); rep(i,N){ cin >> D[i]; D[i]-=1; } vector<int>S(N);//周期 rep(i,N){ if(i==0)S[i] = D[i]</int></int>…
WAが出て、後半の数え上げでミスってるかと思ったら前半で普通に嘘をやってた それ確かに答え1にしたらまずい、それはそう signed main(){ int N;cin >> N; N--; vector<int>B(N); rep(i,N)cin >> B[i]; vector<int>nowmax(N+1,0); bool fl = false; int ret = 0; rep(</int></int>…
以前解説ACしたものの復習(1):友人にのみ の人がいる場合、それはその人と全員が繋いでおしまい(1)に該当する人がいなくて、(2):友人の友人まで の人がいるとき 考えられるのは2パターンあって、1つはスターグラフ もう1つは、(2)に該当する頂点が2つだけの…
以前解説ACしたものの復習 modの取り忘れでWAが出て焦った… 縦と横別々に見て、累積和のdp signed main(){ int M;cin >> M; int P,Q;cin >> P >> Q; deque<int>A(M); rep(i,M)cin >> A[i],A[i]%=2; deque<int>rec = A,now = A; bool f = true; while(f||now!=A){ if(f)</int></int>…
以前解説ACしたものの復習 signed main(){ int M;cin >> M; int P,Q;cin >> P >> Q; deque<int>A(M); rep(i,M)cin >> A[i],A[i]%=2; deque<int>rec = A,now = A; bool f = true; while(f||now!=A){ if(f)f=false; now.push_back((now.front()+now.back())%2); rec.push</int></int>…