QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#733243 | #9543. Good Partitions | 0123456789_1# | WA | 1ms | 5676kb | C++14 | 4.8kb | 2024-11-10 17:52:34 | 2024-11-10 17:52:36 |
Judging History
answer
// #include<bits/stdc++.h>
// using namespace std;
// int main(){
// long n,q,i,j,k,i1,q1,q2,q3;
// static long dp[310][160][160][3],s[160][160][160];
// char z[310];
// scanf("%ld %ld\n%s\n",&n,&q,z+1);
// z[0]=z[n+1]='d';
// i1=0;
// for(i=1;i<=n;i++){
// if(z[i]!='?')continue;
// i1++;
// if(i1==1){
// if(z[i-1]!='a'&&z[i+1]!='a')dp[1][1][0][0]=1;
// if(z[i-1]!='b'&&z[i+1]!='b')dp[1][0][1][1]=1;
// if(z[i-1]!='c'&&z[i+1]!='c')dp[1][0][0][2]=1;
// continue;
// }
// for(j=0;j<=min(i1,n+1>>1);j++){
// for(k=0;k<=min(i1-j,n+1>>1);k++){
// if(i1-j-k>n+1>>1)continue;
// if(z[i-1]=='?'){
// if(z[i+1]!='a'){
// dp[i1][j][k][0]=dp[i1-1][j-1][k][1]+dp[i1-1][j-1][k][2];
// }
// if(z[i+1]!='b'){
// dp[i1][j][k][1]=dp[i1-1][j][k-1][0]+dp[i1-1][j][k-1][2];
// }
// if(z[i+1]!='c'){
// dp[i1][j][k][2]=dp[i1-1][j][k][0]+dp[i1-1][j][k][1];
// }
// }else{//if(i1==2&&j==1&&k==0)printf("a");
// if(z[i-1]!='a'&&z[i+1]!='a'){//if(i1==2&&j==1&&k==0)printf("a");
// dp[i1][j][k][0]=dp[i1-1][j-1][k][0]+dp[i1-1][j-1][k][1]+dp[i1-1][j-1][k][2];
// }
// if(z[i-1]!='b'&&z[i+1]!='b'){
// dp[i1][j][k][1]=dp[i1-1][j][k-1][0]+dp[i1-1][j][k-1][1]+dp[i1-1][j][k-1][2];
// }
// if(z[i-1]!='c'&&z[i+1]!='c'){
// dp[i1][j][k][2]=dp[i1-1][j][k][0]+dp[i1-1][j][k][1]+dp[i1-1][j][k][2];
// }
// }
// }
// }
// }//printf("%ld - \n",dp[1][0][0][2]);
// for(i=0;i<=min(i1,n+1>>1);i++){
// for(j=0;j<=min(i1-i,n+1>>1);j++){
// if(i1-i-j>n+1>>1)continue;
// s[i+1][j+1][i1-i-j+1]=dp[i1][i][j][0]+dp[i1][i][j][1]+dp[i1][i][j][2];
// //printf("%ld %ld %ld %ld\n",i,j,i1-i-j,s[i+1][j+1][i1-i-j+1]);
// }
// }
// for(i=1;i<=151;i++){
// for(j=1;j<=151;j++){
// for(k=1;k<=151;k++){//if(i==0&&j==0&&k==4)printf("*%ld ",s[i-1][j][k]+s[i][j-1][k]+s[i][j][k-1]);
// s[i][j][k]+=s[i-1][j][k]+s[i][j-1][k]+s[i][j][k-1]-s[i-1][j-1][k]-s[i-1][j][k-1]-s[i][j-1][k-1]+s[i-1][j-1][k-1];
// }
// }
// }//printf(" s222=%ld \n",s[2][2][2]);
// while(q--){
// scanf("%ld %ld %ld\n",&q1,&q2,&q3);
// q1=min(q1,(long)150);
// q2=min(q2,(long)150);
// q3=min(q3,(long)150);//printf("%ld %ld %ld\n",q1,q2,q3);
// printf("%ld\n",s[q1+1][q2+1][q3+1]);
// }
// return 0;
// }
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[2000006];
int b[2000006];
int n;
void check(int k)
{
if(k==1){
cout<<1<<endl;
}else{
if(k%2){
int f=1;
for(int i=1+k;i<=n;i+=k){
for(int j=i+1;j<=i+k-1;j++){
if(b[j]<0){
f=0;
break;
}
}
if(!f){
break;
}
}
if(f){
cout<<2<<endl;
}else{
cout<<1<<endl;
}
}else{
int h=k;
int f=1;
for(int i=1+k;i<=n;i+=k){
for(int j=i+1;j<=i+k-1;j++){
if(b[j]<0){
f=0;
break;
}
}
}
if(f){
int ans=0;
while(h%2==0){
ans++;
h/=2;
}
ans++;
cout<<ans<<endl;
}else{
check(k/2);
}
}
}
}
signed main()
{
int T;
cin>>T;
while(T--){
int q;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i]-a[i-1];
}
int k;
for(int i=1;i<=n;i++){
if(b[i]<0){
k=i;
break;
}
}
k--;
check(k);
while(q--){
int p,v;
cin>>p>>v;
b[p]=v-a[p-1];
b[p+1]=a[p+1]-v;
for(int i=1;i<=n;i++){
if(b[i]<0){
k=i;
break;
}
}
k--;
check(k);
}
}
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5676kb
input:
1 5 2 4 3 2 6 1 2 5 3 5
output:
1 2 3
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 5612kb
input:
1 1 1 2000000000 1 1999999999
output:
2 2
result:
wrong answer 1st lines differ - expected: '1', found: '2'