随笔分类 -  动态规划—思想型

摘要:题意 "题目链接" Sol $f[i][j]$表示匹配到第$i$个串,当前在主串的第$j$个位置 转移的时候判断一下是否可行就行了。随便一个能搞字符串匹配的算法都能过 复杂度$O(|S| K a_i)$ cpp include define Pair pair define MP(x, y) mak 阅读全文
posted @ 2019-03-01 15:01 自为风月马前卒 阅读(333) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 这题想还是不难想的,就是写起来很麻烦,然后去看了一下loj的最短代码表示只能Orz 首先不难发现一条性质:能够选择的区间一定是不断收缩的,而且新的可选区间一定是旧区间的某个位置划分而来的。 比如$A_{i 1} = x$,此时小于$x$的最大数为$l_{i 1}$,大于$ 阅读全文
posted @ 2019-02-26 21:49 自为风月马前卒 阅读(356) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol ~~每当出题人想起他出的HNOI 2018 Day2T3,他都会激动的拍打着轮椅~~ 读题比做题用时长系列。。。 $f[i][a][b]$表示从根到$i$的路径上,有$a$条公路未被翻修,$b$条铁路未被翻修 然后xjb转移一下 比较好奇为啥不会MLE.. cpp inc 阅读全文
posted @ 2019-02-23 20:42 自为风月马前卒 阅读(487) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 一个不太容易发现但是又很显然的性质: 如果有两个相邻的红格子,那么第一问答案为0, 第二问可以推 否则第一问答案为偶数格子上的白格子数,第二问答案为偶数格子上的红格子数 cpp include define Pair pair define MP(x, y) make_p 阅读全文
posted @ 2019-01-25 21:18 自为风月马前卒 阅读(352) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 感觉这个思路还是不错的 cpp include using namespace std; const int MAXN = 501, SS = 5e6 + 10; inline int read() { char c = getchar(); int x = 0, f = 阅读全文
posted @ 2019-01-15 19:46 自为风月马前卒 阅读(449) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 不会做Orzzzz 想到了和题解一样的方程,但是根本不会转移 具体题解看 "这里" 吧 大致思路就是先推一波性质,然后对于最后一个位置上的数$i$,分两种情况讨论一下:与$i 1$相邻 / 不相邻, cpp include define chmin(x, y) (x = 阅读全文
posted @ 2018-12-06 16:48 自为风月马前卒 阅读(206) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 首先不难想到一个dp 设$f[i][j]$表示选了$i$个 严格递增 的数最大的数为$j$的方案数 转移的时候判断一下最后一个位置是否是$j$ $$f[i][j] = f[i][j 1] + f[i 1][j 1] j$$ cpp for(int i = 0; i usi 阅读全文
posted @ 2018-12-04 10:05 自为风月马前卒 阅读(1828) 评论(0) 推荐(6)
摘要:题意 "题目链接" Sol 想不到想不到。。 首先在不考虑每个人的真是成绩的情况下,设$f[i][j]$表示考虑了前$i$个人,有$j$个人被碾压的方案数 转移方程:$$f[i][j] = \sum_{k = j}^n f[i 1][k] C_{k}^{k j} C_{N k}^{r[i] 1 (k 阅读全文
posted @ 2018-12-01 21:52 自为风月马前卒 阅读(1368) 评论(2) 推荐(3)
摘要:题意 "题目链接" 给出$n$个数,问最少选几个数,使他们的$gcd = 1$ Sol 好神仙啊qwq。 首先,如果答案存在,那么最多为$7$(因为前$7$个质数乘起来$ = 3e5$) 考虑dp,设$f[i][j]$表示选了$i$个数,他们$gcd = j$的方案数! 没错是方案数! 那么我们只要 阅读全文
posted @ 2018-10-30 07:54 自为风月马前卒 阅读(752) 评论(5) 推荐(1)
摘要:题意 "题目链接" Sol 非常妙的一道题目。 首先,我们可以把$C_{a_i + b_i + a_j + b_j}^{a_i + a_j}$看做从$( a_i, b_i)$走到$(a_j, b_j)$的方案数 然后全都放的一起dp,$f[i][j]$表示从$(i, j)$之前的所有点到$(i, j 阅读全文
posted @ 2018-10-08 11:05 自为风月马前卒 阅读(409) 评论(0) 推荐(0)
摘要:题意 题目链接 给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种,用除x之外的小写字母a~z表示。求有多少种合法的括号序列。答案对4294967296取模。合法序列不能相交,如()[],([])是合法序列,而([)]是不合法的。 Sol 这个题告诉我们什么叫:暴力艹标算,n方过百万。。。 阅读全文
posted @ 2018-09-27 15:18 自为风月马前卒 阅读(701) 评论(2) 推荐(2)
摘要:题意 题目链接 平面上有$n$个点,每个点都有一个位置$x_i$,和向右的速度$v_i$现在要求你对其中的一些点进行染色,当一个点被染色后,在无限距离内与它相遇的点也会被染色问在可能的$2^n$种染色方案中,有多少种染色方案可以使得最后的点全部被染色 Sol 非常好的dp题。 首先考虑若点$i$被染 阅读全文
posted @ 2018-09-27 10:26 自为风月马前卒 阅读(615) 评论(0) 推荐(2)
摘要:题意 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡牛之间至少要有K(O≤K<N)只牝牛. 请计算一共有多少种排队的方法.所有牡牛可以看成是相同的,所有牝牛也一样.答案对5000 阅读全文
posted @ 2018-09-03 08:51 自为风月马前卒 阅读(402) 评论(0) 推荐(0)
摘要:题意 题目描述的很清楚。。。 有一天,贝茜无聊地坐在蚂蚁洞前看蚂蚁们进进出出地搬运食物.很快贝茜发现有些蚂蚁长得几乎一模一样,于是她认为那些蚂蚁是兄弟,也就是说它们是同一个家族里的成员.她也发现整个蚂蚁群里有时只有一只出来觅食,有时是几只,有时干脆整个蚁群一起出来.这样一来,蚂蚁们出行觅食时的组队方 阅读全文
posted @ 2018-09-01 08:57 自为风月马前卒 阅读(366) 评论(0) 推荐(0)
摘要:题目背景 无 题目描述 在一个凹槽中放置了 n 层砖块、最上面的一层有n 块砖,从上到下每层依次减少一块砖。每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示。 如果你想敲掉第 i 层的第j 块砖的话,若i=1,你可以直接敲掉它;若i>1,则你必须先敲掉第 i-1 层的第j 和第j+1 阅读全文
posted @ 2018-07-08 17:33 自为风月马前卒 阅读(318) 评论(0) 推荐(0)
摘要:Description 张老师根据自己工作的需要,设计了一种特殊的二叉搜索树。他把这种二叉树起名为zh_tree,对于具有n个结点的zh_tree,其中序遍历恰好为(1,2,3,…,n),其中数字1,2,3,…,n 是每个结点的编号。n个结点恰好对应于一组学术论文中出现的n个不同的单词。第j个单词在 阅读全文
posted @ 2018-06-25 21:35 自为风月马前卒 阅读(259) 评论(0) 推荐(0)
摘要:Description 由于Blue Mary呕心沥血的管理,Blue Mary的网络公司蒸蒸日上。现在一共拥有了n名职员,可惜没有任何的金钱和声誉。平均每名每天职员都可以给公司带来x单位金钱或者y单位声誉(名利不能双全)。并且可以花费z单位的金钱在人才交易市场发布广告招聘职员,每次发布广告三天以后 阅读全文
posted @ 2018-06-25 20:18 自为风月马前卒 阅读(404) 评论(0) 推荐(1)
摘要:Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。 Input 输入文件共2行。 第一行包括一个整数n。 第二行 阅读全文
posted @ 2018-06-25 18:10 自为风月马前卒 阅读(300) 评论(0) 推荐(0)
摘要:Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和。2.子集的异或和的异或和。3.子集的算术和的算术和。4.子集的算术和的异或和。 目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实现。 小 阅读全文
posted @ 2018-04-02 19:32 自为风月马前卒 阅读(1813) 评论(0) 推荐(3)
摘要:题目背景 无 题目描述 有两个仅包含小写英文字母的字符串 A 和 B。现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问有多少种方案可以使得这个新串与字符串 B 相等?注意:子串取出 的位置不同也认为是不同 阅读全文
posted @ 2017-11-05 17:05 自为风月马前卒 阅读(234) 评论(0) 推荐(0)

Contact with me