猪国杀战场记录仪

P2482 [SDOI2010] 猪国杀

```cpp bool wuxiekeji(int x) { for(int y=x%n+1;y!=x;y=y%n+1) { if(over[y])continue; if(shenfen[x]==1&&shenfen[y]==2)continue; if(shenfen[x]==2&&shenfen[y]==2)continue; if(shenfen[x]==3&&shenfen[y]==3)continue; if(shenfen[x]==2&&shenfen[y]==1)continue; for(int i=1;i<=num[y];i++) { if(pai[y][i]!=7)continue; for(int j=i+1;j<=num[y];j++) pai[y][j-1]=pai[y][j]; num[y]--; tiao[y]=1; printf("%d:无懈可击!\n",y); Sleep(1000); return !wuxiekeji(y); } } return 1; } void nanmanruqin(int x) { for(int i=x%n+1;i!=x;i=i%n+1) { if(over[i])continue; printf("南蛮->%d\n",i); Sleep(1000); bool dixiao=0; for(int j=1;j<=num[x];j++) { if(pai[x][j]==7&&tiao[i]&&(shenfen[i]==shenfen[x]||(shenfen[i]^shenfen[x])==3)) { for(int k=j+1;k<=num[x];k++) pai[x][k-1]=pai[x][k]; num[x]--; printf("%d:无懈可击!\n",x); Sleep(1000); tiao[x]=1; dixiao=wuxiekeji(x); } if(dixiao)break; } if(!dixiao) for(int j=x%n+1;j!=x;j=j%n+1) { if(over[j])continue; for(int k=1;k<=num[j];k++) { if(pai[j][k]==7&&tiao[i]&&(shenfen[i]==shenfen[j]||(shenfen[i]^shenfen[j])==3)) { for(int l=k+1;l<=num[j];l++) pai[j][l-1]=pai[j][l]; num[j]--; tiao[j]=1; printf("%d:无懈可击!\n",j); Sleep(1000); dixiao=wuxiekeji(j); } if(dixiao)break; } if(dixiao)break; } if(!dixiao) for(int j=1;j<=num[i];j++) { if(pai[i][j]==2) { for(int k=j+1;k<=num[i];k++) pai[i][k-1]=pai[i][k]; num[i]--; printf("%d:杀!\n",i); Sleep(1000); dixiao=1; break; } } if(!dixiao) { printf("%d:啊!\n",i); Sleep(1000); hp[i]--; last[i]=x; if(i==1&&!tiao[x])lei[x]=1; if(hp[i]>0)continue; for(int j=1;j<=num[i];j++) { if(pai[i][j]==1) { for(int k=j+1;k<=num[i];k++) pai[i][k-1]=pai[i][k]; num[i]--; printf("桃!\n"); Sleep(1000); hp[i]++; break; } } if(hp[i]<=0)die(i); } } } void wanjianqifa(int x) { for(int i=x%n+1;i!=x;i=i%n+1) { if(over[i])continue; printf("万箭->%d\n",i); Sleep(1000); bool dixiao=0; for(int j=1;j<=num[x];j++) { if(pai[x][j]==7&&tiao[i]&&(shenfen[i]==shenfen[x]||(shenfen[i]^shenfen[x])==3)) { for(int k=j+1;k<=num[x];k++) pai[x][k-1]=pai[x][k]; num[x]--; printf("%d:无懈可击!\n",x); Sleep(1000); tiao[x]=1; dixiao=wuxiekeji(x); } if(dixiao)break; } if(!dixiao) for(int j=x%n+1;j!=x;j=j%n+1) { if(over[j])continue; for(int k=1;k<=num[j];k++) { if(pai[j][k]==7&&tiao[i]&&(shenfen[i]==shenfen[j]||(shenfen[i]^shenfen[j])==3)) { for(int l=k+1;l<=num[j];l++) pai[j][l-1]=pai[j][l]; num[j]--; tiao[j]=1; printf("%d:无懈可击!\n",j); Sleep(1000); dixiao=wuxiekeji(j); } if(dixiao)break; } if(dixiao)break; } if(!dixiao) for(int j=1;j<=num[i];j++) { if(pai[i][j]==3) { for(int k=j+1;k<=num[i];k++) pai[i][k-1]=pai[i][k]; num[i]--; printf("%d:闪!\n",i); Sleep(1000); dixiao=1; break; } } if(!dixiao) { printf("%d:啊!\n",i); Sleep(1000); hp[i]--; last[i]=x; if(i==1&&!tiao[x])lei[x]=1; if(hp[i]>0)continue; for(int j=1;j<=num[i];j++) { if(pai[i][j]==1) { for(int k=j+1;k<=num[i];k++) pai[i][k-1]=pai[i][k]; num[i]--; printf("桃!\n"); Sleep(1000); hp[i]++; break; } } if(hp[i]<=0)die(i); } } } void sha(int from,int x) { for(int i=1;i<=num[x];i++) { if(pai[x][i]==3) { printf("%d:闪!\n",x); Sleep(1000); for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; return; } } hp[x]--; printf("%d:啊!\n",x); Sleep(1000); last[x]=from; if(hp[x]>0)return; for(int i=1;i<=num[x];i++) { if(pai[x][i]==1) { hp[x]++; printf("桃!\n"); Sleep(1000); for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; break; } } if(hp[x]<=0)die(x); } void juedou(int x,int y) { if(shenfen[x]==1&&shenfen[y]==2) { hp[y]--; printf("%d:啊!\n",y); Sleep(1000); last[y]=x; if(hp[y]>0)return; for(int i=1;i<=num[y];i++) { if(pai[y][i]==1) { hp[y]++; printf("桃!\n"); Sleep(1000); for(int j=i+1;j<=num[y];j++) pai[y][j-1]=pai[y][j]; num[y]--; break; } } if(hp[y]<=0)die(y); return; } for(int i=x%n+1;i!=x;i=i%n+1) { if(over[i])continue; for(int j=1;j<=num[i];j++) { if(pai[i][j]==7&&tiao[y]&&(shenfen[y]==shenfen[i]||(shenfen[i]^shenfen[y])==3)) { for(int k=j+1;k<=num[i];k++) pai[i][k-1]=pai[i][k]; num[i]--; tiao[i]=1; printf("%d:无懈可击!\n",i); Sleep(1000); if(wuxiekeji(i))return; } } } bool flag=1; while(flag) { flag=0; for(int i=1;i<=num[y];i++) { if(pai[y][i]==2) { for(int j=i+1;j<=num[y];j++) pai[y][j-1]=pai[y][j]; printf("%d:杀!\n",y); Sleep(1000); num[y]--; flag=1; break; } } swap(x,y); } printf("%d:啊!\n",x); Sleep(1000); hp[x]--; last[x]=y; if(hp[x]>0)return; for(int i=1;i<=num[x];i++) { if(pai[x][i]==1) { hp[x]++; printf("桃!\n"); Sleep(1000); for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; break; } } if(hp[x]<=0)die(x); } void work(int x) { pai[x][++num[x]]=get(); pai[x][++num[x]]=get(); Sleep(2000); printf("Begin:%d\n",x); printf("Emmmm....."); Sleep(2000); for(int i=1;i<=num[x];i++) { if(pai[x][i]==1)printf("【桃】"); if(pai[x][i]==2)printf("【杀】"); if(pai[x][i]==3)printf("【闪】"); if(pai[x][i]==4)printf("【决斗】"); if(pai[x][i]==5)printf("【南蛮入侵】"); if(pai[x][i]==6)printf("【万箭齐发】"); if(pai[x][i]==7)printf("【无懈可击】"); if(pai[x][i]==8)printf("【诸葛连弩】"); } printf("\n"); Sleep(1000); for(int j=1;j<=n;j++) { printf("%d:",j); if(shenfen[j]==1)printf("{主公}"); if(shenfen[j]==2)printf("{忠臣}"); if(shenfen[j]==3)printf("{反贼}"); if(tiao[j])printf("(暴露)"); else if(lei[j]&&x==1)printf("(类反)"); else printf(" "); printf("hp:"); for(int k=1;k<=4;k++) { if(k<=hp[j])putchar('*'); else putchar(' '); } if(over[j])printf("DEAD"); else { for(int k=1;k<=num[j];k++) { if(pai[j][k]==1)printf(" 【桃】 "); if(pai[j][k]==2)printf(" 【杀】 "); if(pai[j][k]==3)printf(" 【闪】 "); if(pai[j][k]==4)printf(" 【决斗】 "); if(pai[j][k]==5)printf("【南蛮入侵】"); if(pai[j][k]==6)printf("【万箭齐发】"); if(pai[j][k]==7)printf("【无懈可击】"); if(pai[j][k]==8)printf("【诸葛连弩】"); } } printf("\n"); } Sleep(2000); bool pos_sha=1; for(int i=1;i<=num[x];i++) { if(pai[x][i]==1&&hp[x]!=4) { hp[x]++; pai[x][i]=0; for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("桃!\n"); Sleep(1000); i=0; continue; } if(pai[x][i]==2&&pos_sha) { int y=x%n+1; while(over[y])y=y%n+1; if(shenfen[x]==1) { if(lei[y]&&!tiao[y]||shenfen[y]==3&&tiao[y]) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("杀!->%d\n",y); Sleep(1000); i=0; sha(x,y); if(!z[x])pos_sha=0; } } else if(shenfen[x]==2) { if(tiao[y]&&shenfen[y]==3) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; tiao[x]=1; Sleep(1000); printf("杀!->%d\n",y); Sleep(1000); i=0; sha(x,y); if(!z[x])pos_sha=0; } } else { if(tiao[y]&&shenfen[y]==2||shenfen[y]==1) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; tiao[x]=1; Sleep(1000); printf("杀!->%d\n",y); Sleep(1000); i=0; sha(x,y); if(!z[x])pos_sha=0; } } } if(pai[x][i]==4) { for(int y=x%n+1;y!=x;y=y%n+1) { if(over[y])continue; if(shenfen[x]==1) { if(lei[y]&&!tiao[y]||shenfen[y]==3&&tiao[y]) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("决斗!->%d\n",y); Sleep(1000); i=0; juedou(x,y); break; } } else if(shenfen[x]==2) { if(tiao[y]&&shenfen[y]==3) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; tiao[x]=1; Sleep(1000); printf("决斗!->%d\n",y); Sleep(1000); i=0; juedou(x,y); break; } } else { if(shenfen[y]==1) { for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; tiao[x]=1; Sleep(1000); printf("决斗!->%d\n",y); Sleep(1000); i=0; juedou(x,y); break; } } } if(over[x])break; } if(pai[x][i]==5) { pai[x][i]=0; for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("南蛮入侵!\n"); Sleep(1000); i=0; nanmanruqin(x); continue; } if(pai[x][i]==6) { pai[x][i]=0; for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("万箭齐发!\n"); Sleep(1000); i=0; wanjianqifa(x); continue; } if(pai[x][i]==8) { pai[x][i]=0; for(int j=i+1;j<=num[x];j++) pai[x][j-1]=pai[x][j]; num[x]--; Sleep(1000); printf("诸葛连弩!\n"); Sleep(1000); i=0; z[x]=1; pos_sha=1; } } } int main() { scanf("%d%d",&n,&m); tiao[1]=1; for(int i=1;i<=n;i++) { hp[i]=4; shenfen[i]=getshenfen(); pai[i][++num[i]]=get2(); pai[i][++num[i]]=get2(); pai[i][++num[i]]=get2(); pai[i][++num[i]]=get2(); } for(int i=1;i<=m;i++) paidui[i]=get2(); now=1; for(int i=1;;i=i%n+1) { if(over[i])continue; work(i); } return 0; } ```
by wucstdio @ 2018-11-06 20:32:27


%%%
by sky_fackr @ 2018-11-06 20:34:03


@[wucstdio](/space/show?uid=54214) %%%wqy神仙
by Gypsophila @ 2018-11-06 20:35:14


%%%
by wwz20050323 @ 2018-11-06 20:36:18


%%%
by Kevin_Wa @ 2018-11-06 20:37:13


%%%
by Ally_unstoppable @ 2018-11-06 20:38:05


%%%%
by 镉八君 @ 2018-11-06 20:39:38


%%%
by diltraser @ 2018-11-06 20:41:14


%%%
by 一座城·守一人 @ 2018-11-06 20:42:18


@[ACの666](/space/show?uid=54745) %%%初一神仙
by wucstdio @ 2018-11-06 20:45:41


| 下一页