随笔分类 - 洛谷
摘要:Mikuuu 准备投身于ACM的潮流中,失踪人口回归啦! 这个题目的思路还是非常有趣的,因为我们可以注意到,两个可能成为答案兴趣点之间的最短路不应该经过了第三个点,如果经过了,显然和第三个点之间的最短路会更小,则原来的两个点之间不应该成为答案。 考虑到这一点,我们可以想到建枚举每一条边,找到这一条边
阅读全文
摘要:luogu HDU 最近在复习数位dp 数位dp,就是在一些计数问题的时候按照一位一位的顺序依次计算,通常可以采用记忆化搜索的方式 这两道题就是很典型的数位dp 数位dp通常要记录是不是顶着上限,有没有前导零,到了哪一位以及一些特殊的条件要求。 数位dp通常要把某个区间的问题转变成两个区间的差来方便
阅读全文
摘要:Link 这个题有一个很特殊的点,就是最大值不会超过28,可以想一下最多可以合并多少次。 那么常规的区间dp是不能使用的,就要采用特殊的形式, 因为很难的确定应该怎么转移,那么就换一种思路,转移的对象变成另外一个端点。 表示在左边,达到的话的右端点位置
阅读全文
摘要:LLink 显然的,答案就是 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<sta
阅读全文
摘要:LLink 本代码没有高精。 首先很容易想到的是,0,1之间互相并不干扰,所以说我们只要分开算0和1的方案数乘起来就可以了。 那么怎么算方案数呢? 首先可以想到的一点就是,如果我们确定了要放个1的话,只要采用隔板法就可以确定了方案书。 有的可以没有怎么办?先给每一个隔间都放上一个球,答案就
阅读全文
摘要:Link 首先很容易想到地一点就是平行的直线可以划分为一组,他们的每一条线是“相同的”,这样我们第一件事情就是计算可以有多少划分方式。 然后该怎样计算最后每一种情况是多少个交点呢? 我们考虑一下,每一条直线都会和不平行的直线产生交点,这样就可以计算每一条直线地贡献了。 \(\frac{n^2-\su
阅读全文
摘要:link 首先我们要明白,floyed的本质上是一个dp,那么显然我们要先跑一边floyed,然后进行更新 当我们更新的两个点之间的距离的时候,显然我们改变的是和它们有关的距离,所以只要更新这两个边就可以了. #include<cstdio> #include<iostream> #include<
阅读全文
摘要:Jisoo 不知道该怎么做? 匹配,开个栈并记录。删掉一个单词以后就从上一个单词的位置继续匹配。 为什么匹配过程不跳 fail?因为题目保证没有单词是另外一个单词的字串。 #include<cstdio> #include<iostream> #include<cstring> #include<i
阅读全文
摘要:Jisoo manacher算法有个性质 就是求出来的是以i为中心的回文串长度+1 所以manacher求出p,差分一下就行了。 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include
阅读全文
摘要:Jisoo 什么时候两个点中间夹得那个点不会被走?当他不在最短路上的时候。 按照这个思想进行检查就行了。 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<
阅读全文
摘要:Jisoo 大家都知道怎样单独求某一个东西的欧拉函数值 其中右边的东西是用容斥定理搞出来的。那么我们是否也能够用容斥定理处理这个问题? 显然那个是需要约去的,并且我们可以快速求出$\psi(
阅读全文
摘要:Jisoo 大家都知道,对于两个数 的,只要求去每个质数因数的较大的幂乘起来就行了。然后卡卡时 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #inc
阅读全文
摘要:Jisoo 我们来想一下序列上的是怎么实现的 每次二分,把当前节点插进去替换,来让答案尽可能的更优。 换到树上呢?对于以作为根节点的子树,我们可以发现去掉其实都无所谓了,子树之间没有相互的影响,那就开个集合全扔进去就行了 然后放进u,并且按照类似于序列情况的方法进行
阅读全文
摘要:Jisoo 这是一种叫线段树合并的东西。 为了简化,我们需要动态开点。 并且一开始为每一个节点建一个线段树,当然是动态开点的 然后合并就行了,相同的线段树节点加起来,只有一个有的就返回另一个 记一个根,并且并查集一下。 #include<cstdio> #include<iostream> #inc
阅读全文
摘要:Jisoo 通常来讲这种题可以按照边来考虑 当然也可以按照点对。 对于任意一个点对,在新图上的距离是在原图上的一半上取整,这样,我们可以先把原来的距离都求出来,奇数点和偶数点求出来并且化简一波式子。 #include<cstdio> #include<iostream> #include<cstri
阅读全文
摘要:Jisoo 观察样例,知道肯定和六有关系 并且 就可以构造了 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<s
阅读全文
摘要:AC自动机 这些东西还是交给wiki 模板 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #include<queue> #include
阅读全文
摘要:Jisoo 13秒,跑,往死里跑 犹豫就会wa #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #include<algorithm> us
阅读全文
摘要:Rose 不是一般的01背包 因为有后效性,也就是因为重量可以是负的(钩子越放越多) 为了抵消这种影响,按照钩子数量从大到小排序 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmat
阅读全文