Rt,在写代码的时候由于输出量较大,我开了文件读写,然后 RE 了,但不开的话就会正常运行(洛谷上 WA),这怎么办?
题目 P7610,不指望 dl 们给我指出错误,但是能告诉我是怎么 RE 的吗?
#include<bits/stdc++.h>
//#define al Alice
//#define bo Bob
#define END 23333
using namespace std;
int t,n,leftA,leftB;
bool can;
struct S{int beginx,endx,ml;};
struct SH{int beginx,endx,ml,idx;};
struct JN{int ID,JNBH;};
vector<S>a4,a6,a7,a8,a9,a10,b4,b6,b7,b8,b9,b10;
vector<SH>PGA,PGB;
vector<JN>JNA,JNB;
struct player{
bool zt;
int maxhp,hp;
int maxmp,mp;
int attack,pattack;
int def,pdef;
int tf,x,y;
int jn=-1,x2,y2,z2;
vector<int>p;
}Alice[10],Bob[10];
int js_A(int pid,string s){
if(s=="Alice")return max(Alice[pid].attack+Alice[pid].pattack,1);
else return max(Bob[pid].attack+Bob[pid].pattack,1);
}
int js_D(int pid,string s){
if(s=="Alice")return max(0,Alice[pid].def+Alice[pid].pdef);
else return max(0,Bob[pid].def+Bob[pid].pdef);
}
void js(string lose){//program will return.
if(!can){
printf("%d\n",t);
if(lose=="Alice"){
puts("Bob");
for(int i=0;i<n;i++)printf("%d ",Bob[i].hp);
}
else{
puts("Alice");
for(int i=0;i<n;i++)printf("%d ",Alice[i].hp);
}
can=1;
}
exit(0);
}
void dead(int k,string s){
if(s=="Alice"){
if(Alice[k].zt){
leftA--;
Alice[k].zt=0,Alice[k].hp=0,Alice[k].mp=0;
if(leftA==0)js("Alice");
for(int i=0;i<n;i++){
for(int j=0;j<Bob[i].p.size();j++){
if(Bob[i].p[j]==k){
Bob[i].p.erase(Bob[i].p.begin()+j);
break;
}
}
}
}
}
else{
if(Bob[k].zt){
leftB--;
Bob[k].zt=0,Bob[k].hp=0,Bob[k].mp=0;
if(leftB==0)js("Bob");
for(int i=0;i<n;i++){
for(int j=0;j<Alice[i].p.size();j++){
if(Alice[i].p[j]==k){
Alice[i].p.erase(Alice[i].p.begin()+j);
break;
}
}
}
}
}
return;
}
void add_hp(string side,int id,int add){
if(side=="Alice"){
if(Alice[id].zt){
Alice[id].hp=min(Alice[id].hp+add,Alice[id].maxhp);
if(Alice[id].hp<=0)dead(id,"Alice");
}
}
else{
if(Bob[id].zt){
Bob[id].hp=min(Bob[id].hp+add,Bob[id].maxhp);
if(Bob[id].hp<=0)dead(id,"Bob");
}
}
return;
}
void add_mp(string side,int id,int add){
if(side=="Alice")Alice[id].mp=max(0,min(Alice[id].mp+add,Alice[id].maxmp));
else Bob[id].mp=max(0,min(Bob[id].mp+add,Bob[id].maxmp));
return;
}
void jn_0(){return;}
void jn_1(string x,int id){
if(x=="Alice"){
for(int i=0;i<n;i++){
if(Alice[i].zt){
add_hp("Alice",i,-max(Bob[id].x2-js_D(i,"Alice"),0));
add_mp("Alice",i,1);
add_mp("Alice",i,-(Alice[i].mp/10));
}
}
}
else{
for(int i=0;i<n;i++){
if(Bob[i].zt){
add_hp("Bob",i,-max(Alice[id].x2-js_D(i,"Bob"),0));
add_mp("Bob",i,1);
add_mp("Bob",i,-(Bob[i].mp/10));
}
}
}
return;
}
void jn_2(string s,int id){
int zssh=0;
if(s=="Alice"){
zssh=js_A(id,"Bob");
for(int i=0;i<n;i++){
if(Alice[i].zt){
if(Alice[i].tf!=1)add_hp("Alice",i,-zssh);
else add_hp("Alice",i,-zssh+zssh/2);
add_mp("Alice",i,1);
}
}
}
else{
zssh=js_A(id,"Alice");
for(int i=0;i<n;i++){
if(Bob[i].zt){
if(Bob[i].tf!=1)add_hp("Bob",i,-zssh);
else add_hp("Bob",i,-zssh+zssh/2);
add_mp("Bob",i,1);
}
}
}
return;
}
void jn_3(string s,int id){
if(s=="Alice"){
for(int i=0;i<n;i++){
if(Alice[i].zt){
int sh=min(Alice[i].maxhp/10,(Bob[id].x2)*(js_A(id,"Bob")));
add_hp("Alice",i,-max(0,sh-js_D(i,"Alice")));
add_mp("Alice",i,1);
}
}
}
else{
for(int i=0;i<n;i++){
if(Bob[i].zt){
int sh=min(Bob[i].maxhp/10,(Alice[id].x2)*(js_A(id,"Alice")));
add_hp("Bob",i,-max(0,sh-js_D(i,"Bob")));
add_mp("Bob",i,1);
}
}
}
return;
}
void jn_4(string s,int id){
S p2;
if(s=="Alice"){
p2.beginx=t,p2.endx=t+Alice[id].x2-1;if(p2.endx>END)p2.endx=END;
p2.ml=Alice[id].y2;a4.push_back(p2);
}
else{
p2.beginx=t,p2.endx=t+Bob[id].x2-1;if(p2.endx>END)p2.endx=END;
p2.ml=Bob[id].y2;b4.push_back(p2);
}
return;
}
void jn_5(string s,int id){
int zssh=0;
if(s=="Alice"){
int mb=Bob[id].p[0],zssh=js_A(id,"Bob");
Alice[mb].pdef-=Bob[id].x2;
if(Alice[mb].tf!=1)add_hp("Alice",mb,-zssh);
else add_hp("Alice",mb,-zssh+zssh/2);
add_mp("Alice",mb,1);
}
else{
int mb=Alice[id].p[0],zssh=js_A(id,"Alice");
Bob[mb].pdef-=Alice[id].x2;
if(Bob[mb].tf!=1)add_hp("Bob",mb,-zssh);
else add_hp("Bob",mb,-zssh+zssh/2);
add_mp("Bob",mb,1);
}
return;
}
void jn_6(string s,int id){
S p2;
if(s=="Alice"){
int mb=Bob[id].p[0];
p2.beginx=t,p2.endx=t+Bob[id].x2-1;
if(p2.endx>END)p2.endx=END;
p2.ml=Bob[id].y2;a6.push_back(p2);
int zssh=js_A(id,"Bob");
if(Alice[mb].tf==1)add_hp("Alice",mb,-zssh+zssh/2);
else add_hp("Alice",mb,-zssh);
add_mp("Alice",mb,1);
for(int i=0;i<n;i++){
if(Alice[i].zt)Alice[i].pattack-=Bob[id].y2;
}
}
else{
int mb=Alice[id].p[0];
p2.beginx=t,p2.endx=t+Alice[id].x2-1;
if(p2.endx>END)p2.endx=END;
p2.ml=Alice[id].y2;b6.push_back(p2);
int zssh=js_A(id,"Alice");
if(Bob[mb].tf==1)add_hp("Bob",mb,-zssh+zssh/2);
else add_hp("Bob",mb,-zssh);
add_mp("Bob",mb,1);
for(int i=0;i<n;i++){
if(Bob[i].zt)Bob[i].pattack-=Alice[id].y2;
}
}
return;
}
void jn_7(string s,int id){
int _min=INT_MAX,ip=0;S p;
if(s=="Alice"){
for(int i=0;i<n;i++){
if(Alice[i].hp<_min && Alice[i].zt)_min=Alice[i].hp,ip=i;
}
add_hp("Alice",ip,Alice[id].z2);
p.beginx=t,p.endx=t+Alice[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Alice[id].y2;a7.push_back(p);
for(int i=0;i<n;i++){
if(Alice[i].zt)Alice[i].pattack+=Alice[id].y2;
}
}
else{
for(int i=0;i<n;i++){
if(Bob[i].hp<_min && Bob[i].zt)_min=Bob[i].hp,ip=i;
}
add_hp("Bob",ip,Bob[id].z2);
p.beginx=t,p.endx=t+Bob[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Bob[id].y2;b7.push_back(p);
for(int i=0;i<n;i++){
if(Bob[i].zt)Bob[i].pattack+=Bob[id].y2;
}
}
return;
}
void jn_8(string s,int id){
S p;
if(s=="Alice"){
int sh=js_A(id,"Bob");
for(int i=0;i<n;i++){
if(Alice[i].zt){
add_hp("Alice",i,-max(sh-js_D(i,"Alice"),0));
add_mp("Alice",i,1);
}
}
p.beginx=t,p.endx=t+Bob[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Bob[id].y2;a8.push_back(p);
for(int i=0;i<n;i++){
if(Alice[i].zt)Alice[i].pdef-=Bob[id].y2;
}
}
else{
int sh=js_A(id,"Alice");
for(int i=0;i<n;i++){
if(Bob[i].zt){
add_hp("Bob",i,-max(sh-js_D(i,"Bob"),0));
add_mp("Bob",i,1);
}
}
p.beginx=t,p.endx=t+Alice[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Alice[id].y2;b8.push_back(p);
for(int i=0;i<n;i++){
if(Bob[i].zt)Bob[i].pdef-=Alice[id].y2;
}
}
return;
}
void jn_9(string s,int id){
S p;
if(s=="Alice"){
for(int i=0;i<n;i++){
if(Alice[i].zt)add_hp("Alice",i,Alice[id].z2);
}
p.beginx=t,p.endx=t+Alice[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Alice[id].y2;a9.push_back(p);
for(int i=0;i<n;i++){
if(Alice[i].zt)Alice[i].pdef+=Alice[id].y2;
}
}
else{
for(int i=0;i<n;i++){
if(Bob[i].zt)add_hp("Bob",i,Bob[id].z2);
}
p.beginx=t,p.endx=t+Bob[id].x2-1;
if(p.endx>END)p.endx=END;
p.ml=Bob[id].y2;b9.push_back(p);
for(int i=0;i<n;i++){
if(Bob[i].zt)Bob[i].pdef+=Bob[id].y2;
}
}
return;
}
void jn_10(int id,string s){
S p;
if(s=="Alice"){
for(int i=0;i<n;i++){
if(Alice[i].zt){
Alice[i].attack*=2,Alice[i].def*=2;
Alice[i].hp=max(Alice[i].hp,Alice[i].maxhp/2);
Alice[i].mp=max(Alice[i].mp,Alice[i].maxmp/2);
}
}
p.beginx=t,p.endx=t+Alice[id].x2-1;if(p.endx>END)p.endx=END;
a10.push_back(p);
}
else{
for(int i=0;i<n;i++){
if(Bob[i].zt){
Bob[i].attack*=2,Bob[i].def*=2;
Bob[i].hp=max(Bob[i].hp,Bob[i].maxhp/2);
Bob[i].mp=max(Bob[i].mp,Bob[i].maxmp/2);
}
}
p.beginx=t,p.endx=t+Bob[id].x2-1;if(p.endx>END)p.endx=END;
b10.push_back(p);
}
for(int i=0;i<n;i++){
if(Alice[i].jn==10 && Alice[i].zt){
Alice[i].jn=0,Alice[i].x2=0;
}
if(Bob[i].jn==10 && Bob[i].zt){
Bob[i].jn=0,Bob[i].x2=0;
}
}
return;
}
void jn(string s,int id){
if(s=="Alice"){
//
cout<<Alice[id].jn<<" ";
//
if(Alice[id].jn==0)jn_0();
else if(Alice[id].jn==1)jn_1("Bob",id);
else if(Alice[id].jn==2)jn_2("Bob",id);
else if(Alice[id].jn==3)jn_3("Bob",id);
else if(Alice[id].jn==4)jn_4("Alice",id);
else if(Alice[id].jn==5)jn_5("Bob",id);
else if(Alice[id].jn==6)jn_6("Bob",id);
else if(Alice[id].jn==7)jn_7("Alice",id);
else if(Alice[id].jn==8)jn_8("Bob",id);
else if(Alice[id].jn==9)jn_9("Alice",id);
else if(Alice[id].jn==10)jn_10(id,"Alice");
}
else{
//
cout<<Bob[id].jn<<" ";
//
if(Bob[id].jn==0)jn_0();
else if(Bob[id].jn==1)jn_1("Alice",id);
else if(Bob[id].jn==2)jn_2("Alice",id);
else if(Bob[id].jn==3)jn_3("Alice",id);
else if(Bob[id].jn==4)jn_4("Bob",id);
else if(Bob[id].jn==5)jn_5("Alice",id);
else if(Bob[id].jn==6)jn_6("Alice",id);
else if(Bob[id].jn==7)jn_7("Bob",id);
else if(Bob[id].jn==8)jn_8("Alice",id);
else if(Bob[id].jn==9)jn_9("Bob",id);
else if(Bob[id].jn==10)jn_10(id,"Bob");
}
return;
}
int js_sh(int v,string s){
int sh=0,zszh=0;sh=js_A(v,s);
if(s=="Alice"){
if(Alice[v].tf==2)zszh=Alice[v].x;
if(Alice[v].tf==4){zszh=sh;sh=0;}
if(Bob[Alice[v].p[0]].tf==1)return max(sh-js_D(Alice[v].p[0],"Bob"),0)+zszh-zszh/2;
else return max(sh-js_D(Alice[v].p[0],"Bob"),0)+zszh;
}
else{
if(Bob[v].tf==2)zszh=Bob[v].x;
if(Bob[v].tf==4){zszh=sh;sh=0;}
if(Alice[Bob[v].p[0]].tf==1)return max(sh-js_D(Bob[v].p[0],"Alice"),0)+zszh-zszh/2;
else return max(sh-js_D(Bob[v].p[0],"Alice"),0)+zszh;
}
}
bool cmp(SH x,SH y){return x.ml!=y.ml?x.ml>y.ml:x.idx>y.idx;}
bool cmp2(JN x,JN y){return x.JNBH!=y.JNBH?x.JNBH>y.JNBH:x.ID>y.ID;}
void start_1(){
++t;SH p;JN A;
int mac=0,sh=0;
for(int i=0;i<n;i++){
if(Alice[i].mp==Alice[i].maxmp && Alice[i].zt){
A.ID=i,A.JNBH=Alice[i].jn;
JNA.push_back(A);
}
}
if(JNA.size()!=0){
sort(JNA.begin(),JNA.end(),cmp2);
int ks=JNA[0].ID;
Alice[ks].mp=0;
jn("Alice",ks);
if(Alice[ks].tf==5)add_mp("Alice",ks,Alice[ks].y);
add_mp("Alice",ks,1);
JNA.clear();
return;
}
for(int i=0;i<n;i++){
if(Bob[Alice[i].p[0]].hp>mac && Alice[i].zt)mac=Bob[Alice[i].p[0]].hp;
}
for(int i=0;i<n;i++){
if(mac==Bob[Alice[i].p[0]].hp && Alice[i].zt){
int f=js_sh(i,"Alice");
p.ml=f,p.idx=i,p.beginx=0,p.endx=0;
PGA.push_back(p);
}
}
sort(PGA.begin(),PGA.end(),cmp);
int M=PGA[0].idx;
add_hp("Bob",Alice[M].p[0],-PGA[0].ml);
add_mp("Bob",Alice[M].p[0],1);
if(Alice[M].tf==5){
add_hp("Alice",M,Alice[M].x);
}
add_mp("Alice",M,1);
PGA.clear();
return;
}
void start_2(){
for(int i=0;i<n;i++){
if(Alice[i].zt){
if(Alice[i].tf==3){
add_hp("Alice",i,Alice[i].x);
add_mp("Alice",i,Alice[i].y);
}
add_mp("Alice",i,1);
if(a10.size())add_mp("Alice",i,1);
for(int j=0;j<a4.size();j++)add_mp("Alice",i,a4[j].ml);
}
}
return;
}
void start_3(){
int mac=0;JN B;SH p;
for(int i=0;i<n;i++){
if(Bob[i].mp==Bob[i].maxmp && Bob[i].zt){
B.ID=i,B.JNBH=Bob[i].jn;
JNB.push_back(B);
}
}
if(JNB.size()!=0){
sort(JNB.begin(),JNB.end(),cmp2);
int __ks=JNB[0].ID;
Bob[__ks].mp=0;
jn("Bob",__ks);
if(Bob[__ks].tf==5)add_mp("Bob",__ks,Bob[__ks].y);
add_mp("Bob",__ks,1);
JNB.clear();
return;
}
for(int i=0;i<n;i++){
if(Alice[Bob[i].p[0]].hp>mac && Bob[i].zt)mac=Alice[Bob[i].p[0]].hp;
}
for(int i=0;i<n;i++){
if(mac==Alice[Bob[i].p[0]].hp && Bob[i].zt){
p.ml=js_sh(i,"Bob"),p.beginx=0,p.endx=0,p.idx=i;
PGB.push_back(p);
}
}
sort(PGB.begin(),PGB.end(),cmp);
int ks=PGB[0].idx;
add_hp("Alice",Bob[ks].p[0],-PGB[0].ml);
add_mp("Alice",Bob[ks].p[0],1);
if(Bob[ks].tf==5){
add_hp("Bob",ks,Bob[ks].x);
}
add_mp("Bob",ks,1);
PGB.clear();
return;
}
void start_4(){
for(int i=0;i<n;i++){
if(Bob[i].zt){
if(Bob[i].tf==3){
add_hp("Bob",i,Bob[i].x);
add_mp("Bob",i,Bob[i].y);
}
add_mp("Bob",i,1);
if(b10.size())add_mp("Bob",i,1);
for(int j=0;j<b4.size();j++)add_mp("Bob",i,b4[j].ml);
}
}
return;
}
void start_5(){
for(int i=0;i<a4.size();i++){
if(a4[i].endx==t)a4.erase(a4.begin()+i);
}
for(int i=0;i<b4.size();i++){
if(b4[i].endx==t)b4.erase(b4.begin()+i);
}
for(int i=0;i<a6.size();i++){
if(a6[i].endx==t){
for(int j=0;j<n;j++){
if(Alice[j].zt)Alice[j].pattack+=a6[i].ml;
}
a6.erase(a6.begin()+i);
}
}
for(int i=0;i<b6.size();i++){
if(b6[i].endx==t){
for(int j=0;j<n;j++){
if(Bob[j].zt)Bob[j].pattack+=b6[i].ml;
}
b6.erase(b6.begin()+i);
}
}
for(int i=0;i<a7.size();i++){
if(a7[i].endx==t){
for(int j=0;j<n;j++){
if(Alice[j].zt)Alice[j].pattack-=a7[i].ml;
}
a7.erase(a7.begin()+i);
}
}
for(int i=0;i<b7.size();i++){
if(b7[i].endx==t){
for(int j=0;j<n;j++){
if(Bob[j].zt)Bob[j].pattack-=b7[i].ml;
}
b7.erase(b7.begin()+i);
}
}
for(int i=0;i<a8.size();i++){
if(a8[i].endx==t){
for(int j=0;j<n;j++){
if(Alice[j].zt)Alice[j].pdef+=a8[i].ml;
}
a8.erase(a8.begin()+i);
}
}
for(int i=0;i<b8.size();i++){
if(b8[i].endx==t){
for(int j=0;j<n;j++){
if(Bob[j].zt)Bob[j].pdef+=b8[i].ml;
}
b8.erase(b8.begin()+i);
}
}
for(int i=0;i<a9.size();i++){
if(a9[i].endx==t){
for(int j=0;j<n;j++){
if(Alice[j].zt)Alice[j].pdef-=a9[i].ml;
}
a9.erase(a9.begin()+i);
}
}
for(int i=0;i<b9.size();i++){
if(b9[i].endx==t){
for(int j=0;j<n;j++){
if(Bob[j].zt)Bob[j].pdef-=b9[i].ml;
}
b9.erase(b9.begin()+i);
}
}
if(a10.size()){
if(a10[0].endx==t){
a10.clear();
for(int j=0;j<n;j++){
if(Bob[j].zt){
js("Alice");return;
}
}
}
}
if(b10.size()){
if(b10[0].endx==t){
b10.clear();
for(int j=0;j<n;j++){
if(Alice[j].zt){
js("Bob");return;
}
}
}
}
return;
}
int main(){
freopen("s.in","r",stdin);
freopen("x.out","w",stdout);
scanf("%d",&n);
leftA=n,leftB=n;
for(int i=0;i<n;i++){
scanf("%d%d%d%d",&Alice[i].maxhp,&Alice[i].maxmp,&Alice[i].attack,&Alice[i].def);
Alice[i].p.clear();
for(int j=0;j<n;j++){
scanf("%d",&t);
Alice[i].p.push_back(t-1);
}
scanf("%d%d%d",&Alice[i].tf,&Alice[i].x,&Alice[i].y);
scanf("%d%d%d%d",&Alice[i].jn,&Alice[i].x2,&Alice[i].y2,&Alice[i].z2);
Alice[i].zt=1;
Alice[i].hp=Alice[i].maxhp;
}
for(int i=0;i<n;i++){
scanf("%d%d%d%d",&Bob[i].maxhp,&Bob[i].maxmp,&Bob[i].attack,&Bob[i].def);
Bob[i].p.clear();
for(int j=0;j<n;j++){
scanf("%d",&t);
Bob[i].p.push_back(t-1);
}
scanf("%d%d%d",&Bob[i].tf,&Bob[i].x,&Bob[i].y);
scanf("%d%d%d%d",&Bob[i].jn,&Bob[i].x2,&Bob[i].y2,&Bob[i].z2);
Bob[i].zt=1;
Bob[i].hp=Bob[i].maxhp;
}
t=0;
while(!can){
start_1();if(can)break;
start_2();if(can)break;
start_3();if(can)break;
start_4();if(can)break;
start_5();if(can)break;
}
return 0;
}