本文共 2511 字,大约阅读时间需要 8 分钟。
若两个相邻方块之差不是偶数,则NO
#includeusing namespace std;typedef long long ll;int a[111],b[111];int main(){ ios::sync_with_stdio(false); int t,n; cin>>t; while(t--) { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } int cnt=0; for(int i=2;i<=n;i++) b[++cnt]=a[i]-a[i-1]; int flag=0; for(int i=1;i<=cnt;i++) { if(b[i]%2!=0) { flag=1; break; } } if(flag) puts("NO"); else puts("YES"); } return 0;}
是否有一个长度大于3的回文子序列,,暴力模拟就行。
#includeusing namespace std;typedef long long ll;int a[11111];int main(){ ios::sync_with_stdio(false); int t,n; cin>>t; while(t--) { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } int flag=0; for(int i=1;i 1) sum++; } if(sum!=0) { flag=1; break; } } if(flag) puts("YES"); else puts("NO"); } return 0;}
青蛙要从0位置跳到n+1 去,n每个位置会有两种字符:L,R。在L 字符只能往左跳,R 字符处只能往右跳。你有一个最大距离d ,你每次跳的距离为[1,d] ,让你输出你可以恰好到达n+1 处的最小的d 。
最小的d,要跳到R上,求R之间的最大间距,n+1处也设为R。
#includeusing namespace std;typedef long long ll;char s[1111111];int main(){ ios::sync_with_stdio(false); int t; cin>>t; while(t--) { cin>>s+1; int len=strlen(s+1); s[len+1]='R'; int l=0,ans=0; for(int i=1;i<=len+1;i++) { if(s[i]=='R') { ans=max(ans,i-l); l=i; } } cout< <
化简完就是求Ci+Cj>0有多少对??
暴力查肯定会爆,,二分查找。。
#includeusing namespace std;typedef long long ll;int a[200005],b[200005],c[200005];int main(){ ios::sync_with_stdio(false); int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; for(int i=1;i<=n;i++) c[i]=a[i]-b[i]; sort(c+1,c+n+1); ll sum=0; for(int i=1;i<=n-1;i++) { ll l=i+1,r=n+1; while(l >1; if(c[mid]+c[i]>0) r=mid; else l=mid+1; } if(r!=n+1) sum+=n-r+1; } cout< <
转载地址:http://atyzi.baihongyu.com/