比赛 |
2024国庆练习2 |
评测结果 |
AAAAAAAAAWWWWAAAAWWW |
题目名称 |
战棋 |
最终得分 |
65 |
用户昵称 |
dream |
运行时间 |
0.270 s |
代码语言 |
C++ |
内存使用 |
3.38 MiB |
提交时间 |
2024-10-05 17:49:47 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=55;
int n,xx,AA,BB,CC;
int Getid() { return xx = (xx * AA + BB) % CC;}
struct qizi{
int gj,sm,zz,sx;
}xrfy[N],xrdq[N],xsfy[N],xsdq[N];
int aaaa[105];
int getsums(){
int sum=0;
for(int i=1;i<=n;i++){
if(xsdq[i].sm>0){
sum++;
}
}
return sum;
}
int getsumr(){
int sum=0;
for(int i=1;i<=n;i++){
if(xrdq[i].sm>0){
sum++;
}
}
return sum;
}
int getsid(int x){
int sum=-1;
for(int i=1;i<=n;i++){
if(xsdq[i].sm>0){
sum++;
}
if(sum==x){
return i;
}
}
}
int getrid(int x){
int sum=-1;
for(int i=1;i<=n;i++){
if(xrdq[i].sm>0){
sum++;
}
if(sum==x){
return i;
}
}
}
void hddzr(int x){
if(xrdq[x].zz!=-2){
return;
}
for(int i=1;i<=n;i++){
if(xrdq[i].sm>0&&xrdq[i].sx==4&&i!=x){
xrdq[x].gj+=20;
xrdq[x].sm+=20;
}
}
}
void hddzs(int x){
if(xsdq[x].zz!=-2){
return;
}
for(int i=1;i<=n;i++){
if(xsdq[i].sm>0&&xsdq[i].sx==4&&i!=x){
xsdq[x].gj+=20;
xsdq[x].sm+=20;
}
}
}
void hdzhs(int x){
if(xsdq[x].sm>0){
return;
}
if(xsdq[x].zz!=-2){
return;
}
for(int i=1;i<=n;i++){
if(xsdq[i].sx==5&&i!=x&&xsdq[i].sm>0){
xsdq[i].gj+=50;
}
}
}
void hdzhr(int x){
if(xrdq[x].sm>0){
return;
}
if(xrdq[x].zz!=-2){
return;
}
for(int i=1;i<=n;i++){
if(xrdq[i].sx==5&&i!=x&&xrdq[i].sm>0){
xrdq[i].gj+=50;
}
}
}
void yrgws(int x){
if(xsdq[x].sx!=3){
return;
}
if(xsdq[x].sm>0){
return;
}
for(int i=1;i<=n;i++){
if(xsdq[i].zz==-1&&i!=x&&xsdq[i].sm>0){
xsdq[i].gj+=20;
xsdq[i].sm+=20;
}
}
}
void yrgwr(int x){
if(xrdq[x].sx!=3){
return;
}
if(xrdq[x].sm>0){
return;
}
for(int i=1;i<=n;i++){
if(xrdq[i].zz==-1&&i!=x&&xrdq[i].sm>0){
xrdq[i].gj+=20;
xrdq[i].sm+=20;
}
}
}
int sjf,rjf;
void jss(){
for(int i=1;i<=n;i++){
if(xsdq[i].sm>0){
sjf++;
}
}
}
void jsr(){
for(int i=1;i<=n;i++){
if(xrdq[i].sm>0){
rjf++;
}
}
}
void yrljs(int x){
// if(xsdq[x].sx!=2){
// return;
// }
// for(int i=1;i<=n;i++){
// if(xsdq[i].zz==-1&&i!=x&&xsdq[i].sm>0){
// xsdq[i].gj+=20;
// }
// }
if(xsdq[x].zz!=-1){
return;
}
for(int i=1;i<=n;i++){
if(xsdq[i].sm>0&&xsdq[i].sx==2&&i!=x){
xsdq[x].gj+=20;
}
}
}
void yrljr(int x){
// if(xrdq[x].sx!=2){
// return;
// }
// for(int i=1;i<=n;i++){
// if(xrdq[i].zz==-1&&i!=x&&xrdq[i].sm>0){
// xrdq[i].gj+=20;
// }
// }
if(xrdq[x].zz!=-1){
return;
}
for(int i=1;i<=n;i++){
if(xrdq[i].sm>0&&xrdq[i].sx==2&&i!=x){
xrdq[x].gj+=20;
}
}
}
signed main(){
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
aaaa['M']=-1;
aaaa['P']=-2;
aaaa['B']=1;
aaaa['L']=2;
aaaa['K']=3;
aaaa['C']=4;
aaaa['G']=5;
cin>>n>>xx>>AA>>BB>>CC;
for(int i=1;i<=n;i++){
int a,b;
char c,d;
cin>>a>>b>>c>>d;
xsfy[i]={a,b,aaaa[c],aaaa[d]};
}
for(int i=1;i<=n;i++){
int a,b;
char c,d;
cin>>a>>b>>c>>d;
xrfy[i]={a,b,aaaa[c],aaaa[d]};
}
for(int i=1;i<=500;i++){
for(int j=1;j<=n;j++){
xrdq[j]=xrfy[j];
xsdq[j]=xsfy[j];
}
for(int j=1;j<=n;j++){
yrljs(j);
yrljr(j);
}
while(1){
int qqq=getsums(),www=getsumr();
if(!qqq||!www){
break;
}
int x,y;
x=Getid(),y=Getid();
int dqs,dqr;
dqs=getsid(x%getsums());
dqr=getrid(y%getsumr());
// cout<<dqs<<" "<<dqr<<"\n";
// cout<<"dqs:"<<xsdq[dqs].gj<<" "<<xsdq[dqs].sm<<"\n";
// cout<<"dqr:"<<xrdq[dqr].gj<<" "<<xrdq[dqr].sm<<"\n";
// yrljs(dqs);
// yrljr(dqr);
// for(int j=1;j<=n;j++){
// cout<<"s:"<<j<<" "<<xsdq[j].gj<<" "<<xsdq[j].sm<<"\n";
// cout<<"r:"<<j<<" "<<xrdq[j].gj<<" "<<xrdq[j].sm<<"\n";
// }
hddzs(dqs);
hddzr(dqr);
// cout<<"dqs:"<<xsdq[dqs].zz<<" "<<xsdq[dqs].gj<<" "<<xsdq[dqs].sm<<"\n";
// cout<<"dqr:"<<xrdq[dqr].zz<<" "<<xrdq[dqr].gj<<" "<<xrdq[dqr].sm<<"\n";
xsdq[dqs].sm-=xrdq[dqr].gj;
xrdq[dqr].sm-=xsdq[dqs].gj;
hdzhs(dqs);
hdzhr(dqr);
yrgws(dqs);
yrgwr(dqr);
// cout<<"hdqs:"<<xsdq[dqs].gj<<" "<<xsdq[dqs].sm<<"\n";
// cout<<"hdqr:"<<xrdq[dqr].gj<<" "<<xrdq[dqr].sm<<"\n";
}
jss();
jsr();
}
cout<<sjf<<" "<<rjf;
return 0;
}
/*
5 152 139 51 611
97 668 M K
54 754 M L
116 884 M G
102 454 M K
111 500 M C
132 618 M K
122 451 M B
111 523 M G
118 101 M K
57 972 M L
*/