ctsc 1997 dp

G - Cut and Reorder 状压DP

我是链接 一眼状压DP,选出一些a从前往后塞,f[i][j]表示选出的a状态为i,且结尾为j时最小花费 转移就看上一个状态结尾和当前结尾在a里的下标是否顺着挨着,不是顺着挨着就要加个c 这样会tle #include<bits/stdc++.h> #define int long long usin ......
Reorder Cut and

little bird —单调队列优化dp

对于这道题可以很容易写出状态转移方程。但直接转移会超时,所以需要单调队列优化。这里的单调队列采取左闭右开写法,容易理解。 怎么做呢?常规取出队头决策就不多说了。怎么判断当前决策是否更优呢?当状态较优秀且树高比较高,就可以考虑去掉尾巴。 代码: #include <bits/stdc++.h> #de ......
队列 little bird

DP做题记录

蒟蒻DP太菜了QAQ。 一点体会:DP就是如何通过最少的信息确定最优解。 P5664 [CSP-S2019] Emiya 家今天的饭 思考了一下,发现第3个要求很难直接搞,于是考虑正难则反,用总方案数减去不符合要求的方案数。求总方案数: \(g_{i,j}\) 表示在前 \(i\) 行中选 \(j\ ......

P3842-DP【黄】

想搜索到最后一层,就必得先完成前面层的搜索任务,这构成了对状态转移的启示,即当前层的DP值应该是此前层转移过来后得到的最佳值。 但这道题看数据范围应该不能用二维数组,抱着侥幸的心理我使用了动态二维数组,dpij表示以第i层第j个为终点时的答案,结果MLE了,喜提42分,详见CODE-1。 后来意识到 ......
3842 DP

状态机模型DP

//http://ybt.ssoier.cn:8088/problem_show.php?pid=1302 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int dp[N][3][3],n,w[N],t; int m ......
模型 状态

[题解] AT_dp_w Intervals

Intervals 有 \(m\) 条形如 \((l, r, a)\) 的限制,表示如果 \(s_{[l, r]}\) 中有 1 就会有 \(a\) 的价值。 你要求长度为 \(n\) 的 01 串的价值的最大值。 \(n, m \le 2 \times 10^5\)。 将每个限制挂到右端点上,在右 ......
题解 Intervals AT_dp_w AT dp

To_Heart—总结——连通块 dp(抑或 连续块 dp)

简介 有一类问题,他们需要计算满足在序列上插入给定顺序的元素,其贡献/限制只与两旁的元素有关,但元素插入的位置是不一定的,所以会有代价的最值和方案数的统计。而对于这类问题,我们其实可以不关心每一次插入的具体位置在哪里,而只关注他的相对位置(比如在某个数左边、在某个数左边且与其相邻之类的),从而将状态 ......
To_Heart Heart To

区间 DP、环形 DP

区间 DP 区间 DP 是可以由小区间的结果往两边扩展一位得到大区间的结果,或者由两个小区间的结果可以拼出大区间的结果的一类 DP 问题 往往设 \(dp[i][j]\) 表示处理完 \([i,j]\) 区间得到的答案,按长度从小到大转移 因此一般是先写一层循环从小到大枚举长度 \(len\),再写 ......
环形 区间 DP

【动态规划】【动态 DP】 CF750E New Year and Old Subsequence

题目描述 定义数字串是好的当且仅当其包含子序列 2017 ,不包含子序列 2016。 定义数字串的丑陋值为最少删掉几个字符,它才能是好的,如果一直不能,就是 \(-1\) 。 给定数字串 \(t\) ,长度为 \(n\) ,\(q\) 次询问求 \([l,r]\) 的丑陋值。 \(1 \leq n, ......
动态 Subsequence 750E Year 750

DP查缺补漏之LCS状态重叠

DP查缺补漏之\(LCS\)状态重叠 状态假设 \(F[i][j]\)为\(a\)串中前\(i\)个字符,\(b\)串中前\(j\)个字符构成的\(LCS\) 状态转移 \(F[i - 1][j - 1] + 1\) 即当且仅当\(a[i] = b[j]\)时,从两个序列的减去当前的字符加一推出 \ ......
状态 LCS

DP查缺补漏之LIS状态记录

DP查缺补漏之\(LIS\)状态记录 前置知识 状态假设 \(F[i]\)为以\(a[i]\)为结尾的最长上升子序列长度。 状态转移 \(F[i] = max(F[j] + 1, F[i]) (j < i)\) 很好理解,即\(i\)之前的所有以\(a[j]\)结尾的最长上升子序列中取最大,再加上\ ......
状态 LIS

数位DP

目录数位DP第一个例题 数位和第二个例题 数数相关资料例题综合运用模板题 数位DP 数位DP用于数字的数位统计,如果题目和数位统计有关,那么可以用数位DP思想,把低位的统计结果记录下来,在高位计算的时候直接使用低位的结果 感觉很抽象啊,而且还有点难啊啊啊。下面给出的几个例题再理解理解! 数位动态规划 ......
数位

Atcoder Beginner Contest 321 G - Electric Circuit 题解 - 状压dp | 指定最低位

为了更好的阅读体验,请点击这里 题目链接:G - Electric Circuit 看到了 \(N\) 的数据范围,因此是显然的状压 dp。 不妨设 \(f_S\) 为仅使用 \(S\) 集合中的所有点,能够连成恰好 \(1\) 个连通块的方案数。\(g_S\) 为仅使用 \(S\) 集合中的所有点 ......
题解 Beginner Electric Atcoder Contest

DP难题:颜色的长度

颜色的长度 Color Length 题面翻译 输入两个长度分别是 $n$ 和 $m(n,m\leq 5000)$ 的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部。 例如,两个颜色序列 GBBY 和 YRRGB,至少有两种合并结果:GBYBRYRGB 和 YR ......
长度 难题 颜色

20231108数数与dp题笔记

数数与dp CF294C Shaass and Lights 记被分成的 \(m+1\) 段每一段的长度为 \(l_i\) 答案为 \[\frac{(n-m)!}{\prod\limits_{i=1}^{m+1}l_i!}\times \prod\limits_{i=1}^{m+1}2^{l_i-1 ......
20231108 笔记

DP无思路题汇总

DP无思路题汇总 即只能完全靠题解想出做法的题目。 P5020 NOIP2018 提高组 货币系统 P2851 USACO06DEC The Fewest Coins G ......
思路

CTSC2006 歌唱王国

[Luogu P4548 CTSC2006] 歌唱王国 提前约定:\(\text{border}\) 指的是公共前后缀。 题意 一个无限长的字符串 \(S\),其中每个字符都是 \([1,n]\) 中的一个随机整数,求对于给定的字符串 \(t\),\(S\) 中包含 \(t\) 的最短前缀的期望长度 ......
CTSC 2006

DP 与计数

NFLSOJ A CF294C Shaass and Light 考虑初始已点亮的灯将所有剩下的灯划分成的连续段。除开头结尾外,每个长为 \(l\) 的连续段有 \(2 ^ l\) 种操作序列。开头结尾的连续段只有 \(1\) 种操作序列。从前往后将所有的操作序列归并到全局的操作序列里,拿组合数随便 ......
DP

SP15637 GNYR04H - Mr Youngs Picture Permutations(线性 dp)

题目 求方案数,考虑 dp —— 状态设计和边界 —— 题目告诉了一个很显然的性质: 每一排从左至右保证高度单调递减 每一列从后往前保证高度单调递减 那么可以发现,对于每一行,每一列,一定是按高度顺序插入,并且是连续插入,因为如果不连续,就无法保证单调递减的性质 同时,它给出了另一个性质 : \(N ......
线性 Permutations Picture Youngs 15637

DP练!习!

DP练!习! 都是水题啊 Made By M1kuFan 1 洛谷 P2513 求长度为 \(n\) ,逆序对个数为 \(K\) 的排列有多少个,答案对 \(1e9 + 7\) 取模 其中:\(1 \le n,K\le100\) 仅考虑从大到小向序列中插入每个数的位置,当前插入到了第 \(i\) 个 ......

P2196-DP【黄】

清醒了一点后我又写了一道黄色DP题,做出来了,还行,开心不少了... 中途暴露出一些问题 1、深搜过程中既然用了二维数组,那么深搜时就应该用二维循环取最优解,而不是只从最后一行中进行一维循环取最优解。 2、dfs递归的过程中应该用dfs!!!不应该像个智障一样的忘了用dfs,直接用dp数组忘了递归了 ......
2196 DP

P1616-DP【橙】

这道题好几天前就写出了记搜代码,但是理论上空间恰好够,实际上不论是用new-delete还是malloc-free,都有1~2个点MLE了(最抽象的是一开始MLE两个点,我把数组两个下标调换顺序后理应得到相同的分数,但实际上...竟然变成只MLE一个点了...离谱至极),看来动态内存不是那么好使,他 ......
1616 DP

比较典的区间dp

P1220 关路灯 很典的一道题,但是以前居然不知道。 数据范围很小,可以直接搜索通过,加一些奇奇怪怪的贪心策略和剪枝即可和正解差不多速度通过。 \(Code_violent\) ll ans=9e18; int n,st,loc[51],p[51]; void dfs(int x,ll t,ll ......
区间

【动态规划】状态压缩DP(状压dp)

还在更新ing 一、引入 在动态规划状态设计中,若状态是一个集合,例如 \(S=\) { \(1,0,1,1,0\) } ,则表示第 \(1、2、4\) 个节点被选中(从右往左对应 \(0 \sim 4\) 号节点)。若集合的大小不超过 \(N\) ,则集合中的每个元素都是小于 \(K\) 的正整数 ......
状态 动态

【动态规划 & 换根dp】Change Root DP

还在更新ing 前言 此乃小 Oler 的一篇小小算法随笔,从今日后,还会进行详细的修订。 一、简单介绍(change root dp) 如需了解树形dp的,本蒟蒻毛遂自荐,万字大文动态规划【树形dp】Tree DP ~~~详解 换根dp,又叫二次扫描,是树形DP的一种,是一种用来求解树上各点到其他 ......
动态 Change Root amp DP

区间DP入门

石子合并 别人讲过太多了,蒟蒻就不说了。 Polygon 这题跟石子合并类似,只是多输出了个先清除哪条边可以使得值最大。 因为我们不确定先删那一条,我们就再复制一遍添到输入的结尾,就变成了 $2 \times N - 1$。 我们思考最大值是由哪些贡献的。 最大值与最大值运算。 最小值乘上最小值(因 ......
区间

状态压缩DP

关于状态表示形式的优化方式。 使用场景:需要记录不超过二进制数位(通常22位以内)的bool信息的DP问题。 常见的位操作 简单操作 任何二进制数位 &1 得到它本身。 任何二进制数位 ^1 则取反。 任何二进制数位 &0 则赋值为0。 任何二进制数位 |1 则赋值为1。 混合操作 (n>>k&1) ......
状态

DP 专项练习

[USACO23OPEN] Pareidolia S 对于这种题,两种思路,一种是直接 \(dp\),一种是考虑每个 bessie 产生的贡献。 显然直接考虑 bessie 产生的贡献难以解决 bbessie 的情况,所以考虑 \(dp\)。 设 \(f_{i}\) 表示以 \(i\) 开头的字符串 ......
专项 DP

CF DP 题乱做(续更)

CF566F $1500$ 容易考虑到 $n^2$ 做法:设 $dp_i$ 为第 $i$ 个数选的答案,对于排好序的序列,枚举前面的数 $a_j$,如果 $a_j|a_i$ 就转移,时间复杂度易知 $O(n^2+n\log n)$。 由于 $a$ 至于很小,延续刚才的思路,设 $dp_i$ 为选值为 ......
CF DP

P1802-DP【橙】

1.又是一道因为写了异常剪枝而调了好久的题,以后再也不写异常剪枝了,异常情况压根不该出现,所以针对出现的异常情况进行补救的异常剪枝是一种很容易出错的行为,做为两手准备也就罢了,但第一次写成的代码必须能在没有异常剪枝的情况下算出正确结果才行! 2.还提出了一个专门针对记搜的编码规范:编写记忆化搜索的时 ......
1802 DP