-
Nは数字のセットの配列の長さであり、値が同じですべての項目かどうかを尋ねたように、2のいずれかを引き起こすことができます。
私はそれが箱のすべてを書くのは難しいコードにつながる排除することができないと思いますので、背景に元のタイトルのためにこのようなテトリスのように......問題を単純化するために、より能力のテストでdiv.3トピックを感じます。しかし場合は、質問の意味を簡単にするよう上記のように、方向は非常に明確である:限り、裁判官のすべての桁が偶数/奇数であるかどうかを。
CF1324A-コード
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<set> #include<vector> #include<queue> using namespace std; int main() { int a[110]; int kase; cin>>kase; while(kase--){ int n; cin>>n; a[0]=a[n+1]=0; int ok=1; for(int i=1;i<=n;i++){ cin>>a[i]; a[i]%2==0?a[i]=-1:a[i]=-2;//偶数记为-1,奇数记为-2 if(i==1) continue; if(a[i]!=a[1]) ok=0; } if(ok) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
-
3とは、よりパリンドロームサブストリングの長さよりも存在するか否かを判断する
単純化:サブ回文文字列長3かどうかを
さらに簡素化:2つの隣接していない要素がある場合に等しいですこれは、コードを記述する必要が直接どのようにショーのコアに短縮されました......が、詳細はまだそれを展開する必要があります。
文字列のトラバーサルの間に、遭遇したVISデジタルタグ・アレイを使用して、その時間スケール番号が最初に現れるを記録。数は、第二の遭遇にトラバースされる場合(\(VIS [A [I]]!= 0 \) )、次いで限り距離計算のためのデジタル位置の最初の遭遇1、\(> 1 \ )パリンドロームストリングを構成するように端部に隣接していない、端部を記述することができます。
CF1324B-コード
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<set> #include<vector> #include<queue> using namespace std; int a[5010]; int vis[5010]; int main() { int t; cin>>t; while(t--){ memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); int n; cin>>n; int ok=0; for(int i=1;i<=n;i++) { cin>>a[i]; if(!vis[a[i]]) vis[a[i]]=i; else if(i-vis[a[i]]>1) ok=1; } if(ok) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
-
カエルジャンプボックス、唯一の右から左にジャンプします。開始点は右にジャンプすることができます。他の書かれた格子L、R、このボックス後のカエルのジャンプの方向を表します。カエルは、距離を選択することができる\(D \) 、各ジャンプからジャンプすることができ(<= D \)\、終点Qが最小ジャンプできるグリッド上\(Dを\) 。
逆思考の波。明らかに終わりであなただけの過去に最も近いグリッドRをジャンプすることができますが、私はそれがここにあった、その後、立ち往生だと思う......
質問の意味を組み合わせ、2のための間接的な隣接(彼らはLの間で連続していなければならないので)R-グリッド、あなたは常に右側に格子RのRグリッドから左にジャンプすることができ、逆の発想であれば、我々は唯一のジャンプすることができますので、まで最大値をとり、直接または間接的に隣接するR格子は、確実に選択することができるすべての方法との間の距離として、ある-出発点に戻って\(D \)は端から戻って開始点にジャンプすることができます。
CF1324C-コード
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<set> #include<vector> #include<queue> using namespace std; int main() { int t; cin>>t; while(t--){ string a="R"; string x; cin>>x; a+=x; int last=0; int m=0; for(int i=0;i<a.length();i++){ if(a[i]=='R'){ m=max(m,i-last); last=i; } } int ans; int k=a.length()-last; ans=max(m,k); cout<<ans<<endl; } return 0; }