30分求助

P1086 [NOIP2004 普及组] 花生采摘

我排完序以后是这么写的 ```cpp if(2*time+1<=k) { time+=1; number = a[0].geshu; for(int i=0; i<num; i++) { if(a[i+1].geshu == 0)break; distance = abs(a[i+1].x-a[i].x)+abs(a[i+1].y-a[i].y); time = time+distance+1; if(time+a[i+1].x<=k) number += a[i+1].geshu; else break; } } cout<<number; return 0; } ```
by linzhanra @ 2022-09-25 12:37:21


完整代码: ```cpp #include<bits/stdc++.h> using namespace std; struct node { int x; int y; int geshu; } a[100001]; bool cmp(struct node a,struct node b) { return a.geshu > b.geshu; } int main() { int m,n,k; int num=0; int number =0; int time = 0; int distance=0; cin>>m>>n>>k; for(int i=1; i<=m; i++) { for(int j=1; j<=n; j++) { a[num].x=i; a[num].y=j; cin>>a[num].geshu; num++; } } sort(a,a+num,cmp); time=a[0].x; if(2*time+1<=k) { time+=1; number = a[0].geshu; for(int i=0; i<num; i++) { if(a[i+1].geshu == 0)break; distance = abs(a[i+1].x-a[i].x)+abs(a[i+1].y-a[i].y); time = time+distance+1; if(time+a[i+1].x<=k) number += a[i+1].geshu; else break; } } cout<<number; return 0; } ```
by linzhanra @ 2022-09-25 12:38:28


|