洛谷 P1086花生采摘题解--zhengjun
思路
因为只有唯一的顺序才完所有的花生,所以直接模拟即可
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,t;
int k;
struct zj{
int x,y,sum;
bool operator < (const zj &p)const{
return sum>p.sum;
}
}a[401];
int main(){
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int x;
cin>>x;
if(!x)continue;
a[++k]=(zj){i,j,x};
}
}
sort(a+1,a+1+k);
int x=0,y=a[1].y,time=0,ans=0;
for(int i=1;i<=k;i++){
int s=abs(x-a[i].x)+abs(y-a[i].y)+1;
if(time+s+a[i].x<=t){
ans+=a[i].sum;
time+=s;
x=a[i].x;
y=a[i].y;
}
else break;
}
printf("%d",ans);
return 0;
}