
===动态规划DP===
Loi_LXTT
这个作者很懒,什么都没留下…
展开
-
<DP版>codevs 3304 水果姐逛水果街Ⅰ
—听说这个题可以用DP也可以用线段树 *题目链接:http://codevs.cn/problem/3304/ —等会再打线段树版本的,现在先打DP版 —其实和<水果姐逛水果街Ⅱ>差不多的思想,只不过Ⅱ里面多了一个lca,还要在最后把两段链的max和min减一下更新答案,这个可以看做一个链状的Ⅱ,也就是树退化成了链,也可以用fa数组,不用建树,直接把fa[x][0]设为x-1就好了 ps:我原创 2017-09-25 19:57:28 · 310 阅读 · 0 评论 -
<划分型DP>【noip 2000】乘积最大
非高精版 高精版 dp[i][j]:前i个数添加j个乘号能得到的最大的乘积 转移时,要枚举前i个数中最后一个乘号的位置codevs上的数据比较水,连long long都不用开 codevs非高精版代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using原创 2017-09-29 11:04:57 · 384 阅读 · 0 评论 -
2017.10.16 队内互测 D4
题目来源: T1:codevs 2913 建筑抢修T2:codevs 1089 侦探推理T3:luogu 2246 T4:luogu 3927ps:T2没有重新做,太恶心了T1: —考试的时候脑子w了,瞪它了一个小时死活思考不下去,做完后面回来看这道题的时候,直接看不下去了。。最后随便贪心了一下结果就过了一个点。。。 其实这道题本身就是贪心。 优先选择结束时间早的,占用时间短的放在前原创 2017-10-16 21:40:24 · 411 阅读 · 0 评论 -
<错排>codevs 1697 ⑨要写信
去题目的传送门题面很长,说白了,就是要你求错排n个数的方案数 表示看完错排的通项公式的推导过程之后,整个人都不好了。但是这个题不用通项公式,只知道递推式就好了。 递推式:f[n]=(n-1)*(f[n-1]+f[n-2]) 来一波递推式的推导过程: 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置原创 2017-10-13 19:26:41 · 321 阅读 · 0 评论 -
<区间DP> 【noip 2007】 矩阵取数游戏(60%)
*题目链接http://codevs.cn/problem/1166/ 因为剩下的40%是高精度而且是恶心的高精度,我就先打60%吧。。。 一开始想的转移方程错了,调了一会发现不满足无后效性原则,一开始的想法是这样的: dp[i][j]是第i次取数,取的数是第j个的最大的答案,枚举第i-1次取的数,但是这样做不能满足j之前没有被取过,因此不可以 正确的转移方程: 对于每一行: dp[i]原创 2017-09-28 17:16:02 · 327 阅读 · 0 评论 -
<棋盘型DP> noip 2008 传纸条
——第一次学的时候觉得很难,现在看看转移方程也不是那么难理解了noip 2008 传纸条题目描述 Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐原创 2017-09-13 20:01:52 · 409 阅读 · 0 评论 -
<区间DP>【noip 2008】能量项链
题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头原创 2017-09-29 08:03:53 · 334 阅读 · 0 评论 -
<背包DP>codevs 1684 垃圾陷阱
去题面的传送门求最早什么时候出来? 把高度看做背包的容量,能量看做物品的价值。特判一下在使用这个“物品”时,能量是否大于等于现在的时间。注意读入的数据还要按照时间排一下序。一旦高度达到,立刻输出时间。如果一直没有找到可行的方案,直接输出dp[0]代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>原创 2017-10-23 14:22:39 · 272 阅读 · 0 评论 -
codevs 5251 WYW的数字金字塔
去题面的传送门比较水的DP f[i]以不大于i为底的方案数之和 易知:f[i]=f[i-1]+f[n/k]#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=1000000+10;long long t,p,n,k,ans;lo原创 2017-10-23 14:16:20 · 302 阅读 · 0 评论 -
<状压DP>codevs 2451 互不侵犯
题面的链接有点像八皇后,嗯,但是并不一样。 把每一行可以放的国王的情况压缩成二进制数,有国王用1表示,没有国王用0表示。 ①预处理在一行之内合法的情况。也就是不能有相邻的1。 听说正解是用dfs跑的,我直接打了一个for循环。n最大只有9,状态数最多有2^9,不会超时。每种状态存在exist数组里 ②预处理哪两种状态是可以挨着的,也就是上下两行可以同时存在的状态。同样记在一个数组里。上一个原创 2017-10-12 16:41:32 · 307 阅读 · 0 评论 -
<序列DP>codevs 2980 买帽子
–我也不知道这是什么类型的动态规划 –题目链接:http://codevs.cn/problem/2980/ –求一个串的最长回文子串 –相当等于把一个串倒过来,求他们两个的lcs(最长公共子序列) –这个很好想,不多解释了,一些小细节问题在代码里 –dp数组不用开在每一个串的结构体里,反过来的串也不用,都各自开一个数组,每次清空就可以了,也不耗时 –dp[i][j]表示处理到原串的第i原创 2017-09-25 17:21:45 · 267 阅读 · 0 评论 -
<DP>codevs 2189 数字三角形w
题面的传送门这是一道数字三角形对k取模后最大的题 添加一维状态,记f[i][j[k]为:到第i,j两个点,能否取模后得到k 状态转移:f[i][j][k]=f[i-1][j][(k-a[i])%mo] | f[i-1][j-1][(k-a[i])%mo] 当然,k要从0循环到mo-1 但是,如果我们的k-a[i]是负数怎么办?c++不能有负数下标,那么我们就把它再加上一个mo吧,这是常见的原创 2017-10-06 13:44:51 · 370 阅读 · 0 评论 -
<序列DP>O(nlogn)的最长上升子序列
可以提交的题目传送门(。﹏。*)不要问我为什么这么简单的题还要写博客,可我就是刚学会啊233 g[i]表示长度为i的上升子序列的最小的结尾,为什么是最小的呢?因为只有结尾越小,答案才会更优 这样,我们每for到一个数字,二分查找(可以直接用lower_bound)g数组中第一个大于等于他的位置,然后修改g[i]的值,如果没有,lower_bound会返回整个数组的第一个空的位置的指针,说明没有原创 2017-10-06 14:00:42 · 252 阅读 · 0 评论 -
<序列DP>codevs 4748 低价购买
这里是题面–这是一道计算不重复的最长下降子序列的方案数的题 –首先很容易想到,先计算最长下降子序列,然后遍历一遍f数组,如果f[i]==LDS,ans++ –但这样一定有重复的计算 –去重1: 记g[i]为以第i个数结尾的最长下降子序列的方案数,那么g[i]一定是由点g[j]转移而来,g[j]满足:j < i ,a[j] > a[i],f[j]==f[i]-1。但是,如果在a[i]前有k个原创 2017-10-06 10:21:56 · 275 阅读 · 0 评论 -
D2 2017.10.10内测
论什么叫做的时候一脸懵逼,一讲题发现并不难2333 T1(题目来源:poj 2709) 第一眼感觉不难。 打出来了发现最后一组不对。 咦?输出了7 哪里出了问题? 仔细一想,发现原来可以各种三色的不同原料搭配来得到灰色的,也就是说最后一组数据,不一定非得固定的三种颜料*7才能凑成333,其他的颜色搭配也可以使用,这样有很多浪费,肯定不是最优。 暴力搜索什么的?好像不可取 然后我很原创 2017-10-12 10:13:55 · 401 阅读 · 0 评论 -
2017.10.18 队内胡策 D5
昨天考的题,今天早晨才把T2调完,竟然卡了精度原题链接: T1:gjh自己出的(灵感来源:codevs 1742 爬楼梯 链接) T2:luogu 2656 采蘑菇 链接 T3:codevs 1456 隐藏口令 链接 T4:luogu 1984 烧水问题 链接T1 第一问DP,第二问随便打打贪心 结果我第二问贪心在模拟的过程中就打次了(第一次贪心模拟输给了DP)不多说 很简单 代码:原创 2017-10-19 10:28:55 · 354 阅读 · 0 评论 -
<划分DP>【noip 2001】codevs 1039 数的划分
去题面的传送门难得有一次DP题完全是自己想出来的。。23333要纪念一下 说一下思路吧: 刚开始,第一反应,定义了dp[i][j]表示划分数字i,划分j份的方案数。结果搞了半天发现没有办法转移 愣是忍住了没看题解 后来开始从1~6挨个看划分成几份时的方案数,想找一下规律来着。结果找着找着就发现了转移的方法。 我发现,在我手动找可能的情况时,为了判重,都是划分的后面的数一定比前面的数大或相原创 2017-10-13 21:50:26 · 305 阅读 · 0 评论