除草(3.30~4.4)

1、travel

基本把树剖忘光了。。。

注意到b树上的点至多对应a树上的一个点,询问要求b树上的一条路径对应a树上几条路径。

简单的说就是把树上的路径剖成logn段,每段我们都可以利用主席树对每段查询即可。


2、弗洛伊德的复仇

可以看到如果所有的边都满足ai>bi(应该是优惠吧微笑),那么一定存在最优策略使得所有的货物都应该是选择一条路径来运输。

但是题目里给了一条边ai<bi(这只鸽子似乎很讨厌大量的工作难过。。。),我们可能仍是选择上一种方案,或者可能选择一部分来给这只另类的鸽子运(注意这只鸽子运输的货物应为ai),其他的给另外的运,不难搞出大概的方案如下:

除草(3.30~4.4)_第1张图片

我们会得到三个图,各种求求最短路即可,最后枚举两个中点即可

(考场上居然忘了特判无解丢了好些分。。。。)


3、无尽之惩

把矩阵应用到bsgs里惊讶

我们可以把题目里的变换改成一个矩阵A。

题目里就是要求最小的k满足a*A^k=b,很明显的bsgs。

(不要搞啥A矩阵的逆矩阵,完全可以靠逆向模拟把b向前变换微笑


4、回文超能力

求字符串每向后加入一个字符会产生多少新回文串

——长知识了,原来有一个叫做回文树的东西,简直就是处理回文串的利器得意

(不会的同学可以去UOJ博客里找相关论文)

(有了这个东西APIO2014T1就变成模板题了吐舌头


5、艾玛与乘积之和

又遇FFT,跪烂的节奏。

求n个数中任意k个数的乘积之和。

观察这个式子(1+a1*x)*(1+a2*x)*.....*(1+an*x),x^k前的系数就是k的答案。。。。

直接求的话复杂度是O(n^2)。把整个式子分成两部分,这样不停地分治下去,用FFT合并,这样就可以做到大约O(nlogn)


6、丛林前哨站

neerc原题,二分+半平面交,不多说


7、Circle

判断n个圆交是否为空。

跪跪跪跪跪跪。。。。。

本以为把圆的交点搞出来,然后半平面交。。。各种写跪!

陈老板讲了个很鬼畜的做法:先从x轴上找到交的区间[l,r],在区间里找到每个圆的最高点和最低点,这些区间也应是有交的。如果这些区间交为空,那么可以判断出这些圆在此处交为空,否则继续二分下去——实践证明这居然过了。。。。orzorzorz

标程给了一个极角区间求教的东东,似乎也没复杂度保证。。。。


8、Vector

好神的题目。。。。蒟蒻连暴力都不会打。。。。

观察到对于所有和相等的几何,一定是互不影响的。

不难发现最优方案一定是和相等的集合。(作为民科我就不证明了。。。。)

不难发现x和sum-x的方案数是一样的,这样方案数就是对总和呈正态分布。答案就是和为sum/2的方案数,用递推搞搞即可啦!


9、LMC的项链

又是burnside计数敲打

直接套用定理:所有置换下不动点的方案数的平均数。

要注意就是由于中间记录的书有可能超过模数p,那么需要将数x写成x=a*p^b,其中a与p互质,这样做逆元啥的比较方便。


10、Byc的游戏

欧拉路,注意判断图联通即可


11、Ccl的排列

贴题解啦,写错个东东调得吐血

除草(3.30~4.4)_第2张图片


你可能感兴趣的:(除草(3.30~4.4))