辣鸡咯..
noip打的是真的菜.. 退役选手可能要失去各种wc的机会了..
哎争取多一次wc的机会吧(flag)
来看看做了多少?
56/150
Codeforces Round #443 (Div. 1)
B. Teams Formation
依次缩去$m-1$个间隔中的相同的东西,最后剩下的再搞就行了
*C. Tournament
假如A能赢B,就在图中建立A->B的边,那么一个人要是能谁都赢,就是它能到达所有其他点
现在就是要动态维护这个强连通分量
发现这个图不会存在大于等于三且中间没有边的环,也就是对于一个点对一定会存在边
然后发现缩完强连通分量之后可以拉成一条链
每次加入一个点,找出最小的能战胜它的和最大的战胜不了它的,把中间全部合起来
这样就很棒了
*D. Magic Breeding
想象如果这个题只存在$1$和$0$,最多只有$2^k$种不同的特征,这个问题就可以用bitset很好的做出来了
现在把每一列拆成$k$个点,表示他是否大于等于该列第$i$个数,然后就相当于上面的题了
可能复杂度比较大,但是就是能过,毕竟$O(\frac{q2^kk}{32})$
[2017.11.21]
发现自己不用退役真的很开心啊..
没想到有人已经自大到这种地步了啊..
4291: [PA2015]Kieszonkowe
扫一遍就好了
4236: JOIOJI
扫一遍用map维护$(s1-s0,s2-s1)$的最迟出现位置来dp
[2017.11.22]
4260: Codechef REBXOR
用trie找异或起来最大的
4247: 挂饰
发现只跟钩子个数有关,然后就很好dp了
[2017.11.25]
4237: 稻草人
cdq再维护两个单调栈即可
4245: [ONTAK2015]OR-XOR
考虑最后答案在二进制的第$i$位,如果要让它为$0$,那么就需要断某些点
从大到小考虑这个用bitset维护一下就好了
4241: 历史研究
分块sb题
[2017.11.28]
真的是越来越辣鸡了.. 线性基都不会了..
4292: [PA2015]Równanie
枚举$f(n)$即可
4276: [ONTAK2015]Bajtman i Okrągły Robin
可以线段树优化建图跑费用流
也可以贪心来跑匈牙利
跟yyl学到了一种$O(n^2)$的做法:
定义$f_x$表示选$x$的人最远的右端点在哪
*4269: 再见Xor
做出线性基就可以求出最大值
然后次大值就看哪一位选的和最大值不一样就好了
[2017.11.29]
今天状态还好吧..
4216: Pig
把它$20$个分一块就行了
4278: [ONTAK2015]Tasowanie
一开始太想当然,后来仔细想想就是个后缀数组裸题..
%%%王队长 其实可以贪心
只要一段是单调不升的,就可以整段拿出来
[2017.11.30-12.1]
昨天忘记写了..
天天犯sb错误,inf又没开大
4238: 电压
跟4424差不多
4289: PA2012 Tax
把边看成点,然后连到同一个点的按照边权排序
大的往小的连$0$,小的往大的连边权差
4282: 慎二的随机数列
类似于普通的最长上升子序列
4293: [PA2015]Siano
容易发现相对大小不会改变
就可以用线段树维护了
[2017.12.3]
4205: 卡牌配对
把原问题转成找至少两个不互质的
然后就增加$3\times 46\times 46$个节点就可以跑网络流的
dinic奇快无比??
*4239: 巴士走读
把边看成点跑类似最短路的东西
md怎么这么多没有用的边..
[2017.12.4]
4264: 小C找朋友
hash一下就好了
4275: [ONTAK2015]Badania naukowe
找出$a$、$b$串中所有$c$出现的位置
dp一个前缀和后缀就行了
*4204: 取球游戏
很容易想到$O(n^3log\ inf)$的做法
然后发现那个矩阵比较特殊每一行都是前一行右移一位
所以只维护第一行就行了
4281: [ONTAK2015]Związek Harcerstwa Bajtockiego
很水啊..
[2017.12.5]
今天效率并不高..
4296: [PA2015]Mistrzostwa
从度数小的点开始删,删剩下的就是联通块的大小了
4231: 回忆树
把询问拆成三块,中间那块可以暴力搞
剩下的维护ac自动机的fail树,询问就是统计子树和
*4298: [ONTAK2015]Bajtocja
启发式合并,hash维护每个点每层所属联通快
4294: [PA2015]Fibonacci
找规律发现$60$、$300$、$1500$、$15000\cdots$
然后宽搜一下
不知道为什么wa了啊..
[2017.12.6]
效率是真的低.. 但是还是先治病吧..
3261: 最大异或和
可持久化trie裸题
4212: 神牛的养成计划
一直在想怎么排序字符串
想到后面发现要用到trie就不如直接在trie上排序
排序后对于询问的前缀就是一段区间
再找后缀就是可持久化trie的裸题了
4285: 使者
cdq裸题??
[2017.12.7]
*4206: 最大团
最大团是npc hard的啊..
过每个点做切线,每个点相当于覆盖一条弧
不满足条件当且仅当覆盖的区间相离或者包含
现在要选若干个点使得两两互相有交集
又发现一个点取它在弧上的补集是不会影响答案的
把覆盖掉$(r,0)$的点取补集
就可以把问题转化成选取若干条线段使得
$$l_1<l_2<l_3<\cdots<l_k<r_1<r_2<r_3<\cdots<r_k$$
把它按照左端点排序,就可以通过做最长上升子序列来计算答案了
但是这样做难免会选到包含的
于是我们枚举一个让它必须选,然后剔除掉被它包含的所有线段再做就没事了
这样复杂度是$O(n^2logn)$的
4660: Crazy Rabbit
三倍经验
3663: Crazy Rabbit
三倍经验
cf575 A. Fibonotci
$n$个$n$个做,修改的用线段树维护
cf575 B. Bribes
开$nlogn$个节点维护答案
*cf575 G. Run for beer
最短路,然后反着维护..
不得不说细节是真的多
[2017.12.8-9]
*4230: 倒计时
设$f_{i,j,k}$和$g_{i,j,k}$分别表示$****9999x$这个数有连续$i$个$9$,前面最大的数是$j$,个位是$k$使得前面退位的步数和退完后的个位是啥
然后再从原数利用dp数组减就行了
4209: 西瓜王
主席树裸题
4297: [PA2015]Rozstaw szyn
dp,然后可以得到每个孩子节点取值的范围
然后扫一遍即可
4262: Sum
线段树裸题
[2017.12.10]
惨了现在没有数据都不会查错了..
晚上做了一场atcoder.. md均摊$O(n)$的都没发现..
4246: 两个人的星座
发现一对三角形有且仅有两条公切线
然后就枚举一个点,剩下的点按照极角排序扫一遍就行了
凭什么把重载运算符放在结构体内就快这么多啊..
4277: [ONTAK2015]Cięcie
挺容易想到的dp吧
[2017.12.11-12]
做题极其不顺,很难受
*4233: [Cerc2013]Captain Obvious and the Rabbit-Man
消元找规律,发现消出$a_i$的系数刚好是$(x-f[1])(x-f[2])(x-f[3])\cdots(x-f[i-1])$的系数
然后我就被卡常了
然后想想发现每次减去前一行乘上$f_{i-1}$也是可以消的..
*4248: AAQQZ
真尼玛难做
枚举一个最长回文串然后两边展开就行了
细节真的多
4280: [ONTAK2015]Stumilowy sad
线段树裸题??
*4207: Can
分治然后两边展开
3721: PA2014 Final Bazarek
4209弱化版
4250: [PA2014]Bazarek
同上
[2017.12.13-14]
磨出了一道题真的棒..
*3716: [PA2014]Muzeum
把它坐标拉伸使得每个警卫看到的是一个九十度的角
然后再把整个图旋转九十度
根据最小割模型连边,发现就是警卫连到手办的最大流
然后就用按$x$坐标排序,用set维护$y$坐标进行贪心就好了
4251: [PA2014]Muzeum
同上
*4271: chemistry 化学
先放一个kpm的链接以表尊敬
里面有一句超有道理的话
假如两棵无根树同构,那么以各自的重心作为根的有根树也同构
一开始还打算枚举最长链然后burnside一下的..
然后发现这样做是$O(n^3)$,用fft优化可以做到$O(n^2logn)$
但是要高精度,这样的做法就会T掉
然后看到kpm这句话感觉很有道理,就从重心开始dp,每个节点最多只有$3$个孩子,再让根的子树都小于等于$\dfrac{n}{2}$就好了
但是还有一种情况是有两个重心的..
这种情况发现可以加一个点在两个重心之间就没问题了..
然后再套上高精度就perfect了..
[2017.12.15-17]
*4219: 跑得比谁都快
上述
3007: 拯救小云公主
上题弱化版,可以$O(n^2)$做..
5091: 摘苹果
发现无论多少次在某个点的概率都一样..
就随便搞搞行了..
[2017.12.18-22]
不知不觉又拖更了..
然后发现自己啥都没做天天颓..
2393: Cirno的完美算数教室
xjb爆搜.. 从大到小枚举会快
*3622: 已经没有什么好害怕的了
把两边排序
$f_{i,j}$表示前$i$个至少有$j$对左边大于右边的方案数
$g_i$表示恰好有$i$对左边大于右边的方案数
$g_i=\sum\limits_{k=i}^nC_k^if_{n,k}$
然后就行了
2916: [Poi1997]Monochromatic Triangles
所有-不合法的就行了
*4361: isn
$f_i$表示长度为$i$不降子序列的个数
那么答案就是$\sum\limits_{i=1}^n(f_i\times(n-i)!-f_{i+1}\times(n-i-1)!\times(i+1))$
5083: 普及
用单调栈可以求出以每个位置为开头、结尾最远的点
然后就用线段树搞搞就行了
有另一种做法,$O(n)$RMQ可以把复杂度优化到$O(n)$,可惜我不会qaq
*5097: 实时导航
询问的时候跑最短路,用bitset维护堆操作来优化就可以做到$O(q\dfrac{n^2}{32})$了
具体来说就是开$4$个bitset,维护已经出堆的点和在堆内的点的最短距离的点集
5004: 开锁魔法II
发现这个图是个基环内向树,他的叶子节点是全都要选的
然后$f_{i,j}$表是前$i$个联通块选$j$个节点最后全部搞定的方案数就没了
没想到double存$300$的组合数都可以啊..
5003: 与链
每一位分开看就是个多重背包..
*5005: 乒乓游戏
线段树维护覆盖某个区间的所有点
每次新来一个就看左右端点被哪些区间覆盖
用并查集合并下就行了
*5011: [Jx2017]颜色
很像之前做的一道coci的题目..
就是找把一个圆拆成两半且同一种颜色都在一边的方案数
hash一下..
hash值相同的就可以断开了..
Codeforces Round #453 (Div. 1)
A. Hashing Trees
连续两个大于$1$就不合法了啊..
C. Bipartite Segments
出现一个奇环就说明包含某个区间的区间都是不可取的..
维护每个点最远到达的点
离线询问
按询问右端点排序即可..
*D. Weighting a Tree
建出生成树,发现偶环不影响
对于一个奇环,选任意一个点做根,发现根多出来$s$,那么环边就两端同时减去$s/2$
再来做即可
对于$s$为偶数的证明:
因为度数和点权奇偶性相同,总度数和总点权奇偶性也相同
也就是总点权为偶数,那么多出来的$s$也为偶数