花生采摘
6 7 21 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 7 0 15 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0
37
#include<cstdio>
#include<algorithm>
using namespace std;
struct pe{
int x,y,val;
};
bool cmp(pe x,pe y){
if(x.val>y.val) return true;
else return false;
}
int main(){
int m,n,k,f,g=0,xi,yi=0,sum=0;
pe v[410];
scanf("%d%d%d",&m,&n,&k);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++){
scanf("%d",&f);
if(f>0){//记录位置和花生个数
v[g].val=f;
v[g].x=j;
v[g++].y=i;
}
}
sort(v,v+g,cmp);
xi=v[0].x;
for(int i=0;i<g;i++){//计算需要的时间
int xmax=xi>v[i].x?xi:v[i].x;
int xmin=xi>v[i].x?v[i].x:xi;
int ymax=yi>v[i].y?yi:v[i].y;
int ymin=yi>v[i].y?v[i].y:yi;
if(xmax-xmin+ymax-ymin+v[i].y+1<=k){
sum+=v[i].val;
k=k-(xmax-xmin+ymax-ymin+1);
xi=v[i].x;
yi=v[i].y;
}
else break;
}
printf("%d\n",sum);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
SDNU 1167.花生采摘【NOIP 2004 普及组】【贪心】【8月6】
原文:http://blog.csdn.net/a995549572/article/details/47321965