摘要: #include<iostream> #include<math.h> #include<algorithm> #include<stdio.h> #include<vector> #include<memory.h> #include<queue> #define INF 10000000 typ 阅读全文
posted @ 2017-03-04 23:50 docyard 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 使用dp求解复杂度过高,利用n比较小的特点。 折半枚举,把前半部分中的选取方法对应的重量和价值总和记为w1,v1,这样在后半部分寻找总重w2<=W-w1时使v2最大的选取方法就好。 首先排除所有w2[i]<=w2[j]&&v2[i]>=v1[j]的j。这一点可以按照w2,v2的字典序排序后做到。 此 阅读全文
posted @ 2017-03-04 22:17 docyard 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 从四个数列选择的话共有n的4次方种情况。将它们对半分成ab和cd再考虑以快速解决。 从两个数列中选择只有n的2次方种情况,可以进行枚举。 从c和d中取数字的n的平方种方法全都枚举出来排好序。运用二分搜索从中搜索-a[i]-b[j]。复杂度O(n^2logn)。 #include<iostream> 阅读全文
posted @ 2017-03-04 17:56 docyard 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 只有一个球时,这就是单纯的物理问题。 多个球时,所有的球都是一样的,两个球相撞后互相交换速度,可以视为直接互相穿过继续运动。 由于在碰撞时球的顺序是不会改变的,先落下的球始终在下面。 所以将计算出的每个球的高度进行排序就能知道每个球的最终位置。 最后按照R=0的结果加上2R*i就是每个球的高度。 # 阅读全文
posted @ 2017-03-04 17:11 docyard 阅读(435) 评论(0) 推荐(0) 编辑