7月26日 Educational Codeforces Round 47 题目链接:http://codeforces.com/contest/1009
A - Game Shopping & B - Minimum Ternary String
简单,不讲。。。
C - Annoying Present
思路: 其实也比较水。。。首先参数$x$对答案的贡献是不会变的,根据一些小学数学知识可以知道:当$d$为正时,选取的位置越靠边贡献越大;当$d$为负时,选取的位置越靠中间贡献越大。因此分类讨论一下就好了。
代码:
1 |
|
D - Relatively Prime Graph
思路: 虽然是构造一张图,其实和图论没有什么关系。。。
看懂题意以后可以发现你就是要在$1-n$内找出$m$对互素的数,于是可以暴力枚举,知道枚举出$m$对数。因为这是实在是太暴力了,比赛时还在怀疑算法不够优秀。其实互质数对的分布是玄学的,所以一般是不好卡你暴力的,再加上CF的神机,放心的打就好了。(实测46ms) 代码:
1 |
|
E - Intercity Travelling
思路: 一看题目,哇,和JXOI的风格好像的QVQ,都是小清新的期望计数题。虽然是期望,不过同样是套了期望的说法的一些计数类问题。
首先想到$n^2$的暴力DP,先处理前缀和。设$g[i]$为有多少种方法到达$i$点,$f$就是答案所求的东西,那么DP的方法就如下面代码所示:
1 | g[0]=1; |
然后我们打表发现$g[i]$就是$2^{i-1}$,又发现$f[i]$只由$a$中的元素组成,且组成方法与$a$中元素的值无关。于是再次打表,打出$f[i]$由$a$中的元素怎么构成,于是发现其中$h[n+1-i]$为构成$f[n]$(即答案)中$a[i]$的系数。即: 代码:
1 |
|
F - Dominant Indices
思路: 一直没有学树上启发式合并。膜题解发现要用这种操作,于是学了一下。个人理解就是遍历每个节点,然后从每个节点再开始另一个搜索,处理出该节点子树的信息,这样显然最坏是$O(N^2)$的。然而我们可以从先遍历节点,回溯时保留父亲节点重儿子的信息,这样从父亲节点开始的另一个搜索就可以不用搜重儿子。于是我们保证了时间复杂度在$O(logn)$。
这道题也是类似,要求子树重节点最多的那一层,于是就按照启发式合并去做就好了。 代码:
1 |
|