随笔分类 -  动态规划—序列型

摘要:题意 "题目链接" Sol 设$f[i][j]$表示前$i$个位置中,以$j$为结尾的方案数。 转移的时候判断一下$j$是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩阵的前缀积(这题的逆矩阵炒鸡好求) 这样就可以$n 10^3$ 发现相邻两个矩阵只有一行不同,那么其他的可以直接 阅读全文
posted @ 2019-03-29 08:46 自为风月马前卒 阅读(427) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 这个题可能是TJOI2018唯一的非模板题了吧。。 考虑LCS的转移方程, $$f[i][j] = max(f[i 1][j], f[i][j 1], f[i 1][j 1] + (A_i = B_j))$$ 也就是说我们如果知道了前一个列向量$f[i 1]$以及$A_i 阅读全文
posted @ 2019-03-02 14:09 自为风月马前卒 阅读(362) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 早年NOIP的题锅好多啊。。 这题连有向边还是无向边都没说(~~害的我wa了一遍~~) 直接$f[i]$表示到第$i$个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个$n^2$的算法过了一道$n \leqslant 20$的题??。。 阅读全文
posted @ 2018-10-25 14:35 自为风月马前卒 阅读(438) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 直接用$f[i][0/1]$表示到第$i$个位置,该位置是以上升结尾还是以下降结尾 转移的时候只需枚举前一个即可 cpp include include using namespace std; const int MAXN = 1e6 + 10; inline int 阅读全文
posted @ 2018-10-25 14:17 自为风月马前卒 阅读(286) 评论(0) 推荐(0)
摘要:题意 ~~[题目链接]~~这怎么发链接啊。。。。。 Sol 枚举一个断点,然后类似于LIS一样dp一波 这个边界条件有点迷啊。。fst了两遍。。。 cpp include using namespace std; const int MAXN = 1e5 + 10, INF = 1e9 + 7; i 阅读全文
posted @ 2018-10-11 21:39 自为风月马前卒 阅读(304) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 很显然的一个dp方程 $f_i = min(f_j + (sum_i sum_j 1 L)^P)$ 其中$sum_i = \sum_{j = 1}^i len_j + 1$ 这个东西显然是有决策单调性的。 单调队列优化一下 我好像已经做过三个这种类型的题了,而且转移的时候 阅读全文
posted @ 2018-10-09 21:27 自为风月马前卒 阅读(322) 评论(0) 推荐(1)
摘要:题意 "题目链接" 给定一个长度为$n$的序列。你需要将它分为$m$段,每一段的代价为这一段内相同的数的对数,最小化代价总和。 $n define LL long long using namespace std; const int MAXN = 1e5 + 10; inline int read 阅读全文
posted @ 2018-10-09 18:57 自为风月马前卒 阅读(575) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 比较套路的一个题。 第一问二分答案check一下 第二问设$f[i][j]$表示前$i$个数,切了$j$段的方案数,单调队列优化一下。 转移的时候只需要保证当前段的长度小于最大限度即可。 cpp include using namespace std; const int 阅读全文
posted @ 2018-10-09 09:10 自为风月马前卒 阅读(293) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 刚开始的思路是$f[i][j]$表示到第$i$位,LIS长度为$j$的方案。 然而发现根本不能转移,除非知道了之前的状态然后重新dp一遍。。 题解,,,挺暴力的把,直接把求LIS过程中的单调栈当成一个状态压进去了。。 自己真是不长记性,明明已经被这个单调栈坑过一次了。。 阅读全文
posted @ 2018-09-27 16:46 自为风月马前卒 阅读(367) 评论(1) 推荐(1)
摘要:题意 题目链接 给定n个选手,将他们分成若干只队伍。其中第i个选手要求自己所属的队伍的人数大等于a[i]人。 在满足所有选手的要求的前提下,最大化队伍的总数。 注:每个选手属于且仅属于一支队伍。 Sol 直接dp,$f[i]$表示到第$i$个人最多分成几组 很显然,一定是从上一个能放的位置转移而来 阅读全文
posted @ 2018-09-12 21:01 自为风月马前卒 阅读(450) 评论(1) 推荐(0)
摘要:题意 题目链接 给出一堆字符串,若一个串是另一个串的前缀 ,那么它们可以连接在一起 问最大的链接长度 Sol LIS沙比提其实是做完了才看出是LIS 阅读全文
posted @ 2018-09-11 14:37 自为风月马前卒 阅读(383) 评论(0) 推荐(0)
摘要:题意 题目链接 回文词是一种对称的字符串。任意给定一个字符串,通过插入若干字符,都可以变成回文词。此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数。 比如 “Ab3bd”插入2个字符后可以变成回文词“dAb3bAd”或“Adb3bdA”,但是插入少于2个的字符无法变成回文词。 注:此问 阅读全文
posted @ 2018-09-11 14:24 自为风月马前卒 阅读(277) 评论(0) 推荐(0)
摘要:题意 题目链接 Sol maya普及组的dp都要想很长时间,我真是越来越菜了qwq 设$f[i][j]$表示当前到第$i$个位置,剩下$j$个左括号没被匹配 转移的时候判断一下即可 阅读全文
posted @ 2018-09-09 17:17 自为风月马前卒 阅读(356) 评论(0) 推荐(0)
摘要:Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm)。那么就称P为S的一个上升序列。如果有多个P满足条件,那么我们想求字典序最小的那个。任务给出 阅读全文
posted @ 2018-07-09 21:31 自为风月马前卒 阅读(289) 评论(0) 推荐(0)
摘要:题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00000011111 输出样例#1: 复制 6 输入样例#1: 复制 01010101010 0000 阅读全文
posted @ 2017-11-28 20:13 自为风月马前卒 阅读(376) 评论(0) 推荐(0)
摘要:总时间限制: 10000ms 内存限制: 65536kB描述给定两个整数序列,写一个程序求它们的最长上升公共子序列。当以下条件满足的时候,我们将长度为N的序列S1 , S2 , . . . , SN 称为长度为M的序列A1 , A2 , . . . , AM的上升子序列:存在 1 2 #include 3 #include 4 #include 5 #include 6 #includ... 阅读全文
posted @ 2017-07-18 19:45 自为风月马前卒 阅读(339) 评论(0) 推荐(0)
摘要:Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53247 Accepted: 22084 Description A subsequence of a given sequence is the given sequence w 阅读全文
posted @ 2017-07-18 18:41 自为风月马前卒 阅读(168) 评论(0) 推荐(0)
摘要:首先这种做法只能针对稀疏序列, 比如这种情况: abc abacabc。 会输出5 ,,,,就比较尴尬, 阅读全文
posted @ 2017-07-17 20:22 自为风月马前卒 阅读(737) 评论(0) 推荐(1)
摘要:时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 时间限制: 1 阅读全文
posted @ 2017-07-17 13:30 自为风月马前卒 阅读(296) 评论(0) 推荐(0)
摘要:题目背景 无 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。没对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助 阅读全文
posted @ 2017-04-25 19:50 自为风月马前卒 阅读(212) 评论(0) 推荐(0)

Contact with me