社区讨论

根本找不到原因a!!!在线等急!!!

P1086[NOIP 2004 普及组] 花生采摘参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lobj9s71
此快照首次捕获于
2023/10/29 21:55
2 年前
此快照最后确认于
2023/11/04 02:59
2 年前
查看原帖
CPP
#include<cstdio>
#include<algorithm>
const int MAXN=20+5+5;
int m,n,k,a[MAXN][MAXN],sum,fx,fy,ex,ey,tm,ans;
struct dire{
    int x,y,sum;
}N[MAXN*MAXN];
bool cmp(dire a,dire b){
    return a.sum>b.sum;
}
int main(){
    scanf("%d %d %d",&n,&m,&k);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&a[i][j]);
            if(a[i][j]>0){
                sum++;
                N[sum].x=i;
                N[sum].y=j;
                N[sum].sum=a[i][j];
            }
        }
    }
    std::sort(N+1,N+sum+1,cmp);
    fx=1,fy=N[1].y,k--;/*
    for(int i=1;i<=sum;i++)
        printf("%d ",N[i].sum);*/
    //printf("\n");
    for(int i=1;i<=sum;i++){
        tm=0;
        ex=N[i].x;
        ey=N[i].y;
        tm=std::abs(fx-ey)+std::abs(fy-ey);
        k--;
        k-=tm;
        if(k>=ex){
            ans+=a[ex][ey];
            fx=ex,fy=ey;
        }else{
            printf("%d",ans);
            return 0;
        }
    }
    printf("%d",ans);
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...