POJ 1928 The Peanuts G++

xiaoxiao2021-02-28  93

 #include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <cstring> using namespace std; //学习博友翻译 int da[100][100];//我写小了有溢出 一直wa int tim[10000]; int hs[10000]; struct nod{ int nut; int x; int y; }; bool cmp(nod a, nod b) { return a.nut>b.nut; } int main() { int T; cin>>T; for(int o=0;o<T;o++) { memset(da,0,sizeof(da)); memset(tim,0,sizeof(tim)); memset(hs,0,sizeof(hs)); int n,m,lim; cin>>n>>m>>lim; vector<nod> ve; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>da[i][j]; if(da[i][j]!=0) { nod t; t.nut=da[i][j]; t.x=j; t.y=i; ve.push_back(t); } } } sort(ve.begin(),ve.end(),cmp);//以上ac /* int sum=0; lim-=ve[0].y; for(int i=0;i<ve.size();++i) { if(lim>=ve[i].y+1) { sum+=ve[i].nut; lim-=abs(ve[i].x-ve[i+1].x)+abs(ve[i].y-ve[i+1].y)+1; } else break; } printf("%d\n",sum);*/ /* if(ve.size()==0) { cout<<0<<endl; continue; }*/ int sum=0;//不算出去花的时间 int tx=ve[0].x; int ty=0; int pn=0;//摘到的花生 for(int i=0;i<ve.size();i++) { //cout<<i<<" "<<ve[i].nut<<" "<<ve[i].x<<" "<<ve[i].y<<endl; int ax=ve[i].x; int ay=ve[i].y; sum=sum+abs(tx-ax)+abs(ty-ay)+1; pn=pn+ve[i].nut; hs[i]=pn; tx=ax; ty=ay; tim[i]=sum+ay; //cout<<sum<<" "<<time[i]<<endl<<endl; } /* for(int i=0;i<ve.size();i++) { cout<<ve[i].nut<<" "<<ve[i].x<<" "<<ve[i].y<<" "; } cout<<endl; for(int i=0;i<ve.size();i++) { cout<<tim[i]<<" "; } cout<<endl; for(int i=0;i<ve.size();i++) { cout<<hs[i]<<" "; } cout<<endl;*/ int jg=0;//一下ac for(int i=0;i<ve.size();i++) { if(tim[i]>lim) { break; }else { jg=hs[i]; } } cout<<jg<<endl; } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-52373.html

最新回复(0)