摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=3535分组背包,每一组加了以下三个限制 0 stands for the sets that should choose at least 1 job to do, 1 for the sets that should choose at most 1 , 2 for the one you can choose freely#include #include #include #include #include #include #incl... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=3466题目大意是说n个物品每个物品的花费是p,但是如果你现在的钱少于q就买不了这个物品,每个物品的价值是v,求有钱M时的最大价值。一看这个题,就觉得直接按p背包还是按q背包都不对,然后就没有然后了。。。然后看了题解:是说按q-p贪心,其实是这样,每次取q-p最小的,那么每次留下的自然就是最多的金钱。至于严格的证明。。。。。。。待研究剩下的就是01背包了。。,。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 ... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=3635题目意思是说n个球在n个城市。每次操作把编号i的球所在的城市的所有的求全部一道另一城市B每次询问访问编号i的球的城市,以及这个城市的球的数量,以及这个球被移动了多少次。方法就是用一个结构体记录每个球的父节点和移动次数以及这个节点的球的个数(球和城市可以堪为一个整体),然后每次操作就行。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 ... 阅读全文
摘要:
题目意思是说给你一列数,每次可以将相邻的两个数交换,这一步的代价是这两个数的和,求将所有数排好序的最少代价。题解:我们可以这么思考,由于每次都是交换相邻的两个数,所以将一个数放到它自己的位置去后,其他的数的相对位置没变,那么排序其他的数所需要消耗的代价将与这个数没关系,所以排序过程将相当于是冒泡排序。这样的话我们用树状数组可以记录第i个数之前有多少个比它小的的数x再记录这些比它小的数的和是多少sum然后这个数移动到他自己的位置的代价就是 x*a[i]+sum。最后的复杂度就是nlogn以后排序和求和的题应该多想想树状数组~恩恩 1 #include 2 #include 3 #inclu... 阅读全文