把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 45 下一页
摘要: 题面传送门 居然还有这种做法,学到了学到了。 首先这个肯定是有一条分割线,上半边为$0$,下半边为$1$,证明显然。 所以这启发我们跑最小割。 但是这个东西T了一个点。 考虑到这个是一张平面图,可以转化成对偶图然后跑最短路即可。时间复杂度$O(SPFA)$ code: #include<bits/s 阅读全文
posted @ 2021-07-25 18:31 275307894a 阅读(43) 评论(0) 推荐(0)
摘要: A 容易发现只有进位的时候会出现这种情况。 所以直接输出$\frac{n+1}{10}$即可。 code: int T,n; int main(){ freopen("1.in","r",stdin); scanf("%d",&T);while(T--){ scanf("%d",&n);printf 阅读全文
posted @ 2021-07-25 10:25 275307894a 阅读(119) 评论(0) 推荐(0)
摘要: 题面传送门 这么小的$n$,这么大的$T$肯定是矩阵快速幂的节奏。 我们考虑这个边的时间怎么处理。 因为时间是真的小,所以我们可以将每个点拆成$5$个点,然后由每个点的第$w$个点向那边的点连边。 然后这个美食节我们可以拆成$k+1$段,每一段直接矩阵快速幂,中间乘上特殊矩阵。 然后我们发现这个东西 阅读全文
posted @ 2021-07-25 09:59 275307894a 阅读(49) 评论(0) 推荐(0)
摘要: 题面传送门 这个东西不太会log做法就写了分块算法。 考虑分块。 我们设$F_{i,j}$表示$i$点从$i$后面那个块到$j$块的答案,这个东西可以直接将两块归并得到答案。 同样我们处理出$G_{i,j}$表示$i$点从$i$点前面那个块到$j$块的答案,方法同上。 我们再处理出$H_{i,j}$ 阅读全文
posted @ 2021-07-25 08:32 275307894a 阅读(49) 评论(0) 推荐(0)
摘要: 题面传送门 如果我们想求一个矩阵的逆,那么只要将一个矩阵变换成单位矩阵,然后操作矩阵的乘积就是答案。 然后这个过程可以用一个类似高斯消元的方法实现,时间复杂度$O(n^3)$ code: #include<bits/stdc++.h> #define I inline #define max(a,b 阅读全文
posted @ 2021-07-23 21:44 275307894a 阅读(58) 评论(0) 推荐(0)
摘要: 题面传送门 CCPC也出水题。 我们考虑这种东西怎么做,首先肯定枚举lca,然后变成了统计一个点在子树内的点对的两两lca是当前节点的权值异或和。 如果这个是方案数那么就很好做我们直接dsu on tree统计一下即可。但是这个异或让我们很不好做。 对于这种东西我们考虑拆位。 然后对于每一位分别计算 阅读全文
posted @ 2021-07-22 22:26 275307894a 阅读(74) 评论(0) 推荐(0)
摘要: 题面传送门 这个东西一眼先把$gcd$提出来然后对于每个gcd只算权值为gcd倍数的答案。 然后这个东西简单容斥一下就是我们要的恰好为当前值的答案。 但是这个生成树权值和怎么做呢,矩阵树定理只能处理生成树权值积。 我们考虑魔改,如果我们将生成树权值积看成$n-1$个一次多项式相乘,然后取一次项,根据 阅读全文
posted @ 2021-07-22 21:52 275307894a 阅读(50) 评论(0) 推荐(0)
摘要: 题面传送门 很奇怪为什么这么水的题目能到黑题。 因为它有一条$1$到$n$且必须经过$k$的路径,所以我们考虑状压dp出路径条数然后再矩阵树定理。 设$dp_{i,j}$为已经经过了$i$集合的点,且最后一个点为$j$的方案数,这个东西是平凡的$O(2nn2)$ 然后对于每个$dp_{i,n}$,我 阅读全文
posted @ 2021-07-22 21:44 275307894a 阅读(78) 评论(0) 推荐(0)
摘要: 这种选$k$条的东西一般就是wqs二分。 这道题目显然有凸性,然后就可以二分斜率了。 但是这个输出方案很难搞,按照wqs二分分的方案只有90分因为有斜率相同。 我们考虑对每个点维护两个值$L$和$R$表示最小和最大能选的段数。 这个东西dp的时候稍微处理一下就好了。 然后我们对于每一个点$i$,如果 阅读全文
posted @ 2021-07-22 21:35 275307894a 阅读(44) 评论(0) 推荐(0)
摘要: 这个东西正着不太好做我们考虑二分转化成判定性问题。 然后问题就变成:每个物品有一个重量和一个容量,要选取最多的物品且选取一个物品时已经选的物品重量总和不能超过当前物品容积。 这个东西可以反悔贪心,具体地,我们维护一个堆,并将$B$排序,然后得到一个物品时先判断能不能直接放进去,然后看能不能将最大的替 阅读全文
posted @ 2021-07-22 21:19 275307894a 阅读(35) 评论(0) 推荐(0)
摘要: 首先这道题你发现所有异或和不变所以当异或和为$0$时一定平局。 当异或和不为$0$时我们只要考虑最高位即可。 具体的,我们将拥有这个最高位的置为$1$,没有的置为$0$,然后就变成了如何让先手取到$1$的个数为奇数。 这个东西写个dp就可以$O(n^2)$了。 然后把dp打表输出规律就可以$O(n) 阅读全文
posted @ 2021-07-22 21:01 275307894a 阅读(54) 评论(0) 推荐(0)
摘要: 那个bitset做法是真的屑所以我们考虑更优秀的做法。 考虑分治。 对于一个轴分治,对于两个点在分治线两边的就一定会经过中轴线,我们只要预处理出每个点到中轴线上每个点的连通性然后看看是否在中轴线上有一个点两点均可达。 然后分治下去即可,时间复杂度$O(\frac{n^3logn})$,但是并没有代码 阅读全文
posted @ 2021-07-22 20:57 275307894a 阅读(41) 评论(0) 推荐(0)
摘要: 题面传送门 这种东西一眼看上去很不可做。 然后想到了fbi的转移矩阵其实是$\begin1&&1\&&\1&&0\end$ 又因为矩阵乘法满足结合律和分配律,然后就可以用线段树维护区间矩阵加和即可。 时间复杂度$O(2^3nlogn)$ code: #include<bits/stdc++.h> # 阅读全文
posted @ 2021-07-21 23:57 275307894a 阅读(61) 评论(0) 推荐(0)
摘要: 题面传送门 随机化算法没有前途! 我们考虑有什么确定性算法来解决这道题。 询问树上路径就考虑树上莫队,发现拍成欧拉序后可以用一个set维护出现奇数种颜色的个数。 但是这个是$O(n\sqrt n logn)$的过不去。 我们考虑用分块来维护这个东西,对出现奇数次的点维护一个分块,然后就可以做到$O( 阅读全文
posted @ 2021-07-21 19:55 275307894a 阅读(64) 评论(0) 推荐(0)
摘要: Day0 中午12:30赶到机房看见没有人以为他们都走了( 然后发现是去吃饭了。 然后13:30就坐上大巴车走了。 车上调掉了两天没过的拉格朗日插值2然后发现是一个小地方没减一。 为什么全局都减了就这个地方没减啊 之后从yzx巨佬那里蹭网,去洛谷比赛写掉了A和B两道题。 和cqy讨论如果E如何快速找 阅读全文
posted @ 2021-07-20 06:40 275307894a 阅读(380) 评论(0) 推荐(1)
摘要: 题面传送门 这道题是dsu on tree的板子题。 我们考虑如果一个子串状压后1的个数小于等于$1$那么就肯定是回文串。 然后两个点之间路径的异或值就是两个点的前缀异或值。 那么直接dsu on tree即可。 dsu on tree的流程大概是先dfs轻子树然后删除贡献,然后dfs重子树保留贡献 阅读全文
posted @ 2021-07-20 06:32 275307894a 阅读(56) 评论(0) 推荐(0)
摘要: 首先这个$60$分的树形dp很好打,直接裸的树上背包合并即可。加了一个每次与子树大小取min的剪枝。 时间复杂度是$O(nk2)$ 然后写了一发过了。 然后再考虑这个东西的复杂度。 首先考虑产生$k2$贡献的时候,这个显然是只有$O(\frac)$次的。 然后如果是小于$k$合并到大于$k$,容易发 阅读全文
posted @ 2021-07-20 06:25 275307894a 阅读(34) 评论(0) 推荐(0)
摘要: 一眼看成分段方式从前到后。 我们先考虑什么情况两个字符集拼出来地字符串会相同,容易发现是两个字符集全等。 这个东西可以用hash判定。 然后我们考虑怎么求出这个字符集。 每次$n%x$这个块会向右走一个,那么会多一个块再少一个块,然后这个也可以字符串hash维护。 就做完了。之后重排列计数一下即可。 阅读全文
posted @ 2021-07-20 06:08 275307894a 阅读(36) 评论(0) 推荐(0)
摘要: 打表天下第一不接受反驳 这里讲不打表做法吧。 我们考虑枚举一个数算出另一个数的贡献。 然后这个还不太好算我们再枚举一维长度。 我们将所有长度为当前长度的子串加入AC自动机中,并限制一旦走到长度为当前长度的节点就不能走下去。 那么就可以愉快地数位dp了。 时间复杂度大概是$O(5^3n)$ 代码就写了 阅读全文
posted @ 2021-07-20 06:02 275307894a 阅读(58) 评论(0) 推荐(0)
摘要: 首先第一问的树形换根dp是很显然的。 首先一次dp算出一个点子树内的答案,然后再一次换根把儿子什么的排个序就好了。 考虑第二个怎么做。 我们考虑$a$到$b$之间的路径,这中间肯定有一条边是不被走到的,然后感性理解一下这个东西具有可二分性。 就是大概要找到一个两边平均的位置。 然后就很好做了。时间复 阅读全文
posted @ 2021-07-20 05:55 275307894a 阅读(36) 评论(0) 推荐(0)
摘要: 这个东西的$k$很小,考虑爆搜。 首先我们对于每层爆搜我们要保证每次搜到的是最优的。 而且我们还要同种的一起处理。 我们考虑对每一层开一个vector,存的是当前搜到的可以作为一个end的位置可重集合。 然后每次扩展肯定是找到这一范围内最小的没被搜过的点进行。这个可以用主席树维护后缀k小值实现。 然 阅读全文
posted @ 2021-07-19 07:01 275307894a 阅读(52) 评论(0) 推荐(0)
摘要: 题面传送门 首先这种题目肯定数位dp,先反手一个差分。 然后有多组询问考虑先全部处理出来。 但是这个限制不太好处理。 然而我们发现这$9$个数字的最大公约数只有$2520$,那么我们存当前数模$2520$的值和所有值的最大公约数即可。然后这个所有值的最大公约数只有$48$种,可以优化一下。 然后就是 阅读全文
posted @ 2021-07-19 06:42 275307894a 阅读(34) 评论(0) 推荐(0)
摘要: 这个东西$80$分暴力$O(NQs2)$很显然,直接每次询问跑一次树上背包即可。 然后考虑这个随机有什么用 这个东西树高是$logn$,每个节点的孩子个数期望$e$ 那么每次修改暴力跳修改,然后每次查询暴力跳询问即可。 但是这个东西还可以不依赖树随机,因为最大只有$10$,所以跳$10$层就可以回来 阅读全文
posted @ 2021-07-18 06:40 275307894a 阅读(60) 评论(0) 推荐(0)
摘要: 这个东西显然可以二分。转化为判定性问题。 我们考虑一个答案怎么被判定合法。 首先我们将大于等于$mid$的边去掉,然后得到若干个连通块,每个连通块有一个$siz$和$S$的总和。 考虑这个有什么充要条件之类的,仔细思考一下会发现就是对于任意$i$都有$siz_i\leq ToTS-S_i$ 这个证明 阅读全文
posted @ 2021-07-18 06:35 275307894a 阅读(40) 评论(0) 推荐(0)
摘要: 图不连通差评。 可以发现这样建边每个连通块只有一个环。 这样的话环上的点可以任意选择。 但是然后如果你正着这样做不是很好做,考虑反过来。求最长上升就好做了,用一个支持撤销的树状数组维护即可。 时间复杂度$O(nlogn)$ code: #include<bits/stdc++.h> #define 阅读全文
posted @ 2021-07-18 06:30 275307894a 阅读(52) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 45 下一页
浏览器标题切换
浏览器标题切换end