摘要: 题目链接: "" 断环为链,将环复制两倍。 用to[i][j]表示从点i出发,走$2^j$步能够到达的最远的(右端点qwq)的编号。 注意为了方便判断已经走了一圈了,我们最后一步先不要跳,只需要判断当前右端点仍在i+n之前即可。然后这个样子的话,最后答案需要+1。 代码如下: cpp include 阅读全文
posted @ 2019-02-28 20:27 风浔凌 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 一看范围1e5,往二分上想。 可是再怎么也没有想到这个神仙的二分答案qwq 我们二分一个数x,设比他大的数为1,小于等于他的数为0。那么我们就可以把原来的那个转化成一个01塔。 然后我们可以通过实验发现,如果有连续的0或者1的话,它一定会向上面推进一格qwqwq。然后谁最先占领 阅读全文
posted @ 2019-02-28 18:30 风浔凌 阅读(126) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-02-28 15:11 风浔凌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" LCT维护树上连通块一类的题目。 动态加边维护连通性最好还是用并查集来搞,时间复杂度貌似更优秀一点。 主要难点是这道题目中有可能存在环,我们考虑缩点。我们要再开一个fa数组,来表示缩点之后的节点编号。 代码如下: cpp include include include incl 阅读全文
posted @ 2019-02-27 23:05 风浔凌 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 树链剖分把树上问题转换成序列上的问题qwq,然后求链上小于i k的节点个数。 可以离线做,先把所有操作读入,这样就不需要中间的修改了qwq 然后就是大力主席树了qwqwq 代码如下: cpp include include include include include inc 阅读全文
posted @ 2019-02-27 17:36 风浔凌 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 其实也是一个比较常规的树链剖分的题目,主要不同是多记录一个区间的左端颜色,右端颜色,如果左右区间颜色相同就 1. update:因为还有一个树链剖分,所以还要注意一下,上次划分出来的区域的左端点和当前处理区间的右端点是否颜色一样qwq,一样的话要 1(所以需要记录一下左端点的颜 阅读全文
posted @ 2019-02-27 15:42 风浔凌 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" lcm相关 容斥+搜索剪枝 选一个数的近似幸运号码,但是这样子可能有两个或多个的数的倍数相同——所以考虑容斥——我们把两个的减去。但是这样一来是三个数的lcm的数的就没有计算到,我们再加上它。。。。。。 trick1——把合法的数先预处理出来,方便之后操作。 trick2——我 阅读全文
posted @ 2019-02-25 19:05 风浔凌 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" ~~幻想乡是个什么东西??(逃~~ 矩阵树定理+容斥 就是设$dp[i]$表示至多i个公司修建道路,那么我们有$ans=dp[n 1] dp[n 2]+dp[n 3]......$balabala(就是那个容斥公式嘛qwqwq) 然后每次都跑一次矩阵树定理qwqwq 但是这样的 阅读全文
posted @ 2019-02-25 11:04 风浔凌 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 我们先处理出来长度为i的子序列分别都有多少个,记$g[i]$表示长度为i的不降子序列个数。 $a[i]$表示第i个数的数值。设$f[i][j]$表示以a[i]这个数结尾,且序列长度为j的子序列个数。 那么就有DP式为$f "i][j]=\sum f[k][j 1" $ 对于一个 阅读全文
posted @ 2019-02-25 08:38 风浔凌 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 有障碍点的网格图计数 对于一个位置我们一定会通过特定数量的操作来达到这个位置,而且如果有解的话,这个数量一定是确定的。 为什么呢? 我们设$px$为当前点的x坐标,$py$为当前点的y坐标,$ax,ay,bx,by$分别对应题目中含义。那么一定有 $$\left\{\begin 阅读全文
posted @ 2019-02-23 15:56 风浔凌 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接:戳我 凸包模板 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define MAXN 100010 using namespace std; int n, 阅读全文
posted @ 2019-02-23 12:20 风浔凌 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 要注意因为数可能会对应很多人,但是输出的时候要按照添加的顺序输出。所以我们不能将相同值的节点合并,用set维护。就算值相同也只能新开节点。 然后就没有什么了。。。懒得写哈希表。。直接上map了。。开了O2之后也不是很慢qwq 代码如下: cpp include include 阅读全文
posted @ 2019-02-23 09:57 风浔凌 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 设$f[n][k]=\sum_{i=0}^kC_n^i\pmod {2333}$ 那么根据卢卡斯定理我们知道$f[n][k]=\sum_{i=0}^kC_{n/p}^{i/p}\times C_{n\%p}^{i\%p}$ $=C_{n/p}^0\times \sum_{i=0 阅读全文
posted @ 2019-02-22 20:06 风浔凌 阅读(299) 评论(1) 推荐(1) 编辑
摘要: double与long double double是用二进制科学计数法来存储的。一般精度在15 16位,整数位最大约为10的308次方。 double对2的次幂计算没有任何误差。 小数输出严格小于五舍去,严格大于五进位,等于五看前一位。奇数进位,偶数舍去。 注意double里存在负0。 long d 阅读全文
posted @ 2019-02-22 16:13 风浔凌 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" luogu的题面真心好看!!!qwqwq 按照专业的话来讲,这个题是—— 线段树维护最大连续子段 好吧。。其实就和前两天写的那个区间最大字段和很相似嘛,就是左右线段树可以合并这种维护信息类型的题目。 操作0是线段树区间赋值 操作1是线段树区间赋值+线段树区间前K个赋值(前K个怎 阅读全文
posted @ 2019-02-22 15:19 风浔凌 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" ~~我也想要一个!!!~~ 显然能够看出来单调性——当N越大,能AC的题越少,反之越少。所以。。。很明显的二分答案对吧。 唯一一点不太一样的是,它要求可能的最大值,和可能的最小值。 那我们就写两个check,先求出来最大值,如果算出来的AC题数大于等于K,我们就选择右区间。 然 阅读全文
posted @ 2019-02-22 15:01 风浔凌 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 容斥题。 设$f[i]$表示至多有i个人能够分到(也就是至少n i个人分不到)的方案数 $f[i]=\prod_{j=1}^mC_{a[j]+i 1}^i 1$ a[j]表示的是该特产的数量。 为什么组合数是那样子写的呢?大家考虑一下,a[j]个球,分成i份,每份可以为空是不是 阅读全文
posted @ 2019-02-22 08:04 风浔凌 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 昨天做的题了,今天补一发题解。 是一个比较奇怪的数位DP。详细的我还是写代码注释里好了,感觉直接说不好描述。 代码如下: cpp include include include include include include define MAXN 200010 define 阅读全文
posted @ 2019-02-21 20:41 风浔凌 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 蒟蒻今天正式开始学容斥了!!(但是还是不会做啊不会做啊不会做啊) 这个题题意化简下来是这样的:n个数中选择m个子集,它们需要满足三个条件—— 1、选择的子集不能为空 2、选择的子集不能相同 3、选择的子集中,每个数出现的次数必须为偶数 那个集合相同的条件没有什么难搞的,直接算出 阅读全文
posted @ 2019-02-21 20:30 风浔凌 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 也没什么,其实主要就是为了存一个求二维坐标上矩形内点的个数的模板。~~为了之后咕咕咕地复习使用~~ 不过需要注意的一点是,树状数组传x的时候可千万不要传0了!要不然会一直死循环的。。。qwqwq 代码如下: cpp include include include include 阅读全文
posted @ 2019-02-21 07:48 风浔凌 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目连接: "戳我" 基环树上树形DP。 强行断环边。。对于一个点u,断(u,to[u])边之后,是以to[u]为根的树形DP,如何处理不选这条边呢?当处理到u的时候,将dp[to[u]][1]设置成 0x3f3f3f3f即可。断了(fa[u],u)之后,是以u为根的树形DP,之后操作同上。 备注: 阅读全文
posted @ 2019-02-20 10:36 风浔凌 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" AC自动机qwqwqwq 给定很多个模式串。问模式串最多在这些模式串的集合中出现多少次? 这道题读题有三个注意点:一是模式串只能在模式串中匹配,最多出现多少次是在所有模式串中出现次数的总和。二是这些只要出现的位置集合不一样即视作又出现了一次。三是给出的模式串会有重复,并不是两两 阅读全文
posted @ 2019-02-18 09:44 风浔凌 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" AC自动机+动态规划。 我们设$dp[1/2/3][i][j]$来表示不同的状态,i表示处理到文本串第i位,j表示处理到AC自动机上节点j。 因为这道题有前导零,所以我们可以参考一下数位DP的思想,我们区分有限制和没有限制的情况分类套路进行AC自动机上DP。 3表示没有任何限制 阅读全文
posted @ 2019-02-17 21:47 风浔凌 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 完全忘了AC自动机怎么写了qwq,更别说AC自动机上DP了。 今天就好好地学习字符串好了qwq 提一下AC自动机的时间复杂度——设n是模式串的个数,m是文本串的长度,l是模式串的平均长度,那么它的时间复杂度就是$O(n+m) l$。 AC自动机上fail指针指向的点,从root到它代表的是其后缀。 阅读全文
posted @ 2019-02-17 10:48 风浔凌 阅读(150) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-02-17 09:09 风浔凌 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 一类典型模型。线段树模拟网络流+区间最大K段和。 因为不会写,所以参考了黄学长的博客。但是我觉得他说得不够详细,所以想好好地解释一下: 前置技能1:区间最大子段和 如果K=1的时候怎么办?大家可以去参考一下蒟蒻的这篇博客: "戳我" 前置技能2:最长K可重区间集问题 求最长K可 阅读全文
posted @ 2019-02-17 08:17 风浔凌 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 对于最大子段和,我们只需要维护四个变量——maxl,maxr,maxs,sum(分别表示区间最大前缀子段和,区间最大后缀子段和,区间最大子段和,区间所有数的和) 然后合并的时候是这样的: 然后想要强调的是,询问的时候一定不能像普通线段树那样写,因为我们需要考虑三种情况。一种是该 阅读全文
posted @ 2019-02-16 20:52 风浔凌 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" ~~当时刷24题的时候偷了懒,没有写完,结果落下这道题没有写qwq结果今天考试T3中就有一部分要用到这个思想,蒟蒻我硬是没有想到网络流呜呜呜~~ 最大费用流。 就是我们考虑将问题转化一下,转化成从出发点开始往后走K次,每次可以走一个区间。因为题目中没有给坐标轴的大小,所以为了防 阅读全文
posted @ 2019-02-16 17:31 风浔凌 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 注:本文参考了这位大佬的博客,详情请移步—— "戳我" 容斥 为什么容斥系数~~乱七八糟~~但是最后算出来的答案却是正确的的呢。 以一个常见的容斥系数为例子:$\sum_{i=1}^nC_n^i( 1)^{i+1}$ $=\sum_{i=1}^n(C_{n 1}^{i 1}+C_{n 1}^i)\t 阅读全文
posted @ 2019-02-15 19:51 风浔凌 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 后缀自动机模板? 求不同的子串数量。 直接$\sum t[i].len t[t[i].ff].len$即可 代码如下: cpp include include include include include include using namespace std; define 阅读全文
posted @ 2019-02-15 15:16 风浔凌 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 本蒟蒻的小整理qwq~~持续更新(咕咕咕) 数据结构 "数据结构 知识点梳理" 数据结构——线段树 推荐yyb dalao的总结—— "戳我" 以后维护线段树还是把l,r写到struct里面吧,也别写len了,调试不好调qwq 初始化和叶节点初始化不太一样qwq,有的需要统一初始化的就一定注意不要写 阅读全文
posted @ 2019-02-15 11:39 风浔凌 阅读(1757) 评论(0) 推荐(1) 编辑
摘要: 先存在这里,免得等回来乱搞的时候把自己的配置搞丢了qwq 阅读全文
posted @ 2019-02-15 08:39 风浔凌 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" emmmm就是在可行的最大流里面让最大边最小。我们可以进行二分+限流然后跑dinic,看是否能跑满即可。 代码如下: 阅读全文
posted @ 2019-02-14 22:14 风浔凌 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" DP问题。 考虑一个弱化版——如果没有成绩可能相同的限制,我们应该可以用网络流水部分分?也就是把成绩分成N档,每个点都向自己的合法区间连一条边,然后跑最大匹配,最后用总点数减去即可。 虽然这个方法过不去,但是也给我们一些提示——就是我们可以把对每个点的成绩限制转化为——对应一个 阅读全文
posted @ 2019-02-14 11:28 风浔凌 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 我们如果要选择一种种植情况的话,一定是其他的选择都不可行了。这种决策问题用最小割来处理最好不过。 建图方式——A为源点,B为汇点。然后将每个点分别向A,B连边,边权为种植它的价值。组合的话,我们考虑新建两个节点,一个连A,对应集合中的每个数,连INF;一个连B,从集合中的每个数 阅读全文
posted @ 2019-02-14 09:09 风浔凌 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 换根DP 由于蒟蒻不会做这个题,所以参考了大佬。 本来想的是有三种情况,一种是该节点不作为两个蓝线的中点(我们称这种不是关键节点),一种是该节点作为关键点、连两个子节点,一种是作为关键节点、一个连子节点一个连父亲节点。 然后有一个不换根的树形DP,但是正确性emmm~~尚待商榷 阅读全文
posted @ 2019-02-13 19:30 风浔凌 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 对于处理方案数量平方的优化——可以看成两个人玩同一个游戏,他们输出序列一样的种类数。 然后设f[i1][j1][i1][j2]为当前状态方案数量的平方和。(i1,i2表示第一个人上管道,下管道分别取出了i1,i2个,i2,j2表示第二个人) i1+j1=i2+j2,所以可以把最 阅读全文
posted @ 2019-02-12 19:51 风浔凌 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 最小割的一种常见模型。 题目可以转化为:给定一个立方体,它被分成p q r个格子,每个格子中都有一个数字,相邻地选择数字,每一行每一列都要选择一个数字。要求这些数字和最小。 建图就是建r+1层,然后这些边的权值是对应位置的数字权值。从每一个点(第z层)向它旁边四个纵轴连一条指向 阅读全文
posted @ 2019-02-12 12:12 风浔凌 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 最大权闭合子图。一般来说建图方法都是——正权值连S,负权值连T,如果一个节点被选择,其子节点也必须被选择,连一条INF的有向边。求最小割即可,答案就是正权点权值和 最大流——中间的边一定不可能被割掉左边割掉,左边割掉表示不选择,右边割掉表示选择。 但是有可能出现环的情况,这样子 阅读全文
posted @ 2019-02-12 10:13 风浔凌 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 树上有向信息合并。 用树链剖分把其转化为序列上的问题——求区间中最大数 最小数的差,限制为最小数必须在最大数前面选取。 有两种选择方法,一种是先选择全局最大数,在它前面区间中选择最小数。一种是选择全局最小数,然后在它后面的区间种选择最大的。(证明只有这两种情况——加入我们选择了 阅读全文
posted @ 2019-02-11 16:24 风浔凌 阅读(127) 评论(0) 推荐(0) 编辑