非常奇怪的 RE
  • 板块学术版
  • 楼主__Octhyccc__
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/9 09:57
  • 上次更新2024/7/9 11:16:13
查看原帖
非常奇怪的 RE
995753
__Octhyccc__楼主2024/7/9 09:57

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;
}
2024/7/9 09:57
加载中...