woshilalala 恢复性训练 >_<。。

http://vjudge.net/contest/view.action?cid=48202#overview

大概也是考后一两天挂的恢复性训练,本来想两天做完,后来拖到三天,最后又拖了一天,四天才把除了 E 的都做出来。。拖延症太可怕。

A、水

B、最开始竟然不会做,对当时的自己表示深深的担忧。找到 r 中最小的那个值后,枚举它被取了几次,然后乘一乘就出来了。

拙计的是,这题我竟然写了个 dp 来求解,很显然直接幂乘就行。

不懂的是,我为了精度求了个对数做的加法。不过 WA 成了一个大傻逼。改成暴力相乘就过了。明明就会有大的组合数乘以小的概率,为啥直接乘不会挂精度?。。

C、水

D、裸线段树

拙计的是,我最开始写的时候把取反和覆盖的标记没有判断先后同时下传。当然会挂了好吗!!。。(不过以前好像没碰到过裸写会写挂的情况 = =。。?。。

E、题目很老,Ai 比较小的时候可以线性筛法预处理出莫比乌斯函数的前缀和,然后根据除法的性质进行加速,单步 sqrt(10^8)。不过我们发现 Ai 实在太大了,没法预处理出前缀和,这尼玛怎么做。。。。。。。。。。。。。。

结果过了的代码无一例外都是先打表。

上网查了个代码,做法是每隔 10^4 存一个和,然后中间的暴力算(暴力 as in 最坏枚举 10^4 个数然后挨个枚举素数);这个理论复杂度已经升天了好吗= =。为什么会有这么无聊的题。。

线性筛求 mobius 直接在线性筛求素数的时候就可以算出。

F、枚举大块然后逐格暴力。差点这种逐格暴力都不会写了。。真是要命。。

G、模拟,用递归实现会方便一点

H、数位DP,f[i][j][k][g] 表示放到第 i 个数,最后放的 j,k = 0, 1 表示大于还是小于的限制,g = 0, 1 表示是否放了第一位

这题坑爹的是,位数不同的话位置的相对关系是不一定的。所以得加一个前缀 0 的判断。

而且最重要的是在 dp 中要体现出 g 这一维。

但是不体现出来的话,也能得到正确的答案。因为可以形成一个一一对映。(想了很久才想明白为啥不加也对= =。真是弱。)不过很显然加上是对的。

I、判断点乘符号

J、模拟,细节不多但也要注意

K、诶诶这题有点意思。。最后得是个欧拉路,不过图并不一定联通。

不过显然每个联通块内奇点的个数肯定是偶数。怎么才能连最少的边给它连成一个联通的欧拉路?

不妨考虑连乘一个欧拉回路。我们的策略是先以每个联通块为点连成一个环,那对于每个联通块,假设它的奇点个数为 m,则要往 “外” 连 max(1, m / 2) 条边 (因为是个环,所以可以把这些新连的边看成是有向边,一个往外连,一个从外往里连。m = 0 随便挑两个点,m >= 2 挑这两个奇点,联通块内剩余 (m - 2) 个奇数点在环内自行解决)。

这么做得到的是一个欧拉回路,再 -1 就好。

为什么这么做连的边最少?因为连的边要满足两个条件,一是奇点消掉,二是联通。当然这么做是一个最优方案啦。。

(P.S. 此题数据极水。)

你可能感兴趣的:(woshilalala 恢复性训练 >_<。。)