5/13
- C - Recursive sequence HDU - 5950[WQF]
- E - Counting Cliques HDU - 5952[WQF补]
- G - Do not pour out HDU - 5954[Megumin补]
叉姐的题解:https://post.icpc-camp.org/d/622-2016
C - Recursive sequence HDU - 5950 [WQF]
矩阵幂题意:已知(f(n)=2*f(n-2)+f(n-1)+n^4,f(1)=a,f(2)=b),求(f(n)mod2147493647)
思路:矩阵幂,维护(f(n),f(n-1),n^4,n^3,n^2,n,1)这七项
代码:http://paste.ubuntu.com/24433645/
D - Winning an Auction HDU - 5951 博弈DP
E - Counting Cliques HDU - 5952[WQF补]
dfs+剪枝+图论做的时候思路不是很清晰,和正确做法总是若即若离。。。。
从1开始枚举点u复杂度(O(n))。。。。。。。。。。。。。。。
再找出与u相邻的s-1个点,判断是不是完全子图,也就是枚举点u的边,因为边最多只有20条,复杂度(O(C(20, 9)) = O(17w))。。。。。。。。。
然后check的思路是每次加入新的点v的时候,判断判断这个新加的点是否和之前的点有连边,有的话继续dfs,没有就剪枝了。。。。。。check大概要100次。。。。
这样复杂度大概1e9。。。。继续剪枝:枚举完u之后,把u删去,这样不仅剪枝还能防止重复判断。。。。。
代码:http://paste.ubuntu.com/24432649/
相似题目推荐:POJ 1129 Channel Allocation && 2017电子科大校赛G题
poj1129 代码:http://paste.ubuntu.com/24432687/
codeforces 805 C 代码:http://paste.ubuntu.com/24515940/
F - Similar Rotations HDU - 5953 三维空间旋转
G - Do not pour out HDU - 5954 [Megumin补]
积分题。
先分类讨论,当水多于一半时,倾斜后水面与侧面相交,是一个椭圆,面积很好计算;
当水少于一半时,倾斜后水面与底面相交,为椭圆的一部分。
我们可以先积分算出水体积与椭圆与地面交线与直径所呈角的关系式,
之后二分该角度即可。
代码:http://paste.ubuntu.com/24460195/
H - Guessing the Dice Roll HDU - 5955 ac自动机,高斯消元
- 由于步数不限,所以不能用矩阵快速幂或者记忆化搜索。考虑解方程然后高斯消元。
- 方程的建立。设到每个AC自动机节点的概率为(pi)。如果有某个节点u能到v,则v的概率就要加上u的概率*(frac{1}{6})。0节点的概率初始为1。
I - The Elder HDU - 5956 树上斜率DP
- 列出(dp)方程,很容易就发现可以斜率优化。重头戏在于树上怎么维护这个单调队列。
- 发现这个队列有“恢复”操作,即要恢复到以前的状态。所以我们可以在dfs的过程中加入队头、队尾指针,利用递归保存这些状态,当要删除某个数时,先将这个数存下来,等到这颗树dp完后,恢复这个数。总之就是在dfs中顺便计算dp和维护队列。
J - Query on a graph HDU - 5957 线段树
K - New Signal Decomposition HDU - 5958 离散对数下的FFT 用原根去替代下标,表达式就可以利用FFT优化计算了,但是这题卡常数卡精度
L - A Random Turn Connection Game HDU - 5959
M - Subsequence HDU - 5960 可持久化左偏树维护K短路