0分求助
查看原帖
0分求助
1149743
Liam_zhaoqiang楼主2024/5/30 09:30
#include<bits/stdc++.h>
using namespace std;
/*
HP,hp:zui_da_xue_liang  xue_liang
Mp,mp:zui_da_neng_liang  neng_liang
atk,uatk:gong_ji  gong_ji_zeng_yi
def,udef:fang_yu  fang_yu_zeng_yi
A=max(atk+uatk,1),D=max(def+udef,0)
*/
struct js{//jue_se
	int HP=0,MP=0,hp=0,mp=0,atk=0,uatk=0,def=0,udef=0,id=0,first=0;
	vector<pair<int,bool> > p;
	int tf=0,jn=0;
	int tf_x=0,tf_y=0;
	int jn_x=0,jn_y=0,jn_z=0;
	bool die=0,play=0;//0:Alice,1:Bob
}alice[12],bob[12];
int go=0,anum=0,bnum=0,Round=1,n,uATK[24000][2],uDEF[24000][2],uMP[24000][2],puATK[24000][2],puDEF[24000][2],u_jn10_play=-1,jn10oR=0;//0:Alice,1:Bob
void ifwin(){
	if (anum==0 && bnum==0){
		cout<<"qwq"<<endl;
		go=1;
		return ;
	}else if (anum!=0 && bnum==0){
		cout<<Round<<endl<<"Alice"<<endl;
		for (int i=1;i<=n;++i){
			cout<<max(alice[i].hp,0)<<" ";
		}
		go=1;
		return ;
	}else if (anum==0 && bnum!=0){
		cout<<Round<<endl<<"Bob"<<endl;
		for (int i=1;i<=n;++i){
			cout<<max(bob[i].hp,0)<<" ";
		}
		go=1;
		return ;
	}else{
		return ;
	}
	return ;
}
void ifdie(js &a){
	if (a.hp<=0){
		a.die=1;
		a.hp=0;
		if (!a.play){
			anum-=1;
			for (int i=1;i<=n;++i){
				for (int j=0;j<bob[i].p.size();++j){
					if (bob[i].p[j].first==a.id){
						bob[i].p[j].second=1;
					}
				}
			}
		}else{
			bnum-=1;
			for (int i=1;i<=n;++i){
				for (int j=0;j<alice[i].p.size();++j){
					if (alice[i].p[j].first==a.id){
						alice[i].p[j].second=1;
					}
				}
			}
		}
	}
	ifwin();
	return ;
}
void hurt(js &a,int atk,int tatk){
	if (a.mp<a.MP){
		a.mp+=1;
	}
	if (a.tf==1){
		a.hp-=max(atk-max(a.def+a.udef,0),0)+tatk-tatk/2;
	}else{
		a.hp-=max(atk-max(a.def+a.udef,0),0)+tatk;
	}
	ifdie(a);
	return ;
}
int hurt_cmp(js &a){
	int jshurt=max(a.atk+a.uatk,1);
	if (!a.play){
		js fir=bob[a.first];
		if (a.tf==2){
			if (fir.tf==1){
				return max(jshurt-max(fir.def+fir.udef,0),0)+a.tf_x-floor(a.tf_x*1.0/2);
			}else{
				return max(jshurt-max(fir.def+fir.udef,0),0)+a.tf_x;
			}
		}else if (a.tf==4){
			if (fir.tf==1){
				return jshurt-floor(jshurt*1.0/2);
			}else{
				return jshurt;
			}
		}else{
			return jshurt;
		}
	}else{
		js fir=alice[a.first];
		if (a.tf==2){
			if (fir.tf==1){
				return max(jshurt-max(fir.def+fir.udef,0),0)+a.tf_x-floor(a.tf_x*1.0/2);
			}else{
				return max(jshurt-max(fir.def+fir.udef,0),0)+a.tf_x;
			}
		}else if (a.tf==4){
			if (fir.tf==1){
				return jshurt-floor(jshurt*1.0/2);
			}else{
				return jshurt;
			}
		}else{
			return jshurt;
		}
	}
	return 0;
}
void find_js(js &a){
	if (!a.play){
		for (int i=0;i<alice[a.id].p.size();++i){
			if (!alice[a.id].p[i].second){
				alice[a.id].first=alice[a.id].p[i].first;
                return ;
			}
		}
	}else{
		for (int i=0;i<bob[a.id].p.size();++i){
			if (!bob[a.id].p[i].second){
				bob[a.id].first=bob[a.id].p[i].first;
                return ;
			}
		}
	}
}
void A_pg(js &a){
	int jshurt=max(a.atk+a.uatk,1);
	if (a.tf==2){
		hurt(bob[a.first],jshurt,a.tf_x);
	}else if (a.tf==4){
		hurt(bob[a.first],0,jshurt);
	}else{
		hurt(bob[a.first],jshurt,0);
	}
}
void B_pg(js &a){
	int jshurt=max(a.atk+a.uatk,1);
	if (a.tf==2){
		hurt(alice[a.first],jshurt,a.tf_x);
	}else if (a.tf==4){
		hurt(alice[a.first],0,jshurt);
	}else{
		hurt(alice[a.first],jshurt,0);
	}
}
void Ause_jn(js &a){
	int jshurt=max(a.atk+a.uatk,1);
	if (a.jn==0){
		return ;
	}else if (a.jn==1){
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				hurt(bob[i],a.jn_x,0);
				if (go){
					return ;
				}
                bob[i].mp=bob[i].mp-bob[i].MP*1.0/10;
			}
		}
	}else if (a.jn==2){
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				hurt(bob[i],0,jshurt);
				if (go){
					return ;
				}
			}
		}
	}else if (a.jn==3){
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				hurt(bob[i],min(floor(bob[i].HP*1.0/10),a.jn_x*jshurt*1.0),0);
				if (go){
					return ;
				}
			}
		}
	}else if (a.jn==4){
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uMP[i][0]+=a.jn_y;
		}
	}else if (a.jn==5){
		bob[a.first].udef-=a.jn_x;
		hurt(bob[a.first],0,jshurt);
		if (go){
			return ;
		}
	}else if (a.jn==6){
		hurt(bob[a.first],0,jshurt);
		if (go){
			return ;
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uATK[i][1]-=a.jn_y;
		}
	}else if (a.jn==7){
		js mhjs;
		mhjs.HP=INT_MAX-1;
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				if (alice[i].hp<mhjs.hp){
					mhjs=alice[i];
				}else if (alice[i].hp==mhjs.hp && i<mhjs.id){
					mhjs=alice[i];
				}
			}
		}
		alice[mhjs.id].hp+=a.jn_z;
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uATK[i][0]+=a.jn_y;
		}
	}else if (a.jn==8){
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				hurt(bob[i],jshurt,0);
				if (go){
					return ;
				}
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uDEF[i][1]-=a.jn_y;
		}
	}else if (a.jn==9){
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				alice[i].hp+=a.jn_z;
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uDEF[i][0]+=a.jn_y;
		}
	}else{
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				alice[i].atk*=2;
				alice[i].def*=2;
				alice[i].hp=max(floor(alice[i].HP*1.0/2),alice[i].hp*1.0);
				alice[i].mp=max(floor(alice[i].MP*1.0/2),alice[i].mp*1.0);
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uMP[i][0]+=1;
		}
		for (int i=1;i<=n;++i){
			if (!alice[i].die && alice[i].jn==10){
				alice[i].jn=0;
			}
			if (!bob[i].die && bob[i].jn==10){
				bob[i].jn=0;
			}
		}
		u_jn10_play=0;
		jn10oR=Round+a.jn_x-1;
	}
}
void Buse_jn(js &a){
	int jshurt=max(a.atk+a.uatk,1);
	if (a.jn==0){
		return ;
	}else if (a.jn==1){
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				hurt(alice[i],a.jn_x,0);
				if (go){
					return ;
				}
                alice[i].mp=alice[i].mp-alice[i].MP*1.0/10;
			}
		}
	}else if (a.jn==2){
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				hurt(alice[i],0,jshurt);
				if (go){
					return ;
				}
			}
		}
	}else if (a.jn==3){
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				hurt(alice[i],min(floor(alice[i].HP*1.0/10),a.jn_x*jshurt*1.0),0);
				if (go){
					return ;
				}
			}
		}
	}else if (a.jn==4){
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uMP[i][1]+=a.jn_y;
		}
	}else if (a.jn==5){
		alice[a.first].udef-=a.jn_x;
		hurt(alice[a.first],0,jshurt);
		if (go){
			return ;
		}
	}else if (a.jn==6){
		hurt(alice[a.first],0,jshurt);
		if (go){
			return ;
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uATK[i][0]-=a.jn_y;
		}
	}else if (a.jn==7){
		js mhjs;
		mhjs.HP=INT_MAX-1;
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				if (bob[i].hp<mhjs.hp){
					mhjs=bob[i];
				}else if (bob[i].hp==mhjs.hp && i<mhjs.id){
					mhjs=bob[i];
				}
			}
		}
		bob[mhjs.id].hp+=a.jn_z;
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uATK[i][1]+=a.jn_y;
		}
	}else if (a.jn==8){
		for (int i=1;i<=n;++i){
			if (!alice[i].die){
				hurt(alice[i],jshurt,0);
				if (go){
					return ;
				}
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uDEF[i][0]-=a.jn_y;
		}
	}else if (a.jn==9){
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				bob[i].hp+=a.jn_z;
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uDEF[i][1]+=a.jn_y;
		}
	}else{
		for (int i=1;i<=n;++i){
			if (!bob[i].die){
				bob[i].atk*=2;
				bob[i].def*=2;
				bob[i].hp=max(floor(bob[i].HP*1.0/2),bob[i].hp*1.0);
				bob[i].mp=max(floor(bob[i].MP*1.0/2),bob[i].mp*1.0);
			}
		}
		for (int i=Round;i<=Round+a.jn_x-1;++i){
			uMP[i][1]+=1;
		}
		for (int i=1;i<=n;++i){
			if (!alice[i].die && alice[i].jn==10){
				alice[i].jn=0;
			}
			if (!bob[i].die && bob[i].jn==10){
				bob[i].jn=0;
			}
		}
		u_jn10_play=1;
		jn10oR=Round+a.jn_x-1;
	}
}
int main(){
	cin>>n;
	anum=n;bnum=n;
	for (int i=1;i<=n;++i){
		cin>>alice[i].HP>>alice[i].MP>>alice[i].atk>>alice[i].def;
		alice[i].hp=alice[i].HP;
		for (int j=1;j<=n;++j){
			int id;
			cin>>id;
			alice[i].p.push_back({id,0});
		}
		cin>>alice[i].tf>>alice[i].tf_x>>alice[i].tf_y;
		cin>>alice[i].jn>>alice[i].jn_x>>alice[i].jn_y>>alice[i].jn_z;
		alice[i].play=0;
		alice[i].id=i;
	}
	for (int i=1;i<=n;++i){
		cin>>bob[i].HP>>bob[i].MP>>bob[i].atk>>bob[i].def;
		bob[i].hp=bob[i].HP;
		for (int j=1;j<=n;++j){
			int id;
			cin>>id;
			bob[i].p.push_back({id,0});
		}
		cin>>bob[i].tf>>bob[i].tf_x>>bob[i].tf_y;
		cin>>bob[i].jn>>bob[i].jn_x>>bob[i].jn_y>>bob[i].jn_z;
		bob[i].play=1;
		bob[i].id=i;
	}
	for (int i=1;i<=24000;++i){
		Round=i;
		puATK[i][0]=uATK[i][0];
		puDEF[i][0]=uDEF[i][0];
		puATK[i][1]=uATK[i][1];
		puDEF[i][1]=uDEF[i][1];
		for (int j=1;j<=n;++j){
			if (!alice[j].die){
				alice[j].uatk+=uATK[i][0];
				alice[j].udef+=uDEF[i][0];
			}
			if (!bob[j].die){
				bob[j].uatk+=uATK[i][1];
				bob[j].udef+=uDEF[i][1];
			}
		}
		//alice
		for (int j=1;j<=n;++j){
			if (!alice[j].die){
				find_js(alice[j]);
			}
		}
		js usejn_js;
		usejn_js.id=0;
		for (int j=1;j<=n;++j){
			if (alice[j].mp==alice[j].MP && !alice[j].die){
				if (alice[j].jn>usejn_js.jn){
					usejn_js=alice[j];
				}else if (alice[j].jn==usejn_js.jn && alice[j].id>usejn_js.id){
					usejn_js=alice[j];
				}
			}
		}
		if (usejn_js.id!=0){
			alice[usejn_js.id].mp=0;
			Ause_jn(alice[usejn_js.id]);
			if (go){
				return 0;
			}
			alice[usejn_js.id].mp+=1;
			if (alice[usejn_js.id].tf==5){
				alice[usejn_js.id].mp=min(alice[usejn_js.id].mp+alice[usejn_js.id].tf_y,alice[usejn_js.id].MP);
			}
			for (int j=1;j<=n;++j){
				alice[j].uatk-=puATK[i][0];
				alice[j].udef-=puDEF[i][0];
				bob[j].uatk-=puATK[i][0];
				bob[j].udef-=puDEF[i][0];
			}
			puATK[i][0]=uATK[i][0];
			puDEF[i][0]=uDEF[i][0];
			puATK[i][1]=uATK[i][1];
			puDEF[i][1]=uDEF[i][1];
			for (int j=1;j<=n;++j){
				if (!alice[j].die){
					alice[j].uatk+=uATK[i][0];
					alice[j].udef+=uDEF[i][0];
				}
				if (!bob[j].die){
					bob[j].uatk+=uATK[i][1];
					bob[j].udef+=uDEF[i][1];
				}
			}
		}else{
			js usepg_js;
			usepg_js.id=0;
			for (int j=1;j<=n;++j){
				if (!alice[j].die){
					if (bob[alice[j].first].hp>bob[usepg_js.first].hp){
						usepg_js=alice[j];
					}else if (bob[alice[j].first].hp==bob[usepg_js.first].hp){
						int num1=hurt_cmp(alice[j]),num2=hurt_cmp(usepg_js);
						if (num1>num2){
							usepg_js=alice[j];
						}else if (num1==num2 && alice[j].id>usepg_js.id){
							usepg_js=alice[j];
						}
					}
				}
			}
			A_pg(usepg_js);
			if (go){
				return 0;
			}
			alice[usepg_js.id].mp=min(alice[usepg_js.id].mp+1,alice[usepg_js.id].MP);
			if (alice[usepg_js.id].tf==5){
				alice[usepg_js.id].hp=min(alice[usepg_js.id].hp+alice[usepg_js.id].tf_x,alice[usepg_js.id].HP);
			}
		}
		for (int j=1;j<=n;++j){
			if (!alice[j].die){
				alice[j].mp=min(alice[j].mp+1,alice[j].MP);
				if (alice[j].tf==3){
					alice[j].hp=min(alice[j].hp+alice[j].tf_x,alice[j].HP);
					alice[j].mp=min(alice[j].mp+alice[j].tf_y,alice[j].MP);
				}
				alice[j].mp=min(alice[j].mp+uMP[i][0],alice[j].MP);
			}
		}
		//bob
		for (int j=1;j<=n;++j){
			if (!bob[j].die){
				find_js(bob[j]);
			}
		}
		usejn_js.id=0;
		for (int j=1;j<=n;++j){
			if (bob[j].mp==bob[j].MP && !bob[j].die){
				if (bob[j].jn>usejn_js.jn){
					usejn_js=bob[j];
				}else if (bob[j].jn==usejn_js.jn && bob[j].id>usejn_js.id){
					usejn_js=bob[j];
				}
			}
		}
		if (usejn_js.id!=0){
			bob[usejn_js.id].mp=0;
			Buse_jn(bob[usejn_js.id]);
			if (go){
				return 0;
			}
			bob[usejn_js.id].mp+=1;
			if (bob[usejn_js.id].tf==5){
				bob[usejn_js.id].mp=min(bob[usejn_js.id].mp+bob[usejn_js.id].tf_y,bob[usejn_js.id].MP);
			}
			for (int j=1;j<=n;++j){
				alice[j].uatk-=puATK[i][0];
				alice[j].udef-=puDEF[i][0];
				bob[j].uatk-=puATK[i][0];
				bob[j].udef-=puDEF[i][0];
			}
			puATK[i][0]=uATK[i][0];
			puDEF[i][0]=uDEF[i][0];
			puATK[i][1]=uATK[i][1];
			puDEF[i][1]=uDEF[i][1];
			for (int j=1;j<=n;++j){
				if (!alice[j].die){
					alice[j].uatk+=uATK[i][0];
					alice[j].udef+=uDEF[i][0];
				}
				if (!bob[j].die){
					bob[j].uatk+=uATK[i][1];
					bob[j].udef+=uDEF[i][1];
				}
			}
		}else{
			js usepg_js;
			usepg_js.id=0;
			for (int j=1;j<=n;++j){
				if (!bob[j].die){
					if (alice[bob[j].first].hp>alice[usepg_js.first].hp){
						usepg_js=bob[j];
					}else if (alice[bob[j].first].hp==alice[usepg_js.first].hp){
						int num1=hurt_cmp(bob[j]),num2=hurt_cmp(usepg_js);
						if (num1>num2){
							usepg_js=bob[j];
						}else if (num1==num2 && bob[j].id>usepg_js.id){
							usepg_js=bob[j];
						}
					}
				}
			}
			B_pg(usepg_js);
			if (go){
				return 0;
			}
			bob[usepg_js.id].mp=min(bob[usepg_js.id].mp+1,bob[usepg_js.id].MP);
			if (bob[usepg_js.id].tf==5){
				bob[usepg_js.id].hp=min(bob[usepg_js.id].hp+bob[usepg_js.id].tf_x,bob[usepg_js.id].HP);
			}
		}
		for (int j=1;j<=n;++j){
			if (!bob[j].die){
				bob[j].mp=min(bob[j].mp+1,bob[j].MP);
				if (bob[j].tf==3){
					bob[j].hp=min(bob[j].hp+bob[j].tf_x,bob[j].HP);
					bob[j].mp=min(bob[j].mp+bob[j].tf_y,bob[j].MP);
				}
				bob[j].mp=min(bob[j].mp+uMP[i][0],bob[j].MP);
			}
		}
		for (int j=1;j<=n;++j){
			if (!alice[j].die){
				alice[j].uatk-=puATK[i][0];
				alice[j].udef-=puDEF[i][0];
			}
			if (!bob[j].die){
				bob[j].uatk-=puATK[i][0];
				bob[j].udef-=puDEF[i][0];
			}
		}
		if (i==jn10oR){
			if (!u_jn10_play){
				anum=0;
			}else{
				bnum=0;
			}
		}
		ifwin();
		if (go){
			return 0;
		}
	}
	cout<<"qwq"<<endl;
	return 0;
}
2024/5/30 09:30
加载中...