58pts,求救
  • 板块P5506 封锁
  • 楼主HuaJi_360
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/10/9 20:51
  • 上次更新2023/11/5 11:25:15
查看原帖
58pts,求救
196522
HuaJi_360楼主2020/10/9 20:51

rt,#15 #18 wa了,不知道为什么,求指正。

#include<bits/stdc++.h>
#define reg register ll
#define ll long long
#define ull unsigned long long
using namespace std;
template <typename T> inline void read(T &x){
	x=0;
	char c=getchar();bool flg=0;
	for(;!isdigit(c);c=getchar()){if(c=='-'){flg=1;}}
	for(;isdigit(c);c=getchar()){x=(x<<1)+(x<<3)+c-'0';}
	if(flg){x=-x;}
}
template<typename T> inline void write(T &x){
	char F[200];
	register T cnt=0,tmp=x>0?x:-x;
	if(tmp==0){putchar('0');return;}
	if(x<0){putchar('-');}
	while(tmp>0){
		F[cnt++]=tmp%10+'0';
		tmp/=10;
	}
	while(cnt>0){putchar(F[--cnt]);}
}
struct drone{
	int x,y,z,h,f,atk,def,mat,mdf,hp,fix,id;
	string s;
}f[205];
int n,t;
int dx[8][5]={{0,1,1,1,0},{0,1,1,1,0},{0,0,0,0,0},{0,-1,-1,-1,0},{0,-1,-1,-1,0},{0,-1,-1,-1,0},{0,0,0,0,0},{0,1,1,1,0}};
int dy[8][5]={{0,0,0,0,0},{0,1,1,1,0},{0,1,1,1,0},{0,1,1,1,0},{0,0,0,0,0},{0,-1,-1,-1,0},{0,-1,-1,-1,0},{0,-1,-1,-1,0}};
int dz[8][5]={{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1},{-1,-1,0,1,1}};
int main(){
	read(n),read(t);
	for(reg i=1;i<=n;i++){
		read(f[i].x),read(f[i].y),read(f[i].z);
		read(f[i].h),read(f[i].f);
		read(f[i].atk),read(f[i].def),read(f[i].mat),read(f[i].mdf),read(f[i].hp),read(f[i].fix);
		cin>>f[i].s;
		f[i].id=i;
	}
	for(reg i=1;i<=t;i++){
		for(reg j=1;j<=n;j++){
			if(f[j].hp>0){
				f[j].x+=dx[f[j].f][f[j].h],f[j].y+=dy[f[j].f][f[j].h],f[j].z+=dz[f[j].f][f[j].h];
			}
		}
		for(reg j=1;j<=n;j++){
			if(f[j].hp<=0){continue;}
			char c=f[j].s[i-1];
			if(c=='N'){continue;}
			if(c=='U'){if(f[j].h<4){f[j].h++;}}
			if(c=='D'){if(f[j].h>0){f[j].h--;}}
			if(c=='L'){
				f[j].f++;
				if(f[j].f>7){f[j].f=0;}
			}
			if(c=='R'){
				f[j].f--;
				if(f[j].f<0){f[j].f=7;}
			}
			if(c=='F'){f[j].hp+=f[j].fix;}
			if(c=='A'){
				bool flag=false;
				for(reg k=1;k<=100;k++){
					for(reg v=1;v<=n;v++){
						if(f[j].x+dx[f[j].f][f[j].h]*k==f[v].x&&f[j].y+dy[f[j].f][f[j].h]*k==f[v].y&&f[j].z+dz[f[j].f][f[j].h]*k==f[v].z&&f[v].hp!=0){
							if(f[j].atk>f[v].def){f[v].hp-=(f[j].atk-f[v].def);}
							flag=true;
							break;
						}
					}
					if(flag){break;}
				}
			}
			if(c=='M'){
				for(reg k=1;k<=100;k++)
					for(reg v=1;v<=n;v++){
						if(f[j].x+dx[f[j].f][f[j].h]*k==f[v].x&&f[j].y+dy[f[j].f][f[j].h]*k==f[v].y&&f[j].z+dz[f[j].f][f[j].h]*k==f[v].z){
							if(f[j].mat>f[v].mdf){f[v].hp-=(f[j].mat-f[v].mdf);}
						}
					}
			}
		}
	}
	for(reg i=1;i<=n;i++){
		write(f[i].x),putchar(' '),write(f[i].y),putchar(' '),write(f[i].z),putchar(' ');
		if(f[i].hp<=0){puts("0");}
		else{write(f[i].hp),putchar('\n');}
	}
	return 0;
}

2020/10/9 20:51
加载中...