|洛谷|模拟|P1086 花生采摘

来源:互联网 发布:windows10安装mysql 编辑:程序博客网 时间:2024/04/25 19:04

http://www.luogu.org/problem/show?pid=1086

由于必须采摘当前最大植株,所以这道题水了很多,当如果摘了当前点返回不够时间的话,那这个点就不能摘。

#include<cstdio>#include<algorithm>#include<cstring>#include<cstdlib>#define ms(i,j) memset(i,j, sizeof i);using namespace std;struct fruit{       int x;       int y;       int v;}fr[405];bool cmp(fruit const &a, fruit const &b){     return b.v<a.v;}int cnt = 0;int map[30][30];int main(){    int m,n,k;    scanf("%d%d%d", &m ,&n ,&k);     for (int i=1;i<=m;i++)     for (int j=1;j<=n;j++)     {         scanf("%d", &map[i][j]);         if (map[i][j])         {            ++cnt;                    fr[cnt].x = i;            fr[cnt].y = j;            fr[cnt].v = map[i][j];         }     }     sort(fr+1, fr+1+cnt, cmp);     int ans = 0;     int nt = fr[1].x+1, nx = fr[1].x, ny = fr[1].y;     if (nt+fr[1].x<=k) ans+=fr[1].v; else {printf("0\n");return 0;}     for (int i=2;i<=cnt;i++)     {         nt += abs(fr[i].x - nx) + abs(fr[i].y - ny) + 1;         if (nt+fr[i].x<=k) {ans += fr[i].v; nx = fr[i].x, ny = fr[i].y;}         else break;     }     printf("%d\n", ans);    getchar();getchar();getchar();getchar();getchar();getchar();getchar();    return 0;}


0 0
原创粉丝点击