关于传智杯#5初赛的F题
  • 板块学术版
  • 楼主dudble
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/25 20:54
  • 上次更新2023/11/25 22:07:34
查看原帖
关于传智杯#5初赛的F题
1196798
dudble楼主2023/11/25 20:54

这道题我这个制仗已经掰了一个下午,输出的数总是不对。对着题解又对照了好久,请问到底是什么地方出了问题QAQ 原题链接https://www.luogu.com.cn/problem/P8874

#include<bits/stdc++.h>
using namespace std;
int a[1000],c[1000][1000],pos[2]={1,1},b[1000],lv[1000],d[1000];
long long qi[2];
int main(){
    int n,m,q,l,i,j;
    scanf("%d %d %d %d",&n,&m,&q,&l);
    for(i=1;i<=n;i++){
        for(j=0;j<l;j++){
            cin >> c[i][j];
        }
    }
    for(i=1;i<=n;i++) scanf("%d",&d[1]);
    int op,k,who=1;
    qi[0]=qi[1]=m;
    memset(b,-1,sizeof b);
    while(cin>>op>>k){
        if(op==1){
            if(who==1){
                for(i=1;i<=n;i++){
                    if(b[i]!=-1) qi[b[i]]+=d[i];
                }
            }
            who=!who;
            for(i=1;i<=k;i++){
                pos[who]=pos[who]%n+1;
                if(b[pos[who]]!=-1){
					if(b[pos[who]]==who) qi[who]+=a[pos[who]];
					else if(b[pos[who]]!=-1){
                        qi[who]-=a[pos[who]];
                        qi[!who]+=a[pos[who]];
                    }
				}
                if(qi[who]<0){
                    if(who==0) puts("Renko");
                    else puts("Merry");
                    return 0;
                }
            }
        }
        else{
            if(b[pos[who]]==!who) continue;
            for(i=1;i<=k;i++){
                if(qi[who]>=c[pos[who]][lv[pos[who]]]&&lv[pos[who]]<l){
                    a[pos[who]]+=c[pos[who]][lv[pos[who]]];
                    qi[who]-=c[pos[who]][lv[pos[who]]];
                    b[pos[who]]=who;
                    ++lv[pos[who]];
                }
                else break;
            }
        }
    }
    for(i=1;i<=n;i++){
            if(b[i]!=-1) qi[b[i]]+=d[i];
    }
    cout<<qi[0]<<" "<<qi[1]<<endl;
    return 0; 
}
2023/11/25 20:54
加载中...