这场比赛作出前两道题就挂机了,没有信心做下去了。
题目链接:http://codeforces.com/contest/1119
#include<bits/stdc++.h>
using namespace std;
const int maxn=3e5+10;
int a[maxn];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int mx=0;
for(int i=1;i<=n;i++){
if(a[i]!=a[1]) mx=max(mx,i-1);
if(a[i]!=a[n]) mx=max(mx,n-i);
}
printf("%d\n",mx);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn=3e5+10;
int a[maxn],b[maxn];
int main(){
int n,h;
scanf("%d%d",&n,&h);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int ans;
for(int i=n;i>0;i--){
int x=h;
for(int j=1;j<=n;j++){
b[j]=a[j];
}
sort(b+1,b+1+i);
/*for(int j=1;j<=i;j++){
printf("b[%d]=%d\n",j,b[j]);
}*/
int j;
for(j=i;j>0;j-=2){
if(b[j]<=x){
x-=b[j];
//printf("j=%d,x=%d\n",j,x);
}else break;
}
if(j<=0){
ans=i;
break;
}
}
printf("%d\n",ans);
return 0;
}
C. Ramesses and Corner Inversion
就这么个题还做不出来,/无奈
#include<bits/stdc++.h>
using namespace std;
const int maxn=510;
int a[maxn][maxn],b[maxn][maxn];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&b[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]!=b[i][j]){
if(i==n-1||j==m-1){
printf("No\n");
return 0;
}
b[i][j]^=1;
b[i][j+1]^=1;
b[i+1][j]^=1;
b[i+1][j+1]^=1;
}
}
}
printf("Yes\n");
return 0;
}