动态规划
jvruo_shabi
这个作者很懒,什么都没留下…
展开
-
[SDOI2009]Bill的挑战
某送门看数据范围是一种优良的传统,本题 N≤15N\leq 15N≤15,状压无疑了QAQ。然后我们看到:刚好与 KKK 个串匹配的个数,就想到了容斥。感觉自己思维好跳跃啊不过似乎也是正常思路?由于是与 KKK 个串匹配,不能单纯的“奇加偶减”,我们用 f[i]f[i]f[i] 表示恰好与 KKK 个串匹配的串的个数,Cnt[i]Cnt[i]Cnt[i] 表示与至少 KKK 个串匹配的串的个数。画几个韦恩图(不过挺难画的),可以发现对于每个表示与至少 KKK 个串匹配的个数的“圆圈”都有交集,所以原创 2020-11-17 19:52:06 · 141 阅读 · 0 评论 -
[CSP- 2020]方格取数(number)
虽然题很水,但是看到考场上那么多人打挂了并且也是CSPT4于是来水一篇题解。话说这道题竟然有无数巨佬SPFA误终身……我们发现单纯的状态 f[i][j]f[i][j]f[i][j] 不能记录哪些方格已经走过,又发现在每一列,走过的方格一定是连续区间,所以说状态改为:f[i][j][0]f[i][j][0]f[i][j][0] 表示当前在 iii 行 jjj 列,在第 jjj 列可以往上下走的能取到最大值f[i][j][1]f[i][j][1]f[i][j][1] 表示当前在 iii 行 jjj 列原创 2020-11-11 16:39:20 · 1461 阅读 · 2 评论 -
[BZOJ 2259]新型计算机
写在前面的ps:你以为set常数大?可是这个程序加了 freadfreadfread 跑得飞快(其实不加也挺快)。前言:本文使用了动态规划+数据结构来解决此题,如果对数据结构不感兴趣请转其它图论题解代码比我短多了。另外此题我用了4天超过十个小时来做和调试这道题,求安慰(AC:这个我会正文:看到这题正常人第一反应就是暴力规划:fif_ifi 表示将序列前 iii 个数字设为合法序列的最小代价。不难证明最优子结构性质,无后效性显然。方程:f[i]=minf[i] = minf[i]=min{f[原创 2020-11-08 10:22:44 · 211 阅读 · 0 评论 -
UVA1627 团队分组 题解
这份代码在vjudge上过了,洛谷RJ出锅了交不起。传送门思路来源紫书。这道题其实不难(那你……嗯,对的,把话说在前面,这题输出坑死JB人,每组测试数据输出后要输出两个换行,末行一个换行。然后我先解释一下紫书为什么要用“不相互认识关系“来建图。因为两个人认识不一定在一个组,但是不认识一定在不同的组。无解判断:对于这道题,无解只有一种可能,就是人们的“不相互认识关系”发生冲突。即当图出现一个由奇数条边构成的环的时候,问题无解。具体来说,1和2不相互认识,2和4也是,4和1也是,那么这原创 2020-10-29 11:24:19 · 244 阅读 · 0 评论 -
[CQOI2011]放棋子
这道题乍一看就是动规题。显然有多个颜色棋子的情况由于棋子之间会相互影响不好处理,我们先考虑只有一种颜色的情况。设 s[k]s[k]s[k] 表示第 kkk 种颜色棋子的数量。C[m][n]C[m][n]C[m][n] 表示 CmnC^n_mCmn 的值。f[k][i][j]f[k][i][j]f[k][i][j] 表示把第 kkk 种颜色的棋子放完占 iii 行 jjj 列的方案数。这 iii 行 jjj 列不一定是要挨在一起的。我们可以用总的方案数 Cm×nkC^k_{m\times n}C原创 2020-10-24 21:21:21 · 231 阅读 · 0 评论 -
【概率】搜集卡片
Description童年时代,你是否热衷于搜集零食里的卡片呢?比如你集齐了108张水浒英雄的卡片,你会感到非常有成就感,而且还可以去兑换奖品。作为一个聪明的小孩,你注意到如果你要赢得奖品,你必须买很多很多的零食才能搜集齐卡片。要赢得奖品,你估计要买多少袋零食才能成功?Input Format第一行,一个整数N(1 <= N <= 20), 表示总共有N种不同的卡片。第二行,N个空格间隔的实数p1, p2, …, pN, (p1 + p2 + … + pN <= 1), 表示零食原创 2020-10-18 19:41:40 · 1123 阅读 · 0 评论 -
UVA1099 【Sharing Chocolate】分享巧克力
洛谷博客食用传送门题目传送门这道题一看 n≤15n\leq 15n≤15,状压DP无疑了……我们可以设出一个显而易见的状态:f[x][y][s]f[x][y][s]f[x][y][s] 表示在 x×yx\times yx×y 的矩形中分成 sss 中的每一块巧克力是否可行。这样空间显然会炸,我们可以发现,fff 数组中保存了太多的无用状态——有了 xxx 和 sss,yyy 就可以唯一确定了。这样只需要用 f[x][s]f[x][s]f[x][s] 表示在一条边长为 xxx 的矩形中分成 sss 中原创 2020-10-18 10:30:45 · 181 阅读 · 0 评论 -
【NOIP2017】宝藏
传送门这道题真的给我留下了创伤……废了4天七八个小时才AC……先发一张耀眼的AC图:啊心情好多了。另外听说某巨佬爆搜跑了0ms,n在20以内都秒过……先%为敬,tql。好了我们先看看数据范围,n≤12n\leq 12n≤12,状压DP无疑了……看了数据范围再看题面,这道题类似最小生成树。kruskal肯定不行,prim也会被卡掉。最后连出的边一定形成一棵树,在计算过程中我们要在状态中保存当前树的高度计算题目中的 LLL 值。所以状态:设 f[i][S]f[i][S]f[i][S] 表示树高原创 2020-10-17 21:11:51 · 289 阅读 · 0 评论 -
NKOJ P4135 加法游戏
DP好毒瘤题!问题描述何老板和你玩一个加法计算游戏。游戏开始,何老板手中有一个整数a,你手中有一个整数b。每一轮,两人各自都从区间[-k,k]中任意取出一个整数,加到自己手中的数字上。游戏总共进行了t轮。何老板希望,游戏结束时,他手中的数字比你手中的数字大。问满足何老板希望的游戏方案数有多少?如果两场游戏中,存在一轮,某个玩家取的数字不同,我们就认为这是两场方案不同的游戏。比如:下面两场游戏,a=5,b=4,t=2,两人最终取得的分数没有变化,但我们认为这是两场不同的游戏。第一场:何:原创 2020-10-03 12:17:08 · 186 阅读 · 0 评论 -
UVA1412 基金管理 Fund Management
我是按照紫书思路搞得,不过没抄代码,也因此把所有的坑都踩了一遍我tcl。做法和紫书大致相同,不过初始化的时候代码更加简洁并且效率较高,动态规划主程序采用填表法而非刷表法。思路自己看紫书去,解释得很详细了。其实就是 d[i][p]d[i][p]d[i][p] 表示第 iii 天时手头股票集合为 ppp 时能获得的最大现金。另外状态其实不会超过15000个,所以数组不用开那么大。buy[i][k]buy[i][k]buy[i][k] 表示状态 iii 买股票 kkk 后的状态,sell[i][k]sell原创 2020-09-26 12:56:53 · 318 阅读 · 1 评论 -
NKOJ 1361 帮帮吉米(Help Jimmy)
话说这道题百度上好像没几个题解,大多数题解又只有代码和少量文字,于是乎我就来水题解了。Description“Help Jimmy” 是在下图所示的场景上完成的游戏。景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX米,不然原创 2020-09-15 18:52:13 · 310 阅读 · 1 评论 -
UVA1220 Hali-Bula的晚会 Party at Hali-Bula
题目传送门首先题目说得明明白白“形成一个树状结构”,树状DP是没逃了……在这里我给出的是紫书思路的一种实现,具体请看紫书P282。d(u,0)d(u,0)d(u,0) 表示以 uuu 为根的子树中,不选 uuu 点能邀请的最大人数。f(u,0)f(u,0)f(u,0) 表示方案是否唯一(1表示唯一,0表示不唯一)。d(u,1)d(u,1)d(u,1) 表示以 uuu 为根的子树中,选 uuu 点能邀请的最大人数。f(u,1)f(u,1)f(u,1) 表示方案是否唯一。状态转移方程挺好写的,设 SS原创 2020-09-05 21:16:29 · 895 阅读 · 1 评论 -
NKOJ 用魔法生成回文序列
用魔法生成回文序列Time Limit : 1000MS Memory Limit : 65536KB Description小Z上英语课思考数学问题被英语老师发现啦~英语老师:「你这么爱胡思乱想我问你一道英语题吧」小Z想跑,但是已经来不及了。英语老师:「我们定义一个回文串是正反读起来相同的字符串」小Z:「这个简单,不就是像 “abba” "aba"这样的吗」英语老师: 「现在给你一个长度为n的字符串,要你求出他的最长回文子序列」小Z:「子序列是不连续的吧? 好的我知道了」小Z轻松.原创 2020-08-23 19:53:42 · 584 阅读 · 0 评论 -
NKOJ P1006 护卫队
NKOJ 1006 护卫队Description护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥。因为街道是一条单行道,所以任何车辆都不能超车。桥能承受一个给定的最大承载量。为了控制桥上的交通,桥两边各站一个指挥员。护卫车队被分成几个组,每组中的车辆都能同时通过该桥。当一组车队到达了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。每辆车的重量是已知的。任何一组车队的重量之和不能超过桥的最大承重量。被分在同一组的每一辆车都以其最快的速度通过该桥。一组车队通过原创 2020-08-24 21:10:44 · 328 阅读 · 0 评论 -
NKOJ P1835 【USACO3.3.5】A Game游戏 IOI‘96
Description有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的两端取数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。编一个执行最优策略的程序,最优策略就是使玩家在与最好的对手对弈时,能得到的在当前情况下最大的可能的总分的策略。你的程序要始终为第二位玩家执行最优策略。Input Format第一行: 正整数N, 表示序列中正整数的个数。第二行至末尾: 用空格分隔的N个正原创 2020-08-25 12:00:24 · 374 阅读 · 0 评论 -
区间DP笔记
文章目录区间DP的引入例题总结:习题:区间DP的引入区间DP是一种特殊的DP,与普通的DP在阶段的划分上往往有所不同。先来看个栗子:洛谷P1808 一道人尽皆知的区间DP模板题这道题大家都做过,通过这一道题可以体会到区间DP的特殊:他是按照子区间的长度划分阶段,不是按找起点终点等划分。在很多DP题中,一个区间的答案往往取决于他的子区间的答案,于是区间DP就诞生了。 这道题的分析:(做过的巨佬请绕行)贪心显然有问题,不采用。fi,jf_{i,j}fi,j 表示区间 i,ji, ji,j原创 2020-08-29 16:02:12 · 463 阅读 · 1 评论 -
NKOJ P1048 筷子
DescriptionA先生有很多双筷子。确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的。这天,A先生家里来了 KKK 个客人,A先生留下他们吃晚饭。加上A先生,A夫人和他们的孩子小A,共 K+3K+3K+3 个人。每人需要用一双筷子。A先生只好清理了一下筷子,共 NNN 根,长度为 T1,T2,T3,……,TNT_1,T_2,T_3,……,T_NT1,T2,T3,……,TN .现在他想用这些筷子组合成 K+3K+3K+3 双,使每双的筷子长度差的平方和最小。(怎么不是和最小?原创 2020-08-27 19:14:41 · 343 阅读 · 0 评论 -
NOIP 2017 普及组 跳房子
颓了一天整整六个小时颓出来的题,写篇颓废纪念一下是,的,没,错,这道题花了我tm我^{tm}我tm一整天。好了不废话了,直接给出题目链接如果想用更狠的官方数据来测,可以进这个OJ老实说,蒟蒻感觉这题目有些绕……一上来看到数据范围我吓呆了,n≤500000n \leq 500000n≤500000……考虑二分最少所花的金币 ggg。左边界显然为1,右边界是 ddd 与最后一个点的距离 - ddd 中的较大值。其实直接搞成那啥十万也可以。我们显然要用一个 checkcheckcheck 函数检原创 2020-09-01 14:20:06 · 682 阅读 · 0 评论