PDV解释:(Σwj)-si, where (Σwj) stands for sum of weight of all floors above.即为在i物体上方所有物体的重量和 - i的强度。
现在希望最大的PDV值最小....................
YY: 假设两个物体i,j,把谁放上面比较好? 假设把i放上面,则pdv1 = Wi - Sj;把j放上面 则pdv2 = Wj - Si;要使得pdv尽量小,设pdv1 < pdv2 则 Wi + Si < Wj + Sj
所以按照w+s由小到大sort,就能满足条件了......
#include#include #include #include #include #include #include #include #include #include #include #include #include //形如INT_MAX一类的 #define MAX 100005 #define INF 0x7FFFFFFF using namespace std; struct node { int w,s; }a[MAX]; int n; bool cmp(const node &x, const node &y) { return x.w + x.s < y.w + y.s; } int main() { while(scanf("%d",&n) != EOF) { for(int i=0; i
