牛客挑战赛17E 跳格子 计数dp】的更多相关文章

!!!学长做过的题 正解:计数dp 解题报告: 传送门 首先思考,这题和普通的走台阶有什么区别嘛(跳格子其实和走台阶都一样的嘛quq因为走台阶比较经典所以就说的走台阶) 那显然最大的区别就是它有限制 umm,,,有点废话? 这个限制相当于你可以理解成,我现在可以走两次,都是从头走到尾(本来是从头到尾再走回头嘛但反过来显然一样,懒得解释辽你不傻趴 但是第二次走的得是第一次走的子集 于是先考虑第二次怎么走,就只要算包含这个元素的集合有多少个,就是第一次走这段路所有可行方案的总和了 然后关于包含这个元…
LINK:牛牛与序列 (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i>a_,a_j<a_$且对于所有的位置i,$1 \leq a_i\leq k$ 人话解释:一个合法序列 每个数字都在1~k之间 且有两个相邻数字是递增关系两个相邻数字是递减关系. 发现我们枚举某两个位置递增递减再进行计数会重复 而且很难减掉重复方案.这个不能代表元容斥. 考虑总方案-不合法方案.发现不合法方案就两种不增,不降. 显然不增翻转一下就是不降 考虑求出不增的方…
小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #define SZ(x) ((int)x…
传送门: 淳平的形态形成场 题解: 把a排序后,直接统计答案恰好为a[i]并不好做,可以统计答案>a[i]的方案数,设为\(f[i]\). 即不存在一个联通块,所有的权值都<=a[i]. 那么如果枚举j个在i之前的点,分成k个联通块,容斥系数是\((-1)^k\),选择系数\(C_i^j\),剩下的边随便乱选,\(2^{(n-j)*(n-j-1)/2}\). 设\(g[j]\)表示j个点,若有k个联通块,系数\((-1)^k\),的所有方案系数和. \(f[i]=\sum_{j=0}^iC_{…
LINK:小V和字符串 容易想到只有1个数相同的 才能有贡献. 知道两个01串 那么容易得到最小步数 大体上就是 第一个串的最前的1和第二个串最前的1进行匹配. 容易想到设f[i][j]表示 前i位1的个数为j的贡献. 不过在 j-1 向 j进行转移的时候 两个集合的贡献无法得到 因为我们只知道其中一个串的最后一个1的位置. 考虑如果每次合并集合时 只统计最后一个1的贡献 那么这样无论怎么做都是错误的. 回到先前 还是考虑描绘出两个串长什么样子 然后 考虑如何统计答案. 问题变成了 逐位考虑 统…
题目链接:https://ac.nowcoder.com/acm/contest/375/A 分析:我写的时候竟然把它当成了DP....... 还建了个结构体DP数组,保存一二位,不知道当时脑子在抽啥... 事实上这题四重循环直接暴力就了过....... 在大佬博客里学到了一种只用三重循环的高级做法 看看最后一重循环吧,因为是从后往前的,只有满足第四个条件,就把now+1,等在前面遇到满足第3个条件的数,此时now的数目就是其后满足第四个条件数的个数,直接加到ans上面即可 #include<b…
背单词 思路 :dp[ i ]  [ 0 ]表示 第i 位放的元音  dp[ i ]  [ 1 ]表示 第i 位放的辅音 ,cnt [ i ]含义是 长度为 i 的方案数. 转移  :dp[ i ]  [ 0 ]  由 上一个长度的所有方案数 也就是 cnt[ i-1 ]  *5 转移而来 . 同理   dp[ i ]  [ 1 ]  由 上一个长度的所有方案数 也就是 cnt[ i-1 ]  *21 转移而来 . 但是 这是 无任何限制的情况下现在加了限制,连续 元音不超过 a  连续 辅音不…
link 题目大意: n个节点的带标号无根树.每次选择一个度数为1的节点并将它从树上移除.问总共有多少种不同的方式能将这棵树删到只剩 1 个点.两种方式不同当且仅当至少有一步被删除的节点不同. 题解: 先考虑1号店最后移除时候的贡献,我们可以钦定1号点为根,并钦定他最后移除 然后就是一个树形dp 设\(f_i\)表示i号点子树移除方案数量,\(size_i\)表示1为根时子树大小 显然有dp式子\(f_x=\frac{(size_x-1)!}{\prod (size_i)!}\prod f_i\…
目录 题目链接 题意 思路 代码 题目链接 传送门 题意 给你一棵树,然后把这棵树复制\(k\)次,然后再添加\(m\)条边,然后给你起点和终点,问你起点到终点的最短路. 思路 由于将树复制\(k\)遍后结点个数高达\(10^{10}\)个,因此不能直接复制跑. 我们注意到\(m\leq 50000\),那么与这\(m\)条边有关的结点最多只有\(2m\)个(记作关键点),那么我们可以考虑把这些点抠出来跑最短路,不同版本之间的点的边由于题目给的\(m\)条边因此不同版本的两结点之间的距离就是\(…
传送门 之前一直咕着的,因为一些特殊的原因把这道题更掉算了-- 有一个对值域莫队+线段树的做法,复杂度\(O(n\sqrt{n} \log n)\)然而牛客机子实在太慢了没有希望(Luogu上精细实现似乎可以过). 考虑对序列进行块大小为\(B=\sqrt{n}\)的分块.对于某一个块来说,如果我们要对这个整块进行询问,那么一次询问一定会保留这\(B\)个数按照值域排序之后的一段区间,其余都变成\(0\).也就是说本质不同的询问只有\(O(B^2)\)种. 如果可以对这\(O(B^2)\)种询问…