pku 2392 Space Elevator(简单背包)

注意先根据attitude排序,然后就是简单背包。

#include <iostream> #include <algorithm> using namespace std; bool height[40005]; struct node { int h,a,c; }nodes[405]; bool operator<(const node& a,const node& b) { return a.a<b.a; } int main() { memset(height,0,sizeof(height)); height[0]=true; int n,maxHeight=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d%d",&nodes[i].h,&nodes[i].a,&nodes[i].c); } sort(nodes,nodes+n); for(int i=0;i<n;i++) { for(int j=0;j<nodes[i].c;j++) { for(int k=min(maxHeight,nodes[i].a-nodes[i].h);k>=0;k--) { if(height[k]) { height[k+nodes[i].h]=height[k]; maxHeight=max(maxHeight,k+nodes[i].h); } } } } printf("%d/n",maxHeight); return 0; }

你可能感兴趣的:(c,struct,ini)