您的位置:首页 > 其它

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)\) , 但是我还不会,会了再说。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: