05 2021 档案

摘要:为什么我在自己思考的时候做不出来这题: 没有考场的环境,不是很显然的题就开始想看题解 想过dp,但是没有认真的想就认为不能用dp,因为这样需要O(1)转移,然而正解就是O(1)转移,以后做题目时,如果考虑dp就需要把状态和转移都列出来,确认实在无法优化后再放弃(但是一般如果只是因为时间复杂度的话一般 阅读全文
posted @ 2021-05-31 17:06 enisp 阅读(49) 评论(0) 推荐(0)
摘要:题意:一棵n个点的树,给定m树上的路径,需要从这m条路径中选k条,需要满足至少有一个点被所有的k条路径经过,求选择的方案数 (n,m,k ⇐ 6e5) 一个性质:两条或多条路径的交一定是一个联通块,且一定会有至少一个点为某个路径的lca 直接统计答案的话(对于每一个点算贡献),我们发现会重复,需要去 阅读全文
posted @ 2021-05-29 16:38 enisp 阅读(105) 评论(0) 推荐(0)
摘要:一道神题 非常可惜,我想到一半放弃了,看了题解,看完题解后觉得这题索然无味,甚至有点不想写 真正有趣的是思考的过程 一个性质:联通块个数=点的个数-边的个数 那么这题就分开考虑点的贡献和边的贡献,然后减一下,无了 #include <iostream> #include <cstdio> #incl 阅读全文
posted @ 2021-05-29 15:29 enisp 阅读(63) 评论(0) 推荐(0)
摘要:二分答案由最优问题变为可行性问题 首先可以发现,因为一个竹子在一天可以被砍多次,那么其实在不浪费的情况下一个竹子越往后被砍肯不是不会更劣的(因为如果砍成小于0了就会浪费) 然而我们并好不知道一个竹子应该被砍的准确时间,所以我们把倒着看这个问题,从最后一天开始 -- 所有的竹子的高度均为mid,每天竹 阅读全文
posted @ 2021-05-29 15:24 enisp 阅读(66) 评论(0) 推荐(0)
摘要:区间dp,dp[i][j][l][r] 表示区间i到j里,左端点为l颜色,右端点为r颜色的染色方案数,强制不合法的区间的值为0 转移只会有两种: 当这个的两个端点为配对的连个括号时,直接把区间i+1,j-1的答案拿过来用 当两个端点不配对时,肯定,这段区间肯定是由多个小的区间组成的,但我们并不关心有 阅读全文
posted @ 2021-05-27 15:11 enisp 阅读(87) 评论(0) 推荐(0)
摘要:Karry 模拟赛T1 525模拟赛 T1 T3 CF505 E CF149 D LG 4448 527模拟赛 fans cuagain WQS二分 mo's https://www.luogu.com.cn/training/11#problems https://www.luogu.com.cn 阅读全文
posted @ 2021-05-27 14:26 enisp 阅读(85) 评论(0) 推荐(0)
摘要:看数据范围发现n异常的小,于是想到装压 map[i][j]表示第i个字符填j时与那些匹配串符合 dp[i][j] 表示第i个字符,匹配的情况为j,有多少方案 #include <iostream> #include <cstdio> #include <cstring> #include <algo 阅读全文
posted @ 2021-05-26 16:25 enisp 阅读(60) 评论(0) 推荐(0)
摘要:和SCOI2003字符串一样,但又完全不一样 首先肯定是区间dp,然后考虑如何合并区间,两种情况: 从中间分开,两边相同,也就是使用了压缩 通过两个子区间合并起来 然后烦人的就来了,因为在压缩操作中,R会自动匹配成最近的M,那么也就是说当合并区间的时候,第一个区间的M有可能会影响第二个区间,所以我们 阅读全文
posted @ 2021-05-25 12:02 enisp 阅读(77) 评论(0) 推荐(0)
摘要:我的心路历程:当你觉得一题是傻逼题,没想出来,就觉得是神仙题,看题解后又发现题解说这题是傻逼题,写完后发现这题真的是傻逼题 我们可以发现,对于在n前面的数,每个数字(包括0,因为把0删掉就相当把它变成前导0)出现的次数都是一样,那么题目就变成了:问在这些数字组成的全排列中,在n前面的有多少 直接数位 阅读全文
posted @ 2021-05-24 17:25 enisp 阅读(52) 评论(0) 推荐(0)
摘要:最初始的状态:dp[i][j][k][l], 表示现在正在进行第i个需求,三个司机分别在j, k, l这三个城市 i可以省,因为j,k,l中必须有一个等于i 状态就变成了:dp[i][j][k],表现有一个司机在第i个需求的城市,其他两个司机分别在j城市和k城市 i这一维还可以滚掉 #include 阅读全文
posted @ 2021-05-24 17:19 enisp 阅读(70) 评论(0) 推荐(0)
摘要:折磨啊,这题 调了一个上午加大半个下午,就因为一个非常的小的小bug 直接区间dp,转移分两种情况:1. 整个区间可以被折叠。 2. 整个区间可以被两个更小的区间拼起来 为什么不需要考虑一个区间又折叠又拼呢?因为这些操作都可以被包含在第二个转移情况中 #include <iostream> #inc 阅读全文
posted @ 2021-05-24 17:14 enisp 阅读(44) 评论(0) 推荐(0)
摘要:个人感觉是,像这类线性dp,只要把状态想出来了,转移轻而易举 这题我感觉我多想想也能想出来,但是想到一般看题解去了 dp[i][j][k][0/1/2]表示在第i行第j列,涂了k次,当前块涂的是0/1,或者不涂(2),i这一维度可以滚掉 转移: dp[i & 1][j][k][2] = (j == 阅读全文
posted @ 2021-05-24 10:38 enisp 阅读(34) 评论(0) 推荐(0)
摘要:因为两种不同的洒水器的方向是反的且同一块地不能被两种洒水器覆盖,我们可以发现我们可以画出一个类似分割线的东西,左边的全是一种花,右边的是另一种,同时我们还发现在这个分割线上,拐角位置必须放洒水机,其他的地方随便放就行了,然后就可以dp了 dp[i][j][0/1]表示当我们把分割线画到(i, j)时 阅读全文
posted @ 2021-05-21 15:49 enisp 阅读(54) 评论(0) 推荐(0)
摘要:挺有趣的这题 虽然结论都是一样的,但是有两种思路看待这个问题:在曼哈顿距离下,和在切比雪夫距离下 (图片来自luogu) 我是从曼哈顿距离下看待这个问题的 若这三点构成一个曼哈顿等边三角形,我们其实可是虚构一个点O出来 图中A到C和B到C的换了路线,但是距离没有边,因为BC=AC且他们公用OC,BO 阅读全文
posted @ 2021-05-20 16:53 enisp 阅读(124) 评论(0) 推荐(0)
摘要:跟Delegation G挺像的,还是贪心 二分答案套二分答案? 首先看到题目的求最小值最大,基本上可以确定二分答案,把最优问题变成可行问题 然后check的策略就是贪心,对于一个子树,如果他有奇数个子树,那么贪心的留一个最大长度的子树给祖先匹配,剩下的子树自己匹配,如果有偶数个子树,添加一个长度为 阅读全文
posted @ 2021-05-20 09:26 enisp 阅读(58) 评论(0) 推荐(0)
摘要:一开始我想的是从地图中弄出一个森林来,这样确实可行,但是太麻烦了 事实上,我们并不一定需要把建出来 从最低海拔往上统计答案,考虑当两个联通合并会对答案造成什么影响:新的联通块的方案数为两个联通块的乘积(或者说所有合并了的联通块的乘积,因为有可能有多个联通块合并),当这一层计算完后,再给这一层的块的答 阅读全文
posted @ 2021-05-19 16:53 enisp 阅读(68) 评论(0) 推荐(0)