- 博客(11)
- 收藏
- 关注
原创 [ 并查集 复杂度分析 杂题 ] Codeforces920E Connected Components?
记原图的补图中每个点的度数为 didid_i 。 先找出 didid_i 最小的点,将与其有边相连的点作为一个连通块,其他每个点单独作为一个连通块。暴力枚举 222 个连通块,再枚举其中的点,查询是否有边,有边则合并。 这样显然是正确的,然后就是复杂度的问题。 由于刚开始选的是 didid_i 最小的点,所以 di≤⌊mn⌋di≤⌊mn⌋d_i\le \lfloor{m\over n}\rf...
2018-02-27 14:15:49 526
原创 [ 线段树 树状数组 ] Codeforces935F Fafa and Array
先考虑询问。 对于边界的点直接更新答案。 对于不在边界上的点:若 ai−1≤aiai−1≤aia_{i-1}\le a_i 且 ai+1≤aiai+1≤aia_{i+1}\le a_i ,增大 aiaia_i 时答案的增加量为 2x2x2x 。若 aiaia_i 在 ai−1ai−1a_{i-1} 和 ai+1ai+1a_{i+1} 之间,设 t=max(ai−1,ai+1)−ait=...
2018-02-27 10:54:53 359
原创 [ 莫队 哈夫曼树 ] Codeforces700D Huffman Coding on Segment
莫队。每次询问不断将值小于 n−−√n\sqrt n 的合并,剩下的用构建哈夫曼树的方法来做就可以了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=100010;struct Node{ int l,r,id;}c[N];int k,n,m,S,L=1,R;...
2018-02-26 14:33:02 269
原创 [ tarjan ] Codeforces700C Break Up
先枚举删一条边,然后找出新图中所有的桥,可以发现如果一条边是桥且在 sss 到 ttt 的路径上,将其删去一定会使 sss 与 ttt 不连通。求个最小值就好了。#include<bits/stdc++.h>using namespace std;const int N=1010;const int M=30010;int k,n,m,S,T,x,y;int w[M]...
2018-02-26 10:02:17 333
原创 [ 带修改莫队 ] Codeforces940F Machine Learning
直接上带修改莫队。维护 mexmexmex 只需要对权值分块,每块记录出现次数,查询时找到第一个有数没出现过的块,然后在块中枚举。#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2...
2018-02-26 07:22:27 482
原创 [ 有上下界网络流 ] Codeforces704D Captain America
假设 r≤br≤br\le b 。 把每一行作为左边的点,每一列作为右边的点建一张二分图。 每个点在对应的行列间连边,流量上限为 111 。这条边流量为 111 表示选红色,否则表示选蓝色。 对于左边的一个点,设右边与它相邻的点数为 sss ,它的限制为 ddd ,那么通过这个结点的流量 fff 满足 |2f−s|≤d|2f−s|≤d|2f-s|\le d s−d2≤f≤s+d2s−d2...
2018-02-25 14:21:34 300
原创 [ 杂题 ] Codeforces685C Optimal Point
二分答案,对于每个点求出满足的区域,求出这些区域的交。一个区域可以表示成: ...≤x+y+z≤......≤x+y+z≤......\le x+y+z\le ... ...≤x+y−z≤......≤x+y−z≤......\le x+y-z\le ... ...≤x−y+z≤......≤x−y+z≤......\le x-y+z\le ... ...≤−x+y+z≤......≤−x...
2018-02-25 09:20:15 427
原创 [ 树状数组 ] BZOJ5170
BZOJ3580的简化版。 记 fifif_i 表示第 iii 个数前面比它大的数的个数。 若 fi≤kfi≤kf_i\le k ,在 kkk 次操作后它前面所有数一定都比它小,否则它最终的位置为 i−ki−ki-k 。 把所有 fi≤kfi≤kf_i\le k 的数排一遍序,依次放入没有数的位置就好了。#include<bits/stdc++.h>using namesp...
2018-02-24 21:09:09 379
原创 [ DP ] Codeforces938F Erasing Substrings
显然肯定有一种方案使删的每一段子串在原字符串中是互不包含的,因为包含和相邻是等价的。 那么有一个简单的DP: 设 fi,jfi,jf_{i,j} 表示删完后还有 iii 位,已删除的长度为 jjj 时的最优答案。 由于 fi,jfi,jf_{i,j} 是个字符串,这样复杂度是 O(n3logn)O(n3logn)O(n^3\log n) 的。 然后考虑能否不记字符串。注意到每个状态都是答...
2018-02-24 19:40:14 536
原创 [ 博弈论 ] Codeforces919F A Game With Numbers
发现数字的位置是没有影响的,那么可以用隔板法求出状态数为 (124)2=245025(124)2=245025{12\choose 4}^2=245025 。 然后不停用已确定的状态更新其他状态就好了。#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N...
2018-02-10 13:43:52 386
原创 [ 数论 ] Codeforces919E Congruence Equation
假设 n=Ap+B(B<p)n=Ap+B(B<p)n=Ap+B(BB⋅aAp+B≡b ( mod p )B·aAp+B≡b ( mod p )B·a^{Ap+B}\equiv b ~(~mod~p~) B⋅aA+B≡b ( mod p )B·aA+B≡b&n
2018-02-01 13:16:33 701
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人