社区讨论

没有输出,求调(必关)

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 条回复,欢迎继续交流。

正在加载回复...