洛谷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;
}

谢谢–zhengjun

原创文章 115 获赞 118 访问量 6494

猜你喜欢

转载自blog.csdn.net/A_zjzj/article/details/105701162