![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
小狐狸jun
菜鸟飞呀飞~
展开
-
USACO:Broken Necklace
思路:看了看像是动态规划中的最大子串,以前做过一个类似的,网上说是用模拟的水题,自己想用动态规划做一做,就试了一试.... 时间:用了3天...每天YY几个小时.... 提交情况:不谈了... 心得:打代码的时候都把注释给加上,思路比较清晰,只是后来发现思路漏洞逐渐显露出来,太多情况没有注意,导致后面的程序不断修改,很难看! 坑爹的........... ***原创 2013-04-01 20:52:23 · 413 阅读 · 0 评论 -
upcoj 2169 DP
题意:求给出的数组中元素求和能被m整除的最大元素个数. 一开始想BFS搜索,数据太大,无果。太急去敲了,应该早就料到数据太大,但是有一个思路之后却总想去试试。。 好了,DP 状态转移方程dp【i】【(v+a【i】)%m】=max(dp【i】【(v+a【i】)%m】,dp【i-1】【v】+1) // dp[i][v]代表对于第i个状态数字处理时,能组成%m=v的数字的个数 但是由于规原创 2013-05-17 11:06:49 · 475 阅读 · 0 评论 -
poj3249 拓扑排序+DP
题意:给出一个有向无环图,每个顶点都有一个权值。求一条从入度为0的顶点到出度为0的顶点的一条路径,路径上所有顶点权值和最大。 思路:因为是无环图,则对于每个点经过的路径求其最大权值有,dp[i]=max(dp[j]) j为i的子节点集合。再根据其要求入度为零为顶点,可以用拓扑排序每次枚举入度为零的点删去找下一个入度为零的点进行dp。 代码: #include #includ原创 2013-08-08 09:36:02 · 1730 阅读 · 0 评论 -
hdu2546 01背包 重学背包
题意:给出菜的价钱和自己的余额。使自己余额最少,注意余额大于5的情况可以买任意的菜。 思路:小于5的余额不能买菜,直接输出,大于五的余额,留下5元买最贵的菜,剩下的余额进行01背包,将剩下的余额减去01背包消耗金额最大。就得出答案 代码: #include #include using namespace std; int ZeroOnePack( int price[],原创 2013-08-11 11:02:24 · 496 阅读 · 0 评论 -
poj 1384完全背包
题意:给出猪罐子的空质量和满质量,和n个硬币的价值和质量,求猪罐子刚好塞满的的最小价值。 思路:选择硬币,完全背包问题,塞满==初始化为无穷,求最小价值,min。 代码: #include #include #include using namespace std; #define inf 10000000 int n,sum,empty,full,T; int v[原创 2013-08-12 19:16:20 · 1819 阅读 · 0 评论 -
poj 1742 多重背包
题意:给出n种面值的硬币, 和这些硬币每一种的数量, 要求求出能组成的钱数(小于等于m) 思路:一开始直接用多重背包套上去超时了,然后就没辙了,然后参考网上的,说只需要判断是否能取到就行了,并不需要记录其价格,直接用bool判断是否能取到。就不会TLE了。 代码: #include #include #include using namespace std; int原创 2013-08-13 21:22:27 · 490 阅读 · 0 评论 -
poj 1948二维01背包
题意:给出不多于40个小棍的长度,求出用所有小棍组成的三角形的最大面积。 思路:三角形3边求面积,海伦公式:p=(a+b+c)/2;S=p*(p-a)*(p-b)*(p-c);因为最大周长为1600 则三角形的边长小于周长一半800; 则可以用背包思想dp[i][j]代表能组成的两条边i和j。dp为true代表小棍能组成这两条边,第三条边也能求出,最后遍历一次dp数组求最大面积。原创 2013-08-14 12:49:43 · 924 阅读 · 0 评论