Submission #1729290
Source Code Expand
#include<bits/stdc++.h>
#define ll int
#define FOr(i,x,y) for(ll i=x;i>=y;--i)
#define For(i,x,y) for(ll i=x;i<=y;++i)
using namespace std;
const ll N=4010;
char s1[N],s2[N];
ll L[N],R[N],pre[N],nxt[N],a[N],b[N],now[N],n,dd[N],gg[N],answ=1e9;
bool pd(){
bool a_has_1=0,b_has_1=0;
For(i,0,n-1) a_has_1|=a[i],
b_has_1|=b[i];
return a_has_1&&!b_has_1;
}
void Max(ll &x,ll y){ if (y>=x) x=y; }
int main(){
// freopen("flip.in","r",stdin);
// freopen("flip.out","w",stdout);
scanf("%s%s",s1,s2); n=strlen(s1);
For(i,0,n-1) a[i]=s1[i]-'0';
For(i,0,n-1) b[i]=s2[i]-'0';
if (pd()) return puts("-1"),0;
For(i,0,n-1) L[i]=i-1,R[i]=i+1; L[0]=n-1; R[n-1]=0;
For(i,0,n*2) pre[i%n]=b[i%n]?i%n:pre[L[i%n]];
FOr(i,n*2,0) nxt[i%n]=b[i%n]?i%n:nxt[R[i%n]];
For(i,0,n-1) pre[i]=(i-pre[i])<0?(i-pre[i]+n):(i-pre[i]);
For(i,0,n-1) nxt[i]=(nxt[i]-i)<0?(nxt[i]-i+n):(nxt[i]-i);
For(rev,1,n*2){//枚举 向左移动i
ll ned_right=0,ned_left=0,cost=0;
For(i,0,n-1) now[i]=a[(i+rev)%n];
For(i,0,n-1) dd[i]=gg[i]=0;
For(i,0,n-1) cost+=now[i]!=b[i];
For(i,0,n-1) if (now[i]!=b[i]&&nxt[i]>rev&&pre[i]) Max(dd[nxt[i]-rev-1],pre[i]),
Max(gg[pre[i]-1],nxt[i]-rev);
FOr(i,n-1,0){
Max(dd[i],dd[i+1]); Max(gg[i],gg[i+1]);
answ=min(answ,rev+cost+(min(dd[i],gg[i])+i)*2);
}
}
For(rev,0,n*2){//枚举 向右移动i
ll ned_left=0,ned_right=0,cost=0;
For(i,0,n-1) now[i]=a[(i-rev+n*2)%n];
For(i,0,n-1) dd[i]=gg[i]=0;
For(i,0,n-1) cost+=now[i]!=b[i];
For(i,0,n-1) if (now[i]!=b[i]&&pre[i]>rev&&nxt[i]) Max(dd[pre[i]-rev-1],nxt[i]),
Max(gg[pre[i]-1],pre[i]-rev);
FOr(i,n-1,0){
Max(dd[i],dd[i+1]); Max(gg[i],gg[i+1]);
answ=min(answ,rev+cost+(dd[i]+i)*2);
}
}printf("%d",answ);
}
Submission Info
Submission Time
2017-11-01 15:44:12+0900
Task
D - Shift and Flip
User
SHENZHEBEI
Language
C++14 (GCC 5.4.1)
Score
1000
Code Size
1779 Byte
Status
AC
Exec Time
195 ms
Memory
384 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:19:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s%s",s1,s2); n=strlen(s1);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1000 / 1000
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
1 ms
256 KB
sample_02.txt
AC
1 ms
256 KB
sample_03.txt
AC
1 ms
256 KB
sample_04.txt
AC
1 ms
256 KB
subtask_1_01.txt
AC
1 ms
256 KB
subtask_1_02.txt
AC
1 ms
256 KB
subtask_1_03.txt
AC
1 ms
256 KB
subtask_1_04.txt
AC
119 ms
384 KB
subtask_1_05.txt
AC
125 ms
384 KB
subtask_1_06.txt
AC
1 ms
256 KB
subtask_1_07.txt
AC
120 ms
384 KB
subtask_1_08.txt
AC
1 ms
256 KB
subtask_1_09.txt
AC
1 ms
256 KB
subtask_1_10.txt
AC
2 ms
256 KB
subtask_1_11.txt
AC
195 ms
384 KB
subtask_1_12.txt
AC
190 ms
384 KB
subtask_1_13.txt
AC
195 ms
384 KB
subtask_1_14.txt
AC
193 ms
384 KB
subtask_1_15.txt
AC
192 ms
384 KB
subtask_1_16.txt
AC
192 ms
384 KB
subtask_1_17.txt
AC
192 ms
384 KB
subtask_1_18.txt
AC
193 ms
384 KB
subtask_1_19.txt
AC
194 ms
384 KB
subtask_1_20.txt
AC
194 ms
384 KB
subtask_1_21.txt
AC
125 ms
384 KB
subtask_1_22.txt
AC
125 ms
384 KB
subtask_1_23.txt
AC
129 ms
384 KB
subtask_1_24.txt
AC
130 ms
384 KB
subtask_1_25.txt
AC
129 ms
384 KB
subtask_1_26.txt
AC
2 ms
256 KB
subtask_1_27.txt
AC
3 ms
256 KB
subtask_1_28.txt
AC
11 ms
256 KB
subtask_1_29.txt
AC
45 ms
384 KB
subtask_1_30.txt
AC
177 ms
384 KB
subtask_1_31.txt
AC
1 ms
256 KB
subtask_1_32.txt
AC
2 ms
256 KB
subtask_1_33.txt
AC
3 ms
256 KB
subtask_1_34.txt
AC
12 ms
256 KB
subtask_1_35.txt
AC
44 ms
384 KB
subtask_1_36.txt
AC
182 ms
384 KB
subtask_1_37.txt
AC
2 ms
256 KB
subtask_1_38.txt
AC
3 ms
256 KB
subtask_1_39.txt
AC
12 ms
256 KB
subtask_1_40.txt
AC
46 ms
256 KB
subtask_1_41.txt
AC
179 ms
384 KB
subtask_1_42.txt
AC
179 ms
384 KB
subtask_1_43.txt
AC
176 ms
384 KB
subtask_1_44.txt
AC
184 ms
384 KB
subtask_1_45.txt
AC
182 ms
384 KB
subtask_1_46.txt
AC
180 ms
384 KB