7.1 NOI模拟赛 计数问题 dp】的更多相关文章

还是可以想出来的题目 不过考场上没有想出来 要 引以为戒. 初看觉得有点不可做 10分给到了爆搜. 考虑第一个特殊情况 B排列为1~m. 容易发现A排列中前m个数字 他们之间不能产生交换 且 第k个数字要交换到后面的m+1~n这些数字的时候 k~m的数字都要进行交换才行. 那么直接枚举有多少个数字到后面了 组合数可以解决 考虑剩下的那些空位怎么办. 其实就是要求出 \(f_i\) 其表示满足题目条件的i个数的排列的个数. 考虑递推 容易发现\(f_0=1,f_1=1\) 对于\(f_i\)考虑第…
算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然存在一个深度最浅的点且唯一 所以随便找一个点做根然后对自己子树内寻找答案就可以是正确的. 考虑另外的30%的数据k<=3 可是颜色数最多可以有n个 不知道哪个是最终答案. 一次状压dp的复杂度:\(2^{2k}\cdot n\) 容易得到可以暴力枚举一下 然后要做 \(C(n,3)\) 这样会TLE…
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧张起来!!! 好了不扯淡了... -------------------------------------------------------------------------------------------------------------------------------------…
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件结束终止. 每一个测试用例的第一行包含整数n,m和k. 第二行包含n个整数,即s1,s2,-,sn. 输出 对于每一个测试用例,输出一个表示结果的整数. 样例输入 3 2 2 1 2 1 4 2 2 1 2 1 2 样例输出 2 4 提示 \(1 ≤ n ≤ 10^5:1 ≤ m ≤ min{n -…
LINK:生成树 这场比赛我打的真失败 T3是比较容易的 却一直刚 那道"数论" 10分其实搜一下全排列. 30分容易想到对边进行装压dp. 不过存在一些细节 可以对于一个连通块的壮大进行装压 也就是每次需要联通两个块的时候使用关键边 然后再这两个块之间加边知道加满需要其他边. 复杂度 \(2^{21}\cdot 21\cdot 6\) 可能能过或许是我的做法不太行? 值得一提的是这样是无标号的需要最后乘以一个阶乘. 可以发现之所以装压边是为了防止 一些边的添加使得最小生成树变化. 可…
LINK:探险队 非常难的题目 考试的时候爆零了 完全没有想到到到底怎么做 (当时去刚一道数论题了. 首先考虑清楚一件事情 就是当前是知道整张地图的样子 但是不清楚到底哪条边断了. 所以我们要做的其实就是选择最优的路线 使得遇到断边情况下是最优的. 可以发现在某个点出现断边的时候 此时断的一定是这个点到终点最短路上的边 这样是最差的结果. 那么其实就是断边只会断由T发出的最短路树上的边. 到达某个点知道断边之后 其实要求出断开这条边再到T的最短路. 暴力是\(nm\cdot logn\)的 考虑…
LINK:graph HDU题库里的原题 没做过自闭. 考虑dp 设\(f_{i,j}\)表示前i个点构成j个联通块是树的方案数. 对于一次询问答案即为\(\sum_{j}f_{n,j}j^k\) 考虑如何dp出来 显然每次枚举1号所在的连通块的大小 考虑这个连通块是否构成树 即可. 具体转移不再赘述 需要预处理一下i个点的树的个数 i个点的连通块个数 i个点不是树是连通块的个数. 复杂度\(n^3\) 利用分治NTT来优化可以到 \(n^2log^2\)比较繁杂且不是正解. 正解当然是考虑生成…
这是一道非常垃圾的题目 且 数据范围简直迷惑选手.. 可以发现 题目中有 边权递增 边的条数 所有边权值不同 最小边权和等条件. 看起来很难做 一个想法 边权递增+边的1的权值都不相同可以想到 关系存在于边的话应该是一张DAG. 所以 可以把边化点建图 暴力建图是\(n^2\)的 采用归并排序+前缀和优化建图就是线性的了. 然后考虑在这张DAG上搞事情 发现边的条数很难做. 怎么做都需要一个dp数组\(f_{i,j}\)表示到达i此时经过的路径数为j的最小权值. 状态数很多 尽管转移可以拓扑排序…
(啊啊啊 什么考试的时候突然降智这题目硬生生没想出来. 容易发现是先走到某个地方 然后再走回来的 然后在倒着走的路径上选择一些点使得最后的得到的最多. 设\(f_{i,j}\)表示到达i这个点选择的价值为j的最大获得的值 这显然是一个01背包. 然后不断更新答案即可.可以直接从前往后坐.复杂度\(n\cdot m\) code //#include<bits\stdc++.h> #include<iostream> #include<iomanip> #include&…
得分非常惨惨,半个小时写的纯暴力 70 分竟然拿了 rank 1... 如果 OYJason 和 wxjor 在可能会被爆踩吧 嘤 T1 欧拉子图 给一个无向图,如果一个边集的导出子图是一个欧拉回路,则 ans 加上这个边集边数的平方,求 ans ,膜 998244353 $n,m \leq 152501$ sol: 考虑如果边数不是平方,而是一次方,那对于每个边,它对 ans 的贡献就是强行选它的方案数 如果是平方,贡献就是枚举两个边 $x,y$ ( $x,y$ 可以相同),计算强制选它们的方…