妹子刚学OI,求助,没过样例

P2482 [SDOI2010] 猪国杀

```cpp void duel(int now,int target){ if(id[target][0]=='Z'&&now==1){ hp[target]--; if(!hp[target]) die(target,now); return ; } bool flag=0; if(tz[target]||tf[target]||target==1) for(int i=now%n+1;i!=now;i=i%n+1){ int x=findcard(i,'J'); if(target==1||tz[target]){ if(id[i][0]=='F'&&flag){ tf[i]=1; flag^=1; card[i][x]='\0'; } else if((id[i][0]=='Z'||i==1)&&!flag){ tz[i]=1;lf[i]=0; flag^=1; card[i][x]='\0'; } } else if(tf[target]){ if(id[i][0]=='F'&&!flag){ tf[i]=1; flag^=1; card[i][x]='\0'; } else if(id[i][0]=='Z'&&flag){ tz[i]=1;lf[i]=0; flag^=1; card[i][x]='\0'; } } } if(flag) return ; while(1){ int x=findcard(now,'K'),y=findcard(target,'K'); if(y==-1){ hp[target]--; if(!hp[target]){ die(target,now); break; } } card[target][y]='\0'; if(x==-1){ hp[now]--; if(!hp[now]){ die(now,target); break; } } card[now][x]='\0'; } } void avoid(int target,int origin){ int x=findcard(target,'D'); if(x==-1){ hp[target]--; if(!hp[target]) die(target,origin); } else card[target][x]='\0'; } void print(){ if(!winner) printf("MP\n"); else printf("FP\n"); for(int i=1;i<=n;i++){ if(isdead[i]){ printf("DEAD\n"); continue; } for(int j=1;j<=top[i];j++) if(card[i][j]!='\0') printf("%c ",card[i][j]); printf("\n"); } /*while(!q.empty()){ printf("%c ",q.front()); q.pop(); }*/ } int check(){ if(isdead[1]){ winner=1; print(); return 1; } if(!cntf){ winner=0; print(); return 0; } return 2; } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%s",id[i]); hp[i]=4; if(id[i][0]=='F') cntf++; for(int j=0;j<4;j++){ top[i]++; int v=top[i]; scanf(" %c",&card[i][v]); } } for(int i=1;i<=m;i++){ char ch; scanf(" %c",&ch); q.push(ch); } int now=0; while(1){ now=now%n+1; if(isdead[now]) continue; getcard(now,2); while(hp[now]<4){ int x=findcard(now,'P'); if(x==-1) break; hp[now]++; card[now][x]='\0'; if(x==top[now]) top[now]--; } while(1){ int x=findcard(now,'N'); if(x==-1) break; invade(now); card[now][x]='\0'; if(x==top[now]) top[now]--; } if(check()<2) break; while(1){ int x=findcard(now,'W'); if(x==-1) break; arrows(now); card[now][x]='\0'; if(x==top[now]) top[now]--; } if(check()<2) break; while(1){ int x=findcard(now,'Z'); if(x==-1) break; crossbow[now]=1; card[now][x]='\0'; } for(int i=now%n+1;i!=now;i=i%n+1){ if(finddis(now,i)==1&&((id[now][0]=='F'&&(tz[i]||i==1))||((id[now][0]=='Z')&&tf[i])||(now==1&&(tf[i]||lf[i])))){ int x=findcard(now,'K'); if(x==-1) break; if(id[now][0]=='F'){ card[now][x]='\0'; tf[now]=1; avoid(i,now); if(crossbow[now]) while(hp[i]){ x=findcard(now,'K'); if(x==-1) break; card[now][x]='\0'; avoid(i,now); } } if(id[now][0]=='Z'){ tz[now]=1;lf[now]=0; card[now][x]='\0'; avoid(i,now); if(crossbow[now]) while(hp[i]){ x=findcard(now,'K'); if(x==-1) break; card[now][x]='\0'; avoid(i,now); } } if(now==1){ card[now][x]='\0'; avoid(i,now); if(crossbow[now]) while(hp[i]){ x=findcard(now,'K'); if(x==-1) break; card[now][x]='\0'; avoid(i,now); } } } } if(check()<2) break; for(int i=now%n+1;i!=now;i++) if(finddis(now,i)==1&&((id[now][0]=='F'&&(tz[i]||i==1))||((id[now][0]=='Z')&&tf[i])||(now==1&&(tf[i]||lf[i])))){ if(id[now][0]=='F') tf[now]=1; if(id[now][0]=='Z'){ tz[now]=1; lf[now]=0; } while(findcard(now,'F')!=-1&&hp[i]){ duel(now,i); if(isdead[now]) break; } if(isdead[now]) break; } if(check()<2) break; } return 0; }
by _gifbmp @ 2019-08-21 10:51:37


波浪代码就很美
by OvOAuto @ 2019-08-21 10:54:14


去你的刚学OI
by FZzzz @ 2019-08-21 10:57:40


~~qndmx~~ ~~qndmz~~ ~~oi没有maze~~
by CodeKnight @ 2019-08-21 11:11:47


刚学OI好评
by ZigZagKmp @ 2019-08-21 11:12:00


信哦,大佬orzorzorz%%%
by nju_zdd @ 2019-08-21 11:12:10


GXOIZZGSTQL
by 览遍千秋 @ 2019-08-21 11:12:24


当代臭恶男青年三连:刚学OI,妹子,萌新求助
by s_ShotღMaki @ 2019-08-21 11:13:20


您好,为什么要强调你是妹子呢?
by Smile_Cindy @ 2019-08-21 11:14:31


这题不是很水的吗(逃
by 森岛帆高 @ 2019-08-21 12:14:41


| 下一页