ZJOI2018 滑雪记 + 部分题解
2018-03-22 14:02
218 查看
Part1 滑雪记
2018.3.18
满怀鸡冻的心情踏上了\(ZJOI\)的旅程,宾馆好像还是四星级的?而且这次还带上了笔记本电脑,简直......
上车就开始看电影,结果电影太短了看完还有一个小时。
随手写水题(AC自动机:Ring)改善心情好了,写完还有时间就听歌。
晚上吃大餐,一种川菜既视感很合我的胃口。
然后回宾馆大颓,场面我都没法描述了,反正.....群魔乱舞好了。
重新入坑炉石,从一级开始打,结果欧气爆发一个晚上抽了两张橙卡HaHa!
2018.3.19 上午
上午听课,标题:杂题选讲! 我 凸(艹皿艹 ) !开始几题还是认真听,后面完全掉线,决定自己看组合数学好了。
自己的多项式好弱啊!( @\(yyb\) 靠你了....)
等会少数我完全听懂了的题在下面放一下,其它的,呵呵呵。
午餐食堂,还不错,好评。
然后午休时间对着上午的\(PPT\)研究,并没有什么卵用。
2018.3.19 下午
下午,还是杂题选讲? 我 凸(艹皿艹 ) !掉线更加严重了,才听几题就掉了。
而且很多题目都似懂非懂,感觉只是会了部分,自己\(yy\)也搞不出来。
然后\(3:50\)就讲完了,放学喽回去浪起来!
呵呵你想多了。
马上又来了一个大佬,终于是讲知识点了。
同学们,今天我们来讲讲网格图算法。
这位讲课的大佬有点骚啊,什么"这题我好像不太会,哪位大佬上来教教我"这种骚话都出来了。
我惊奇的发现还不如杂题选讲了.....
因为我从开头就掉线了。
昏昏沉沉昏昏欲睡摇摇欲坠的坚持听完了,然而并没有听懂。
晚餐食堂,一如既往的不错。 吃完晚饭后就去试机了。
2018.3.19 晚上
试机刚刚把输入敲完就说可以走了?一波人都走了我还是决定把\(FFT\)敲一遍再走。
此时只剩下我,\(Zsy\),\(Yyb\)还在试机了。 \(6:30\)发车(为下文做铺垫)。
\(6:20\)终于搞完了,一看时间我 凸(艹皿艹 )。
三个人雨中一路狂奔,奔到门口刚好有一辆车准备走了连忙挤了上去。
上了车后\(Yyb\)给\(Yl\)打电话.....
我们竟然是坐的第一班车?其他人都还在原地打摆?
震惊!某校信息组三人因祸得福,坐车迟到反而坐上首班车!
做到宾馆门口下车时刚好遇到\(xzz\)一群人。
他们是自己坐公交+走路回来的?三个人真的越来越懵逼了.....
晚上回去先\(Yyb\)没带房卡就先来我的房间"休息",还带着笔记本。
然后\(Yl\)、\(xzz\)、\(fdf\)、\(FlashHu\)他们都回来了。 接下来\(hyxd\)的故事自己想象....
2018.3.20 上午+下午
早上\(7:00\)被闹钟叫醒,结果竟然又睡着了。等我再次睁开眼睛的时候:
\(YCB\):现在几点钟了?
\(FDF\):我已经吃完饭了。
\(YCB\):你咋没叫我?
\(FDF\):我叫了你好多遍你都不起来我就先去了。
\(YCB\):纳尼? 所以现在几点了?
\(FDF\):额...好像已经\(7:30\)了吧。
\(YCB\):qwdewqfrewnergrrekgblqwnlwevbli(胡言乱语ing)。
一顿奔波终于搞定了所有准备事项。
下来发现五辆车一辆都没开,但是我忘了带伞了。
我这么神速的人上去拿个伞肯定没问题。(立个\(flag\))。
上去拿了伞....
嗯?车子呢?怎么都消失了?
顿时充满了诗情画意:噫!微斯人,吾谁与归?
好在5分钟后又来了一辆车。
到了会场之后......
上午下午连续掉线,我已经濒临绝望了。
整整一天都没有听懂。 好在带了电脑于是自己刷题算了。
上午做\(Qtree6\),下午做线性基和导弹拦截。 顺带复习了一下\(LCT\)。
2018.3.20 晚上
回到宾馆才\(6:10\)左右。先把下午没有调出来的题给调了,调了半天发现是卡进度,我 凸(艹皿艹 )。
然后就开始颓了,颓了一会儿接到通知去开会。
谢总的考前动员大会......
一句骚话:"难不成你duang的一下进了浙江省队?"
总结来说,就是要放平心态去考,拿稳暴力分,不要丢白痴分。
我觉得太对了。
然而......算了,明天再说。
回去决定复习一下知识点,狂翻之前写的博客\(ing\)....
和\(fdf\)决定早一点睡觉,\(11:00\)好了。
我和\(fdf\)果然在\(11:00\)准时上床,然后聊天硬是聊到了\(11:40\)左右。
聊天内容就是各种骚话,反正大家互奶,各种"ORZ"、"太强了"之类的话满天飞。
2018.3.21 上午
考试,\(ZJOI\)高难度真的不是吹的。一个大问题是:\(windows\)下我不会对拍...
\(T1\),考什么线图....部分分\(k=2,3,4,5,6,7,8,9\)。
开始推柿子。
\(k=2、3\)不是傻逼题吗? 秒了秒了。
\(k=4\),嗯.....好像是枚举点集就\(OK\)了啊,写了一发过了手造数据就没管了。
\(k=5\),嗯.....好像是枚举边集然后考虑单独贡献啊,同样过了手造数据That's OK。
\(T2\),对\(i\)到根的路径进行染色?
树点涂色? \(Access\)?然而并没有卵用。
感觉是个贪心,想了2个小时硬是没想出来。
事实证明并不是贪心,具体见我下面写的题解。
写暴力10分好了。
结果手造数据发现\(Tle\)了?
原来是用\(set\)结果多了一个\(log\),改过来就好了,有惊无险。
\(T3\)什么鬼?
样例都玩不出来,弃了弃了。
最后弃疗看看大样例。 嗯?\(T1\)的大样例竟然是\(k=5\)的?
测了一发。 \(WA\)了!\(WA\)了! \(WA\)了!
心顿时凉了。
一看还有15分钟,最后挣扎一下吧。
结果刚改2分钟,电脑突然蓝屏,自动关机,然后叫个不停
电脑居然炸了,绝望ing。
不经历一次你是绝对不知道这种感觉的....\((TeT)\)。
监考老师还是很给力的,不到10分钟就修好了。
重新开机,还剩3分钟。
凉了......
出来后发现还好,大家基本上都是30+10+0,等于说我把自己炸成了平均水平。
2018.3.21 下午+晚上
会宾馆把东西收了准备滚回长沙。然后上车前往高铁站。
\(ZJOI\)交流群就发了一试题解了,这个效率我服。
\(T1\)考括号序列+树哈希+树上DP,说得好像我会一样的。
\(T2\)考推导、\(Splay\),嗯,好像还是可以看看的。
\(T3\)考有限状态自动机(DFA),这个,我真的连学都不想学。
这里有一句出题人的原话:
==>有点常识的人,应该都不会去做第三题。
嗯!至少证明了我是有常识的人!(滑稽)
高铁上一直在打摆,颓颓炉石,看看题之类的。
\(ZSY\)不亏是欧气王,在高铁上炉石又开出了一张橙卡!
一路颠簸回到了长沙,坐公交回到郡园的路上睡着了......
睁开眼,又要迎接新的一天\(.....\)(QwQ)
后记
\(ZJOI\)难度很大啊,\(HNOI\)会怎么样呢?感觉要学的的东西还很多,思维还不够强大。要更加努力了!
Part2 一些题的题解
CF #469 E Binary Cards
题意
给出\(n\)个需要表示的数\(A_i\),
你需要用最少的\(2^k\)或\(−2^k\),使得能拼出所有需要表示的数。
\(n,A_i\leq 10^5\)
题解
显然如果都是偶数那么直接除以2就好了(没有影响)。
否则必须选择\(-1\)或1中的一个。
直接暴力枚举好了。
如果当前数集都为偶数,那么直接全部除以2。
否则枚举选择1或者-1,然后把奇数变成对应的偶数重复进行即可。
CSA #32 G Sum of Powers
题意
考虑所有的正整数可重集\(\{a_1, a_2, a_3...a_k \}\),
满足\(a_1 + a_2... + a_k = n\),求所有\(a^m_1 + a^m_2... + a^m_k\) 的和。
\(n, m, k ≤ 4096\)
题解
分开考虑每一个数的贡献。
我们先预处理出前\(i\)个数,和为\(j\)的方案数,设为\(f[i][j]\)。
那么一个数\(num\)的贡献(次数)为:
\[res_{num} = \sum_{k=0}^∞ [包含至少k个num的方案数]\]
就是整数期望公式的变种,即:
\[res_{num} = \sum_{k=0}^∞ f[i-k][j-num*k]\]
再乘上\(num^m\)即可。时间复杂度为:\(O(n^2)\)
ZJOI2018 T2 History
题意
一棵\(n\)个点的数。
给定每个点\(access\)的次数\(a_i\)。
现在有\(m\)次修改,每次选择一个\(a_i\)使其加\(w\)。
试着在所有修改前和每次修改后,确定一个\(access\)顺序。
使得全局的轻重链切换次数最大(每个点的切换次数之和最大)。
数据范围:\(n,m \leq 4*10^5\) ; \(0\leq a_i\ ,w \leq 10^7\) ;
题解:
首先先考虑一下没有修改如何做。
对于每一个点,我们设其有\(t\)个儿子,儿子序列为\(s_1,s_2,s_3,...s_t\)。
我们设\(p_i\)表示第\(i\)个儿子为根的子树内的\(access\)次数和。
特别的,设\(p_0\)为当前点的\(access\)次数和。
那么,我们可以注意到,对于\(access\)进行序列中相邻的两个操作\(x_e,x_{e+1}\),
会使得当前点\(i\)不会发生轻重链交换的条件为:
\(x_e\)与\(x_{e+1}\)为同一棵子树 或者 同为\(i\)点 。
所以说,我们把\(i\)点和每一个儿子\(s\)看成一个小球,
那么现在的问题转化为:
有\(t+1\)种小球,第\(i\)种有\(p_i\)个,现在希望把它们排成一列。
试着最大化左右小球的颜色不同的间隔数。
我们可以发现是否可以全部间隔开其只与数量最多的那种小球有关。
设最多的小球个数\(mx = max\{p_i\}\) , 个数和\(sum = \sum p_i , i \in [0,t]\)
除了最多的那种小球外,还剩下\(sum-mx+1\)个小球。它们一共可以制造\(sum-mx+1\)个空隙。
分类讨论一波:
可以全部间隔开:\(sum-mx+1 \ge mx\) , 此时答案为\(sum-1\)
不能够全部隔开:\(sum-mx+1 < mx\) , 此时答案为\(2(sum-mx)\)
综上所述,\(ans_i = max\{sum-1 , 2(sum-mx)\}\)
即当\(2mx > sum+1\)时,答案为\(2(sum-mx)\),否则为\(sum-1\)。
所以我们就可以\(O(n)\)的求解不带修改的最大值了。
然后考虑修改。
令\(f_i\)表示以\(i\)为根的字数内的\(access\)次数,对于一条边\((son,fa)\),
若$2f_{son} > f_{fa} + 1 $ , 那么称\(son\)为实儿子,否则称其为虚儿子。
实儿子与虚儿子分别对应了\(ans_{fa}\)的一种计算公式(见上)。
可以发现每一个\(fa\)最多只会有一个实儿子,因为\(2f_{实} > f_{fa} + 1\)。
所以说实儿子在树上形成了链。
我们只需要维护每个点的\(f_i\)和其实儿子即可(维护了实儿子也就维护了答案)。
其实更加简单的说就是维护\(f_{son}\)最大的那个儿子。
考虑修改,修改\(i\)点只会影响\(i\)到父亲的路径上的点。
对于实儿子,显然没有影响,因为它仍然是实儿子,而且\(2(f_{fa}-f_{实})\)不变。
所以只用管虚儿子了。
一个结论:虚儿子的个数不会超过\(log(\sum a_i)\)。
因为虚儿子满足\(f_{fa} >2f_{虚}\) , 而\(f_1 = \sum a_i\)。
所以找到所有虚儿子,然后暴力枚举再修改即可。这个显然可以在线段树上二分。
梳理一遍修改步骤:
在线段树上二分找到所有的虚儿子
枚举找到的虚儿子,看看是否需要修改其虚实关系。
如果需要,修改答案,并且把原来的实儿子存入一个修改队列。
把被修改的原先实儿子改成虚儿子。
修改\(i\)到根路径上所有点的\(f_e\)值。
每一个操作的复杂度为\(O(log^2n)\) , 总的复杂度为\(O(nlog^2n)\)。
还有一种\(LCT\)的方法,复杂度为\(O(nlogn)\) , 但是我还不会,会了再说。
相关文章推荐
- Bzoj5212: [Zjoi2018]历史
- 【ZJOI 2018】线图(树的枚举,hash,dp)
- 网易2018校园招聘的部分编程题
- Android面试系列文章2018之实战经验部分之异步框架篇
- Android面试系列文章2018之Java部分IO编程篇
- [BZOJ5212][ZJOI2018]历史
- zjoi2018 day2游记
- 2018中国科大自主测试-B卷部分试题
- [BZOJ5212][ZJOI2018]历史
- Android面试系列文章2018之Android部分IntentService机制篇
- Android面试系列文章2018之实战经验部分之依赖注入框架篇
- ZJOI2018 Round2 游记
- Android面试系列文章2018之Java部分异常篇
- 【ZJOI2018 Round2游记】
- 2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) 部分题/平衡树/最小环/思路bfs
- An 4000 droid面试系列文章2018之实战经验部分之内存优化框架篇
- 2018 ACM 国际大学生程序设计竞赛上海大都会部分题解
- Android面试系列文章2018之实战经验部分之网络框架篇
- Android面试系列文章2018之Java部分注解篇
- 计蒜客2018 蓝桥杯省赛 B 组模拟赛(五)部分题解