随笔分类 - 基础算法 -- 动态规划
摘要:【LOJ 6374】网格(二项式反演,容斥) 题面 "LOJ" 要从$(0,0)$走到$(T_x,T_y)$,每次走的都是一个向量$(x,y)$,要求$0\le x\le M_x,0\le y\le M_y$,并且不能不走。同时有$k$个限制,表示不能同时$x=y=k_i$,保证所有$k_i$都是$
阅读全文
摘要:【HDU1693】Eat the Trees(插头dp) 题面 "HDU" "Vjudge" 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍。 题解 "这题" 的弱化版本吧。。。 因为可以任意分配哈密顿回路的数量,因此根本不需要再考虑插头的配对问题了,那
阅读全文
摘要:【BZOJ1814】Ural 1519 Formula 1 (插头dp) 题面 "BZOJ" "Vjudge" 题解 "戳这里" 上面那个链接里面写的非常好啦。 然后说几个点吧。 首先是关于为什么只需要考虑三进制状态,因为哈密顿回路是不可能出现自交的,因此对于当前的轮廓线一定直接分割了哈密顿回路的一
阅读全文
摘要:NOIP2015题解 Day1 神奇的幻方 magic 模拟裸题。~~我在NOIP切掉的第一道题~~ 子串 substring $dp$题。 设$f[i][j][k][0/1]$表示当前考虑$A$串的第$i$位,$B$串匹配了第$j$个字符,当前已经分了$k$段,当前$i$位置的字符是否在最后一段中
阅读全文
摘要:NOIP2014题解 Day1 生活大爆炸版石头剪刀布 rps 简单模拟题,注意细节 cpp include include using namespace std; inline int read() { int x=0;bool t=false;char ch=getchar(); while(
阅读全文
摘要:NOIP2013题解 Day1 转圈游戏 circle 快速幂模板题。 花匠 flower 发现要求的就是一个最长波动序列。考虑一种$dp$做法,设$f[i][0/1]$表示当前第$i$个位置,它是峰开始谷,转移的时候分类讨论一下。如果$h_i h_{i+1}$,那么$f[i][1]=f[i 1][
阅读全文
摘要:NOIP2010题解 显然原来都写过,都重新写一遍。 机器翻译 translate 一道很容易的模拟题,直接使用一个队列维护一下顺序就好了。 乌龟棋 tortoise 一个不难想的$dp$是设$f[i][a1][a2][a3][a4]$表示当前在$i$位置,四种卡牌分别用的张数为$a1,a2,a3,
阅读全文
摘要:【BZOJ2302】[HAOI2011]Problem C(动态规划) 题面 "BZOJ" "洛谷" 题解 首先如果$m=0$即没有特殊限制的话,那么就和 "这道题目" 基本上是一样的。 然而这题也有属于这题的性质,发现座位数和人数是一样的。 那么一种方案是合法的,当且仅当编号小于等于这个位置$i$
阅读全文
摘要:【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划) 题面 "BZOJ" "洛谷" 题解 乍一看似乎是可以求出每个东西是陷阱的概率,然而会发现前面走过的陷阱是不是陷阱实际上是会对当前状态产生影响的。考虑一下状压,因为出了是陷阱和不是陷阱,还有一种情况是未知。所以三进制状压。 $0$表示
阅读全文
摘要:【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划) 题面 "BZOJ" "洛谷" 题解 先看懂这题目在干什么。 首先BZOJ上面的题面没有图,换到洛谷看题就有图了。 不难发现都相邻的两个异色棋子放在一起的时候,此时的先手无论怎么动,后手直接把棋子靠上去,这样子一定是先手先无法移动。即
阅读全文
摘要:【BZOJ2427】[HAOI2010]软件安装(动态规划,Tarjan) 题面 "BZOJ" "洛谷" 题解 看到这类题目就应该要意识到依赖关系显然是可以成环的。 注意到这样一个性质,依赖关系最多只有一个,因此环状的依赖关系一定单独成环,其他点只可能将这个环作为依赖。 那么不成环的话,因为依赖关系
阅读全文
摘要:【BZOJ2208】[JSOI2010]连通数(Tarjan) 题面 "BZOJ" "洛谷" 题解 先吐槽辣鸡洛谷数据,我写了个$O(nm)$的都过了。 cpp include include using namespace std; define MAX 2020 struct Line{int
阅读全文
摘要:【BZOJ1925】[SDOI2010]地精部落(动态规划) 题面 "BZOJ" "洛谷" 题解 一道性质$dp$题。(所以当然是照搬学长PPT了啊 先来罗列性质,我们称题目所求的序列为抖动序列: 一个抖动序列的连续子序列还是一个抖动序列。 如果在一个抖动序列中$x$与$x+1$不相邻,那么交换两者
阅读全文
摘要:AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的。。。 AtCoder Grand Contest 011 A Airport Bus 翻译 有$n$个乘客到达了飞机场,现在他们都要坐车离开机场。第$i$个乘客到达的时间是$T_i$,一个乘客必须在$[
阅读全文
摘要:【BZOJ1820】[JSOI2010]快递服务(动态规划) 题面 "BZOJ" "洛谷" 题解 考虑无脑四维$dp$。$f[i][a][b][c]$,表示当前处理到第$i$个任务,三辆车的位置分别在$a,b,c$的最小值。 发现$a,b,c$中一定有一个等于第$i$个任务的位置,显然可以再咕掉一维
阅读全文
摘要:【BZOJ1802】[AHOI2009]checker(动态规划) 题面 "BZOJ" "洛谷" 题解 首先自己观察一波,发现如果有相邻两个格子都是红色的话,那么显然可以在任意位置都存在一个跳棋。可以让两个位置反复互相跳就好了。这样子第一问的答案显然就是$0$,否则的话第一问的答案就是偶数位置上$0
阅读全文
摘要:【BZOJ1799】[AHOI2009]同类分布(动态规划) 题面 "BZOJ" "洛谷" 题解 很容易想到数位$dp$,然而数字和整除原数似乎不好记录。没关系,直接枚举数字和就好了,这样子就可以把整除原数的余数直接记下来,然后就很好写了。 cpp include include include i
阅读全文
摘要:【BZOJ1560】[JSOI2009]火星藏宝图(贪心,动态规划) 题面 "BZOJ" "洛谷" 题解 既然所有的位置的权值都大于$0$,那么就可以直接贪心,按照行为第一关键字,列为第二关键字,来转移。显然如果一个点可以从某一列的一些位置转移过来,那么显然从行最大的那个位置转移过来是最优的,这个随
阅读全文
摘要:【BZOJ3832】[POI2014]Rally(拓扑排序,动态规划) 题面 "BZOJ,权限题" "洛谷" 题解 这题好强啊,感觉学了好多东西似的。 首先发现了一个图画的很好的博客, "戳这里" 然后我来补充一下这题到底怎么做。 首先这个图是一个$DAG$,我们对其进行拓扑排序,设$f[i]$表示
阅读全文
摘要:【BZOJ1559】[JSOI2009]密码(AC自动机,动态规划,搜索) 题面 "BZOJ" "洛谷" 题解 首先求方案数显然是构建$AC$自动机之后再状压$dp$,似乎没有什么好讲的。 现在考虑答案小于$42$的时候的怎么输出方案。 首先明白这样一点,如果一个位置可以不属于任何一个字符串而独立出
阅读全文