NOIp2004花生採摘(普及組)————搜尋,模擬
阿新 • • 發佈:2018-12-02
題解:本題主要考查搜尋,模擬,要審題別把題目複雜化。關鍵在於算時間,與前一個的座標差再加採摘時間這就是時間。
程式碼如下:
#include<bits/stdc++.h> using namespace std; int m,n,i,j,gg=1,t,lo,sum; struct peanuts{ int x,y,time,w; }; peanuts daa[1000001]; int a[1010][1010]; int main() { cin>>m>>n>>t; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { cin>>a[i][j]; if(a[i][j]>0) { daa[gg].w=a[i][j]; daa[gg].x=i;daa[gg].y=j; gg++; } } for(i=1;i<gg;i++) for(j=i+1;j<=gg;j++) if(daa[i].w<daa[j].w)swap(daa[i],daa[j]); for(i=1;i<=gg;i++) { lo=daa[i].x; if(i==1) daa[i].time=daa[i].x+1; else daa[i].time=daa[i-1].time+abs(daa[i].x-daa[i-1].x)+abs(daa[i].y-daa[i-1].y)+1; if (daa[i].time+lo<=t) sum=sum+daa[i].w; } cout<<sum; return 0; }