好题
Dilly__dally
这个作者很懒,什么都没留下…
展开
-
HDU 2955
思路:背包问题,原先想的是把概率当做背包,在这个范围内最多能抢多少钱。但是问题出在概率这里,一是因为概率是浮点数,用作背包必须扩大10^n倍来用。二是最大不被抓概率不是简单的累加。二是p = (1-p1)(1-p2)(1-p3) 其中p为最大不被抓概率,p1,p2,p3为各个银行被抓概率。第二次想到把银行的钱当做背包,把概率当做价值,总容量为所有银行的总钱数,求不超过被抓概率的情况下,最大的背包容...原创 2018-05-17 17:18:01 · 110 阅读 · 0 评论 -
CF 366C(01背包)
把a-b*k视为重量,a视为价值,背包,因为a-b*k有负数情况,所以要考虑负数容量的情况把a-b*k视为重量,是因为这样就可以叠加,当a=b*k时,也就是重量为0的状态, 初始没有物品时,重量也为零,所以dp数组初始化要讲重量为0(dp【0】)赋为零,而其余状态刚开始并不存在,所以都赋为负无穷 01 背包 以 a[i] -k* b[i]作为每个物品的重量,以a[i]作为价值 ,...原创 2018-05-18 18:13:38 · 326 阅读 · 0 评论 -
HDU 5534
题意:告诉你有n个结点,f(i)表示度为i的结点的cool值,现在你需要做的就是加n-1条边,构成一棵树,并使得这棵树的每个结点的cool值之和,即coolness最大,输出最大的coolness。思路:完全背包。知识点:有n个结点的树有2*n-2个度(入度+出度)。详细方法:因为每一个结点至少有一个度,所以初始化dp[0]=n*f(1),其余初始化为0。问题就转化为了把2*n-2-n个度分配到这...原创 2018-05-19 11:55:24 · 149 阅读 · 0 评论 -
HDU 3033
方法:分组背包。题意:某人要买鞋子,有k种鞋,要求每种鞋至少买一双,给出每双鞋子的花费和价值,问m元钱可以买到的鞋子的最大价值是多少。思路:背包九讲讲的是每组至多选一个,此题是每组至少选一个,所以dp[i][j]代表前i组money为j最多买到的价值。初始化方面要注意,先将全部初始化为-1表示不存在,为了计算从第一维到第k维,要将dp[0]初始化为0。然后先枚举每一组,再枚举每一组的鞋子,最后一层...原创 2018-05-21 19:16:57 · 225 阅读 · 0 评论 -
Amanda Lounges (二分图染色+好题)
题意:给定n个点m条边的无向图(开始每个点都是白色)下面m行给出边和边权,边权表示这条边所连接的2个点中被染成黑色的点数。0表示染,1表示其中一个点染,2表示都染。问:最少染多少个点可以满足上述的边权。若不存在输出impossible思路:首先处理所有边权为0和2的情况,这样处理后图中就只剩下边权为1的子图,任意染一个点,然后bfs一下把子图染掉即可。很多细节需要考虑,值得...原创 2018-08-29 21:03:46 · 303 阅读 · 0 评论 -
ZOJ 4054 Traveling on the Axis(思维+贡献法)
题意:在[0,n]中每0.5处设置一个红绿灯,0表示红灯,1表示绿灯,如果在4.5处有红灯,要从4到5,就要等1s,给出初始的红绿灯状态,每1s会改变状态,即由红灯变成绿灯,或绿灯变成红灯,然后计算图中表达式。(数轴上任意两点花费时间之和)思路:可以知道,如果忽略等待的时间,那么上式的值就是1*n+2*(n-1)+3*(n-2)+……+n*1。可以这样理解:从0到1,从1到2...原创 2018-09-19 12:18:38 · 204 阅读 · 0 评论