很早就知道 UOJ454 了。
今天终于决定写。
然后发现通信题的运行调试很麻烦,在各种尝试后终于找到了可以正常运行的方法,而且不需要外部辅助。
把读入写成这样:
1 2 3 4 5
| char read(){ char re=getchar(); for(;re==-1;re=getchar()); return(re); }
|
这样读完就会自动等待对面输出。
然后文操这么写:
1 2 3 4 5 6 7
| system("del B.out"); freopen("A.out","w",stdout); while(access("B.out",0)==-1);
freopen("B.out","r",stdin);
|
1 2 3 4 5 6
| system("del A.out");
freopen("B.out","w",stdout); while(access("A.out",0)==-1); freopen("A.out","r",stdin);
|
需要使用 #include<unistd.h>
头文件。
然后就可以正常运行了。
附UOJ454 AC代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include<iostream> #include<unistd.h> #include<cstdlib> #include<fstream> #include<string> using namespace std; ifstream fin; char read(){ char re=getchar(); for(;re==-1;re=getchar()); return(re-48); } void write(int ch){ putchar(ch+48); fflush(stdout); } int n,m,k=0,te; bool s[2010],need[2010]; char c; int main(){
#ifdef DEBUG system("del B.out"); freopen("A.out","w",stdout); while(access("B.out",0)==-1); freopen("B.out","r",stdin); #endif fin.open("alice.in"); fin>>n>>m; te=(n<<1)/3; for(int i=1;i<=n<<1;++i){ fin>>c; s[i]=c-48; } k=read()<<1;k+=read(); for(int i=1;i<=te;i++){ write(s[i+k*te]); } for(int i=1;i<=te;i++){ if(read()){ write(s[i+(k?0:te)]); } } for(int i=1;i<=te;i++){ if(read()){ write(s[i+(k<2?te<<1:te)]); } } for(int i=te*3+1;i<=n<<1;i++){ write(s[i]); } return(0); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include<iostream> #include<unistd.h> #include<fstream> #include<string> using namespace std; ifstream fin; char read(){ char re=getchar(); for(;re==EOF;re=getchar()); return(re-48); } void write(int ch){ putchar(ch+48); fflush(stdout); } ofstream fout; int n,m,te,a[2010],s[3],k; bool p[2010],ans[2010]; int main(){
#ifdef DEBUG system("del A.out"); freopen("B.out","w",stdout); while(access("A.out",0)==-1); freopen("A.out","r",stdin); #endif fin.open("bob.in"); fout.open("bob.out"); fin>>n>>m; te=(n<<1)/3; for(int i=1;i<=n;++i){ fin>>a[i]; p[a[i]]=1; } for(int i=1;i<=te;i++){ s[0]+=p[i];s[1]+=p[i+te];s[2]+=p[i+(te<<1)]; } k=s[0]>s[1]?0:1; k=s[k]>s[2]?k:2; write(k>>1);write(k&1); for(int i=1;i<=te;i++){ ans[i+k*te]=read(); } for(int i=1;i<=te;i++){ write(p[i+(k?0:te)]); if(p[i+(k?0:te)]){ ans[i+(k?0:te)]=read(); } } for(int i=1;i<=te;i++){ write(p[i+(k<2?te<<1:te)]); if(p[i+(k<2?te<<1:te)]){ ans[i+(k<2?te<<1:te)]=read(); } } for(int i=te*3+1;i<=n<<1;i++){ ans[i]=read(); } for(int i=1;i<=n;i++){ fout<<ans[a[i]]; } return(0); }
|