把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

06 2021 档案

摘要:题面传送门 并不觉得这道题有黑题难度。 首先因为当j>iS(i,j)=0所以这个东西其实可以写成j!×2jS(i,j) 我们设H(j)=S(i,j)就可以O(n)算这个式子的值了。 阅读全文
posted @ 2021-06-30 21:13 275307894a 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们考虑倍增,即算出G0使得G0F1(modxn+12) 然后我们要求的就是GF1(modxn+12) 所以GG00(modxn+12) 两边平 阅读全文
posted @ 2021-06-29 21:57 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要:A 排序后模拟即可。 #include<bits/stdc++.h> #define I inline #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) #define abs(x) ((x)>0?(x):-( 阅读全文
posted @ 2021-06-26 22:55 275307894a 阅读(266) 评论(0) 推荐(0) 编辑
摘要:题面传送门 代数推导天地灭,组合意义保平安。 首先我们发现如果我们预处理组合数然后暴力计算是O(n2)的很难优化。 我们考虑换一个思路。 我们知道Cai+bi\(\)(0,0)\(\)(ai,bi)的方案数。 那么原题目要求的就是$(-A_i,-B_i)(A_ 阅读全文
posted @ 2021-06-26 22:40 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题面传送门 为什么常数这么大啊是我人傻吗? 发现每条边只有选和不选两种情况,容易想到2-SAT 那么对于一条边有两种情况: 第一种情况就是如果它选,那么所有相邻的边都不能选。 第二种情况是如果它不选,那么所有相邻的同色边都必须选。 但是这样子建图是O(m2)的。 每个点是独立的,在这个点一个端 阅读全文
posted @ 2021-06-26 15:04 275307894a 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题面传送门 如果没有x就是2-SAT裸题。 具体的,如果当前x不满足,直接跳过,如果y不满足,那么连边如果x=nx满足,那么x=nx1满足。其它就正常连边。 然而这题有x。 考虑到x的数量很少,我们可以直接爆搜每个x是a还是b还是c,但是这样不优。 发现其实ab 阅读全文
posted @ 2021-06-25 20:39 275307894a 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们设Fi,j表示i,j天内都走同一条路径的最短路的权值,那么就是把只要在[i,j]内不能走的都不能走,然后跑spfa即可。 然后开始dp,设dpi表示到i天的最小花费就可以得到dpi=dpj+Fi+1,j×(ij)+k 直接搞即可 阅读全文
posted @ 2021-06-24 19:30 275307894a 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们考虑拆点,将一个点拆成10两个点。 考虑怎么建图,a=nab=nb成立就是如果b=nb1那么a=na,连一条bnb1ana的边表示一旦选nb1就一定是na 然后如果两点在一 阅读全文
posted @ 2021-06-24 18:50 275307894a 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题面传送门 很妙的一道题。 矩阵积和式是没有多项式解法的,我们考虑这个东西有什么性质。 首先我们考虑矩阵积和式的组合意义,一个二分图左右连边的所有完美匹配的权值之和。 想到这样一个转化,我们将每条边换成w1,然后将所有匹配边数为s的匹配乘上(ns)!即为答案因为剩下的边能够任意匹配。 阅读全文
posted @ 2021-06-22 20:12 275307894a 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题面传送门 显然线段树合并O(nlogn)可惜被卡了。 我们考虑另外一种写法。 首先对于每个点要求k级祖先。因为没有强制在线所以不用长链剖分,直接树上dfs一边然后开栈存储即可。 再将每个询问挂在k级祖先上再dfs一遍,这一次对于每个询问,减掉遍历子树前的答案,加上遍历子树后的答案就是子 阅读全文
posted @ 2021-06-19 21:52 275307894a 阅读(60) 评论(0) 推荐(0) 编辑
摘要:题面传送门 臭名昭著的ODT板子。 ODT就是用set维护相同的区间,数据随机且有区间推平操作可以O(mlogn) 那这样就很简单了,直接找到两个块裂开来然后剩下的随便做。 code: #include <vector> #include<iostream> #include<cstdio> # 阅读全文
posted @ 2021-06-19 13:56 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 口胡五分钟,卡常两小时。 首先这种平均值的东西我们就考虑分数规划。 然后就是一个费用流问题,我们把每条边换成Ai,jBi,j×mid ,然后判断最后费用是否大于0 然后这个就被卡了/kk 迫不得已加了几个剪枝然后判了两个点才过去。 code: #incl 阅读全文
posted @ 2021-06-18 19:31 275307894a 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先这种生成树计数想到Prufer序列。 然后因为度数为di的点会在Prufer序列中出现di1次所以直接重排列公式即可。 然而这个没有模数什么的。 于是就要分解完质因数后再乘。 时间复杂度O(nlogn) code: #include <vector> #includ 阅读全文
posted @ 2021-06-17 20:46 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题面传送门 挺水的题,但是没开long long就WA了一发。 首先我们考虑如何确定最佳烘焙顺序,这样才能用乱七八糟的数据结构维护。 设第i个蛋糕烘焙完的时间是ti,那么这个蛋糕的费用就是liti 把全部加在一起我们就可以发现我们其实可以把这两个分开算,即用SumL减去$Su 阅读全文
posted @ 2021-06-17 20:24 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个东西主要用于生成树计数一类问题。 对于一个n个点的树,它的Prufer序列长度为n2且这两者一一对应。 所以这个就很好解释了n个点生成树为n^个。 一棵树转化成prufer序列是这样的: 找到一个编号最小的叶子节点,将这个叶子节点的父亲加入,并删除这个叶子节点,直到 阅读全文
posted @ 2021-06-17 19:51 275307894a 阅读(46) 评论(0) 推荐(0) 编辑
摘要:题面传送门 真正跑出来的时候被吓到了跑的是真的快。 首先这种题目肯定要跑出最小割树。在最小割树上面乱搞。 然后变成经过树上每一个点,两点距离为路径最小值求最大路径。 我们肯定想让最小的边经过的次数最小。 那么我们让它只走一次。 把这条边断开,得到两棵树,添加一条路径,是从一棵树的终点到另一棵树的起点 阅读全文
posted @ 2021-06-16 22:27 275307894a 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题面传送门 显然我们不能爆枚点对算最小割。 然而这个东西其实可以把最小割树跑出来然后搞。 但是因为求的是种类个数所以连最小割树都不用建出来直接扔到一个map里面即可。 时间复杂度O(n3m)但是根本跑不满。 code: #include <vector> #include<iostream> 阅读全文
posted @ 2021-06-16 21:27 275307894a 阅读(31) 评论(0) 推荐(0) 编辑
摘要:题面传送门 真 块长的艺术。 这种东西显然树类型维护不了,我们考虑分块。 根据套路我们维护每个块的有序数列记为B,然后每次修改归并,每次查询先二分然后零散块暴力查整块二分即可。 设块长为S,修改复杂度O(S+\frac),查询复杂度O(logn(S+\fraclogS)) 我们发现零 阅读全文
posted @ 2021-06-16 20:40 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 看到一道题口胡出最小割树的做法了但是不会写。于是赶紧来学习一下。 首先最小割树的定义是:有这么一棵树,树上的边(x,y)的权值为原图x,y之间的最小割的值。并且将这颗树的这条边断开划分出的两个点集是原图断开最小割的两个点集。 那么依据这个东西建树,先随便找到两个点,求出最小割,划 阅读全文
posted @ 2021-06-15 21:17 275307894a 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个东西你显然不能写个高斯消元O(n3)弄过去。 但是这个系数又是那么的有规律。 所以我们考虑一种人为构造的消元办法使得其一定能消完所有未知数,这样我们只要考虑等式右边的加减即可。 先把最后要求的方程扔在最后面然后最后取相反数即可。 首先仿照高斯消元的方法我们先考虑给第一项消掉,显然 阅读全文
posted @ 2021-06-15 19:21 275307894a 阅读(68) 评论(0) 推荐(0) 编辑
摘要:题面传送门 震惊!Ynoi居然不卡常。 首先你看到这个东西开了2.5s而且数据范围只有4×105就大概知道这个是个根号了。 然后又发现这个有很强的弹飞绵羊既视感。 于是考虑分块。 考虑维护和弹飞绵羊一样的一个东西Bi表示i跳出当前块到哪里。 然后零散块暴力重构即可。 阅读全文
posted @ 2021-06-13 22:12 275307894a 阅读(61) 评论(0) 推荐(0) 编辑
摘要:题面传送门 可以发现我们要计算的其实是给定矩形的一些左下角和右上角求最大面积。 对于左下角,如果我们有两个左下角(x1,y1),(x2,y2)x1>x2,y1>y2那么第一个左下角其实是没有用的。】 右上角同理。 然后显然就可以决策单调性了。 时间复杂度O(nlogn) code: # 阅读全文
posted @ 2021-06-13 20:29 275307894a 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题面传送门 不知道这道题为什么有紫题难度,随便写写就过了。 容易想到dp解决这个问题。 我们设fi,j,t,0/1\(\)[i,j]区间内的小精灵,经过了t的时间,在左/右端点能得到的最大收益。 这个东西随便从左右转移一下即可。 然后你会发现这个东西是$O(n2MaxT) 阅读全文
posted @ 2021-06-12 19:42 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 你会发现这道题时限松得不可思议 这种东西离线都是根号的肯定在线考虑分块。 然后显然预处理Fi,j表示ij块间的答案。同时我们处理Gi,j表示前i个块中小于等于j的元素个数用以处理F 然后两个散块之间直接归并就好了。 散块内部用树状数组预处理。 散 阅读全文
posted @ 2021-06-11 20:50 275307894a 阅读(45) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个东西显然dp可以搞。 设fii处符合的最大符合数。 考虑一个j能转移到i的条件。 j<iai<aj,ijaiaj 把第三个变形一下就是iaijaj 好的我们可以cdq三维偏序了 注意观察一下,后 阅读全文
posted @ 2021-06-11 20:13 275307894a 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我也不知道这个怎么一只根号一只log过1e5的…… 首先我们不考虑a这个限制。 设F(x)x的约数和,这个可以枚举倍数O(nlogn)解决。 那么显然有式子Fgcd(i,j) 提前枚举gcd就有$\s 阅读全文
posted @ 2021-06-08 20:47 275307894a 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先我们来找一下这个题目有什么特殊性质。 考虑最后生成的排列A,则这个A一定没有连续四个Ai满足Ai>Ai+1>Ai+2>Ai+3,因为序列长度只有3。换句话说,我们将这个序列将前缀max分段,段的长度不会超过3 然而这个也不是充要条件。 我们发 阅读全文
posted @ 2021-06-08 19:32 275307894a 阅读(45) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们考虑怎么确定一个序列的深度。 可以肯定的是我们选出来的子序列一定是长度为2x的,前x个为(,后x) 如果一个序列是确定的,我们显然可以维护两个值d1,d2表示当前位置左边的(\(\))个数。 因为每次要么是d1加一,要么是d2减一,所 阅读全文
posted @ 2021-06-06 16:10 275307894a 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题面传送门 吐槽一下为什么求一次函数解析式然后暴力带入会WA,然后求斜率比较就对了啊。 首先那个式子不是很好处理,我们来考虑这个式子的组合意义。 容易想到这个就是非边界上的点选与不选,即选点集能构成凸包的方案数。 然后这个容斥一下,枚举共线点即可。 时间复杂度O(n3) code: #incl 阅读全文
posted @ 2021-06-06 15:22 275307894a 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个其实是板子题。 容易发现我们需要让每条边的下界是1,上界是正无穷。 所以模仿最大流一样的建边跑最小费用最大流然后再加上每条边本来的费用即可。 时间复杂度O() code: #include <vector> #include<iostream> #include<cstd 阅读全文
posted @ 2021-06-05 22:42 275307894a 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题面传送门 写了个线性基暴力插入结果又T又WA 首先我们可以把这个东西看成二进制多项式。 然后这个二进制多项式的两个操作可以看成加减和位移。 我们考虑处理出G=gcd(ai),那么可以证明是G的倍数是能被表示出来的充要条件。 因为a都是G的倍数而加减乘除并不影响这个。 处理G阅读全文
posted @ 2021-06-05 22:04 275307894a 阅读(82) 评论(0) 推荐(0) 编辑
摘要:题面传送门 像个sb一样写了树套树然后又卡空间又卡时间。 首先我们考虑一下没有深度限制怎么做。 考虑把每种颜色都拿出来建一棵斯坦纳树,所以斯坦纳树上的所有点都有这种颜色的一个贡献。 具体的,维护每个点最近的两个点的dfs序然后每个点加一,lca处减一即可。查询只要查dfs序上子树和即可。 现在是考虑 阅读全文
posted @ 2021-06-05 19:55 275307894a 阅读(46) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这道题首先考虑拆位,但是有加减法所以感觉很难做。 考虑另一种方法,把每种值出现的次数算出来然后再计算。 设ansi为区间和为i出现的次数,fi为前缀和为i的出现次数。 那么就有ansi=fj×fi+j 然后显然翻一下 阅读全文
posted @ 2021-06-05 14:38 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题面传送门 感觉完全没有黑题难度啊。 首先最大值最小就想到二分答案。二分后转化成判定性问题。 然后我们将两两曼哈顿距离大于mid的点连边,我们只需要判断是否是二分图即可。 这个东西如果真的建边来空间复杂度很大所以直接隐式建边即可。 然后第二个问统计方案,可以发现如果在一个联通块内有两种情况,那么 阅读全文
posted @ 2021-06-04 22:24 275307894a 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面传送门 一道神仙题目。 枚举个gcd把原式化为d3ij[gcd(i,j)=1] 设$sum(n)=\sum\limits_\sum\limits_{k3\sum\limits_ 阅读全文
posted @ 2021-06-03 21:00 275307894a 阅读(41) 评论(0) 推荐(0) 编辑
摘要:杜教筛是个奇奇怪怪的东西。在此之前先介绍一个更奇奇怪怪的东西 狄利克雷卷积 定义(f*g)(n)=\sum\limits_{d|n}{f(d)\times g(\frac)} 那么有几个基本结论: μI=ε μid=ϕ \(\phi*I=id 阅读全文
posted @ 2021-06-03 19:06 275307894a 阅读(46) 评论(0) 推荐(0) 编辑
摘要:题面传送门 容易想到费用流。 但是这道题真的数据很强啊。 对于每个点拆点以保证其只被选一次。 同时对于膜7同余,就对于每个余数建一条链然后从这条链上进出。 对于加一减一要麻烦一点,首先要对于每个数建一条链然后从加一减一的那条链上进出。 然后注意一定要正序建边呀。 code: #include < 阅读全文
posted @ 2021-06-01 20:36 275307894a 阅读(34) 评论(0) 推荐(0) 编辑

浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示