社区讨论
没有输出,求调(必关)
P8874[传智杯 #5 初赛] F-二人的大富翁游戏参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9331i
- 此快照首次捕获于
- 2025/11/03 22:43 4 个月前
- 此快照最后确认于
- 2025/11/03 22:43 4 个月前
CPP
/*
给定 原始信息
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node{
int obj,price,lev;
};
int c[N][N]; int n,m,q,l;
int d[N*N];
node a[N*N];
int pri[3];
int stp[3];//两个人分别走到了哪一个格子
void add(){
//增加收益
for(int i=1;i<=n;++i){
pri[a[i].obj]+=a[i].price;
}
}
signed main(){
cin>>n>>m>>q>>l;
for(int i=1;i<=n;++i){
for(int j=0;j<l;++j){
cin>>c[i][j];
}
}
for(int i=1;i<=n;++i){
cin>>d[i];
}
int tmp=0,k=0;
int w=0;//
stp[1]=stp[2]=1;
pri[1]=pri[2]=m;
while(cin>>tmp>>k){
if(tmp==1){
w++;
if(w>2){
w=1;
add();
}
for(int i=1;i<=k;++i){
//改变位置
stp[w]++;
if(stp[w]>n){
stp[w]-=n;//饶了一圈再绕回来
}
if(a[stp[w]].obj==w){//如果是自己的
pri[w]+=a[stp[w]].price;
}
else if(a[stp[w]].obj==(!w)){//建筑物时对方的
pri[w]-=a[stp[w]].price;
pri[!w]+=a[stp[w]].price;
if(pri[w]<0){
//输了
if(w==1){
cout<<"Renko"<<endl;//莲子
}
else{
cout<<"Merrt"<<endl;
}
}
return 0;
}
}
}
else{
if(a[stp[w]].obj==(!w)){//对方的建筑物
continue;
}
int firs=a[stp[w]].lev;
for(int i=0;i<k;++i){
if(pri[stp[w]]>c[stp[w]][i+firs] && i+firs<=l){
pri[w]-=c[stp[w]][i+firs];
a[stp[w]].lev++;
a[stp[w]].obj=w;
a[stp[w]].price=c[stp[w]][i+firs];
}
else{
continue;
}
}
if(pri[stp[w]]<0){
//输了
if(w==1){
cout<<"Renko"<<endl;//莲子
}
else{
cout<<"Merry"<<endl;
}
return 0;
}
}
add();
}
cout<<pri[1]<<" "<<pri[2]<<endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...