动态规划
文章平均质量分 79
Speedcell
这个作者很懒,什么都没留下…
展开
-
Codeforces 264B Good Sequences
像这种L*S的题目,目测都是DP的样子,只是怎么减小复杂度的问题,由于是从当前所有因数转移过来,所以找到所有的因数转移就好了。转移方程是dp[factors(val)]=max(dp[factors(val)])+1,factors(val)是val所有因子的集合。像这种自身更新的方程好像还是第一次看到。这里学到一个筛法的更好的写法,筛出素数的同时得到这个区间内每个数的一个因子。#in原创 2013-01-22 22:23:56 · 433 阅读 · 0 评论 -
HOJ 12666 Extreme Shopping
转移的过程注意不要漏掉情况,这题看到多重背包且范围大就直接上二进制优化了,结果在这里出了问题。因为是要预付一些钱才能开始交易,但这个钱只用付一次就可以在同一家店一直买东西直到售罄。[trick1]二进制的话如果一来就把预付的这部分钱一起考虑了,由2^i件不能转移,但是由2^i+2^j件可以转移的情况就会被漏掉。可能是因为我习惯用加时间戳的方式来写才会有这样的问题。此题正解是转移到另外一个dp数组上原创 2013-09-27 15:34:32 · 459 阅读 · 0 评论 -
POJ 1155 TELE
树上分组背包,没什么好说的。坑:Discuss里面提到的滚动数组减少内存怎么破。/* Author : Speedcell Update : 2013-05-30Version : soppYcell 2.2(a)*/#include #include #include #include #include #include #include #include原创 2013-09-24 10:31:57 · 381 阅读 · 0 评论 -
POJ 2378 Tree Cutting
找树的重心,树的重心是去掉改点之后产生的各个分支大小都不超过N/2的点。回溯统计在已知父节点的情况下以各点为根的子树总大小和各分支的最大大小就好了,别忘了父节点那边的也算是一个分支。/* Author : Speedcell Update : 2013-05-30Version : soppYcell 2.2(a)*/#include #include #include原创 2013-09-17 16:05:21 · 416 阅读 · 0 评论 -
HDU 4739 Zhuge Liang's Mines
这不就是个背包么!!!!!/* Author : Speedcell Update : 2013-05-30Version : soppYcell 2.2(a)*/#include #include #include #include #include #include #include #include #include #include #includ原创 2013-09-15 17:39:02 · 2057 阅读 · 1 评论 -
ZOJ 3703 Happy Programming Contest
裸01背包,写的时候不知道哪里写残了,一直WA……/* Author : Speedcell Update : 2013-04-18Version : soppYcell 2.1(b)*/#include #include #include #include #include #include #include #include #include #includ原创 2013-05-07 17:56:40 · 563 阅读 · 0 评论 -
HDU 1712 ACboy needs your help
同一个物品的各种转移不要累加在一起了就好。/* Author : Speedcell Update : 2013-05-07Version : soppYcell 2.2*/#include #include #include #include #include #include #include #include #include #include #i原创 2013-05-16 16:20:49 · 386 阅读 · 0 评论 -
POJ 1837 Balance
智商真心捉急,这题一看到钩子和砝码的个数都小于20,就钻进状压的死胡同没出来了。囧……其实也就是一个很简单的统计方案数,就是让砝码挂上去之后的力矩之和为0,负的就让他是负的好了。然后阶段维要留着,负数会造成完全背包的效果。然后就是处理一下负数,映射到大一点的区间就完事。分组背包也就是把阶段维留着的意思啊……囧……/* Author : Speedcell Update : 2013-0原创 2013-03-24 21:46:15 · 687 阅读 · 0 评论 -
POJ 3211 Washing Clothes
按颜色分组,然后同一组的自己撸吧,机器数为2的任务分配问题么。直接装箱之后从中间往两边找……/* Author : Speedcell Update : 2013-03-23Version : soppYcell 2.1*/#include #include #include #include #include #include #include #include原创 2013-03-24 21:49:00 · 664 阅读 · 0 评论 -
ZOJ 3623 Battle Ships
比赛的时候写脑残了,其实挺简单的一题。变量有三个,时间,生命值和攻击力,时间是肯定要存的然后比较之后觉得存攻击力的话专一起来方便一些。然后就木有然后了,状态设计为dp[i][j]表示当前时间为i攻击力为j所剩余的最小生命值,当然小于等于0的时候就表示已经挂了。输出答案自己很好找。另外,转移来自两个方面,以方便是从当前时间直接转到+1时间,这个不造新的舰船,还有就是制造了新的舰船的情况,直接在制造时原创 2013-03-24 17:24:16 · 895 阅读 · 0 评论 -
HDU 2126 Buy the souvenirs
简单2维背包,统计方案数,无槽点……#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-03-21 10:51:41 · 672 阅读 · 0 评论 -
HDU 3466 Proud Merchants
每件物品有一个限制,只有当你当前现金大于qi的时候才会卖给你。这题好好想了一下,跟之前做过的一道题有些类似。考虑简化版,有两个物品(p1,q1,v1),(p2,q2,v2),然后物品1先放的话,物品2就可以借助物品1产生的各种状态来进行下一步转移,而如果物品2的q2值过高,在这个[q2,m]的区间内都不存在物品1造成的新状态的话,那么物品1的状态就没有得到利用。而如果交换顺序,先放了物品2,那原创 2013-03-21 10:42:51 · 679 阅读 · 0 评论 -
HDU 2602 Bone Collector
赤裸裸的01背包……#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-03-19 12:25:41 · 703 阅读 · 0 评论 -
HDU 2639 Bone Collector II
还能有比我这更暴力的做法么,直接拿set来维护前k大值……这题的话不能拿一维的来做是因为每次转移会覆盖掉原来的状态,但是这些状态可能会构成新的状态,这些新状态虽然不是最优但是是前k大值,而一维可能会丢失这部分。#include #include #include #include #include #include #include #include #include原创 2013-03-18 21:53:53 · 1041 阅读 · 0 评论 -
POJ 3624 Charm Bracelet
同上题……#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-03-19 12:30:52 · 774 阅读 · 0 评论 -
POJ 2923 Relocation
两辆车要一起走,每辆车载重不能超限,问最少多少趟。n小思状压,然后可以把所有状态的重量算出来,作为重构的新物品拿来01背包。但是如果直接这样的话,要分别枚举两辆车的状态和当前载重,是立方级的复杂度,略高。然后再进行一次重构物品,平方级地把两辆车能一起走的状态作为新的物品,然后就可以平方级的01背包了。#include #include #include #include #in原创 2013-03-18 21:50:53 · 1099 阅读 · 0 评论 -
POJ 3181 Dollar Dayz
最近各种无力,脑残了都……此题大数,无槽点……import java.io.PrintWriter;import java.math.BigInteger;import java.util.Scanner;public class Main{ static Scanner cin = new Scanner(System.in); static PrintWriter cou原创 2013-03-09 17:41:49 · 526 阅读 · 0 评论 -
HDU 2191 汶川大地震
裸的多重背包问题,直接上二进制优化吧,没事什么特别的。#include <iostream>#include <cstdio>#include <algorithm>#include <numeric>using namespace std;const int MAX = 102;struct _ { const int none = -1; int money, dp[MAX]原创 2015-08-02 20:53:05 · 325 阅读 · 0 评论