我的错!!!这种水题!!!我居然!!!什么都不说了!!!!!!
总结下,今天死的特别难看,我还真真切切坑队友了。吸取教训。
第一:比赛的时候状态还是很重要的,刚开始的时候一定要找到合适的题,大致能够敲出来的,一定要找,不然等到后面再敲水题状态很受影响。今天就是这样。
第二:关于题目的。平常看题比较马虎,自己做练习的时候看不懂就直接搜题解了,或者平常直接问队友。这样非常不好!!!!这道题就是,第二个样例都没看,就直接做了,没有判重。。。。就算样例懒得过一遍,但是起码输入也要看一看的嘛!!害得我赛后这种水题都不好意思交了!!!
第三:交的时候出现了越界。后来发现是有数组开小了。自己居然懒得去题目中找。所以平常一定要注意数据范围!!!
好了。。。。。我很心累。。。。
对了!!还跑得很慢!!!你妹啊!!好丢脸!!!……
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; #define maxn 100 #define maxx 3000 int chx[8]={1,1,1,0,0,-1,-1,-1}; int chy[8]={0,-1,1,1,-1,0,1,-1}; int n,m,f,kk; int t[maxx],x[maxx],y[maxx],tt[maxx],que[maxx]; struct node { int map[maxn][maxn]; }a,b; void init() { int i,j,k; for(i=0;i<n;i++) { for(j=0;j<m;j++) { int tmp=0; b.map[i][j]=a.map[i][j]; for(k=0;k<8;k++) { if(i+chx[k]>=0&&i+chx[k]<n&&j+chy[k]>=0&&j+chy[k]<m) if(a.map[i+chx[k]][j+chy[k]]==1) tmp++; } if(a.map[i][j]==1) { if(tmp<2||tmp>3) b.map[i][j]=0; } if(a.map[i][j]==0) { if(tmp==3) b.map[i][j]=1; } } } a=b; } int cmp(int a,int b) { return t[a]<t[b]; } int main() { int Q; scanf("%d",&Q); while(Q--) { scanf("%d%d%d%d",&n,&m,&f,&kk); memset(tt,0,sizeof(tt)); memset(que,0,sizeof(que)); int i,j,k; char s[maxn]; for(i=0;i<n;i++) { scanf("%s",s); for(j=0;j<m;j++) a.map[i][j]=s[j]-'0'; } for(i=0;i<kk;i++) { scanf("%d%d%d",&t[i],&x[i],&y[i]); x[i]--;y[i]--; // que[i]=i; que[i]=i; } int top=0; sort(que,que+kk,cmp); for(i=1;i<=f;i++) { init(); while(i==t[que[top]]&&top<kk) {a.map[x[que[top]]][y[que[top]]]=2;top++;} // put(); } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(a.map[i][j]==2) printf("X"); else printf("%d",a.map[i][j]); } printf("\n"); } } return 0; }