复杂度分析
gjghfd
这个作者很懒,什么都没留下…
展开
-
[ 分治 复杂度分析 ] [ Cerc2012 ] BZOJ4059 Non-boring sequences
对于区间 [l,r][l,r][l,r] ,如果 aiaia_i 在区间内只出现了一次,那么跨过 aiaia_i 的区间一定是合法的,只需要判断 [l,i−1][l,i−1][l,i-1] 和 [i+1,r][i+1,r][i+1,r] 就好了。 这样就得到了一个分治的做法:每次枚举区间中一个点,如果在区间中只出现过一次就分治下去。 有一个优化:把枚举顺序变成每次左边枚举一个点、右边枚举一个点...原创 2018-03-07 15:38:54 · 322 阅读 · 0 评论 -
[ 分治 复杂度分析 ] [ NWERC2017 ] BZOJ5200 Factor-Free Tree
和bzoj4059一样的套路。#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p...原创 2018-03-07 16:12:04 · 312 阅读 · 0 评论 -
[ 并查集 复杂度分析 杂题 ] 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 阅读 · 0 评论 -
[ NOI2017 ] [ Hash 复杂度分析 ] BZOJ4943
将所有字符串哈希后存入哈希表,合并或分裂时暴力更新。 这样复杂度看上去是 O(nk2)O(nk2)O(nk^2) 的,实际上是 O(ck2+nk)O(ck2+nk)O(ck^2+nk) 。 证明: 显然要使复杂度更大,合并的 222 个队列的长度一定是 ≤k≤k \le k 的 假如使合并的队列长度为 SSS ,这样的队列只有 nSnSn\over S 个,复杂度为 nSS2=nSnSS2...原创 2018-03-06 11:41:34 · 298 阅读 · 0 评论 -
[ 杂题 复杂度分析 ] Codeforces955F Heaps
对于 k=1k=1k=1 ,可以直接树形DP求出答案。 对于 k>1k>1k>1 ,显然 maxdepth<logknmaxdepth<logknmax_{depth}dpi,jdpi,jdp_{i,j} 表示 iii 号点,depthdepthdepth 为 jjj 时最大的 kkk ,那么状态数是 O(nlogn)O(nlogn)O(n\log n) 的。 如果...原创 2018-03-26 17:43:20 · 428 阅读 · 0 评论