本來今晚不想寫代碼的,結果改寫了下Bell_Ford的一道題后看了下提交記錄,發(fā)現(xiàn)了這道題自己居然一直沒過。這道題是上一年寒假回來選拔珠海賽時候的練習題了,不知道怎么形容,看到這道題心里很不是滋味,無法想像一年前的自己怎么發(fā)揮的這么窩囊,從選拔一直到中大賽,一路水得一塌糊涂。一氣之下再掃了遍題目,打開編譯器十五分鐘寫完1A秒過,這以前以后,惆悵啊。但愿今年順順利利,比賽要好,學習也要好。最重要的是,我在乎的人也要好。。。 等我回中大爭氣給你看!

      題意略去,就是嘟嘟撿花生,排序花生坐標,貪心嘗試即可。注意撿下一個花生要保證時間足夠出去。

 1#include<cstdio>
 2#include<cstdlib>
 3#include<cstring>
 4#define N 55
 5struct nod{int u,v,val;};
 6struct nod p[N*N];
 7
 8int cmp(const void *p,const void *q){
 9    return ((struct nod *) q)->val-((struct nod *) p)->val;
10}

11
12int main(){
13    int n,m,time;
14    int t,i,j,k,total;
15    int posu,posv,res;
16    scanf("%d",&t);
17    while(t--){
18        scanf("%d%d%d",&n,&m,&time);
19        total=0;
20        for(i=0;i<n;i++)
21            for(j=0;j<m;j++){
22                scanf("%d",&k);
23                if(k){
24                    p[total].u=i;
25                    p[total].v=j;
26                    p[total].val=k;
27                    total++;
28                }

29            }

30        qsort(p,total,sizeof(p[0]),cmp);
31
32        time-=2;
33        res=0;
34        posu=0; posv=p[0].v;
35        for(i=0;i<total;i++){
36            if( time-abs(p[i].u-posu)-abs(p[i].v-posv)
37                - p[i].u -1 >=0 ){
38                time-=abs(p[i].u-posu)+abs(p[i].v-posv)+1;
39                res+=p[i].val;
40                posu=p[i].u;
41                posv=p[i].v;
42            }

43            else break;
44        }

45        printf("%d\n",res);
46    }

47    return 0;
48}