社区讨论
0pts求条,只要改到30pts就行
P7506「Wdsr-2.5」琪露诺的算数游戏参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mm8lodh0
- 此快照首次捕获于
- 2026/03/02 11:09 上周
- 此快照最后确认于
- 2026/03/04 22:05 6 天前
CPP
#include<bits/stdc++.h>
#define Rainbow return
#define after 0
#define rain
using namespace std;
int n,m,k,p,cnt=1;
struct card{
int op,x;
//1:A 2:B 3:C 4:D 5:E
//6:PA 7:TR 8:DB
};
card dui[300010];
string pdui[300010];
struct plyr{
vector<card> v;
vector<string> vv;
string nm;
}a[40];
card cd(string x){
card tmp={0,0};
switch(x[0]){
case 'A': tmp.op=1;break;
case 'B': tmp.op=2;break;
case 'C': tmp.op=3;break;
case 'D': tmp.op=4;break;
case 'E': tmp.op=5;break;
}
for(int i=1;i<x.size();i++){
tmp.x=tmp.x*10+x[i]-'0';
}
return tmp;
}
int calc(int x,card y){
switch(y.op){
case 1:return x+y.x;
case 2:return x-y.x;
case 3:return x*y.x;
case 4:return x/y.x;
case 5:return y.x;
}
}
bool round(int pl){
int maxp=-1,maxi=0;
for(int i=1;i<=2;i++){
int np=calc(p,a[pl].v[i]);
if(np<=99){
if(maxp<np||(np==maxp&&a[pl].v[i].op<a[pl].v[maxi].op)){
maxp=np;
maxi=i;
}
}
}
if(maxp==-1){
cout<<a[pl].nm<<" lost the game.\n";
a[pl].v.clear();
a[pl].vv.clear();
for(int i=1;i<=3;i++){
a[pl].v.push_back(dui[cnt]);
a[pl].vv.push_back(pdui[cnt]);
cnt++;
}
return 0;
}
else{
p=maxp;
cout<<a[pl].nm<<" used "<<a[pl].vv[maxi]<<",now p="<<p<<".\n";
a[pl].v.erase(a[pl].v.begin()+maxi);
a[pl].v.push_back(dui[cnt]);
a[pl].vv.erase(a[pl].vv.begin()+maxi);
a[pl].vv.push_back(pdui[cnt]);
cnt++;
return 1;
}
}
int main(){
//ios::sync_with_stdio(0);
//cin.tie(0);
//cout.tie(0);
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>a[i].nm;
for(int j=0;j<3;j++){
string s;
cin>>s;
a[i].v.push_back(cd(s));
a[i].vv.push_back(s);
//cout<<a[i].c[j].op<<" "<<a[i].c[j].x<<"\n";
}
}
for(int i=1;i<=k;i++){
string x;
cin>>x;
dui[i]=cd(x);
pdui[i]=x;
}
int now=1;
for(int i=1;i<=m;i++){
cout<<"Round "<<i<<":\n";
p=0;
while(round(now)) now=now%n+1;
}
Rainbow after rain;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...