Contest Record
Contest 1135 at HZOI
Problem A: 优美的棋
发现一个可以证明的规律就是了……
忘记给<<运算的左边变量转化为long long类型了,结果挂了20分……
以后一定记得<<运算不会因为右边变量是long long类型而把运算改为long long类型啊……
而且也要记得测试大数据来查错啊……
Problem B: 优美的树
50分的dp很好想……然后就是优化了……
我们知道,我们的dp状态数组可以看做是一个离散的函数,而二维的状态数组便可以看做是n个函数,所以如果这个函数有一些特性的话,那这个角度又是一种优化dp的方法.
在这道题里,我们的函数是下凸的,那么其累加的话,便会得到新的下凸函数,我们只要能让其在合法时间内累加,并且,处理好随后的后缀min操作就好了,我们考虑一种高效的维护方法——维护拐点与初值.我们考虑到每一个节点只会造成一个拐点,所以拐点总数是O(n)级别的,而且每个拐点只会让函数斜率加1,所以我们只要用可并堆维护我们的拐点,每次累加,合并两个堆,而后缀min操作就可以直接pop堆顶.
PS:出题人管这种方法叫"一类用函数去压缩状态的dp题".
Problem C: 优美的串
比较好的后缀自动机dp吧……考试的时候没仔细分析就一顿码,结果码完才发现自己是错的,幸好码的东西可以作为部分分,要不然就完犊子了……以后还是要"Think twice,code once."
在这道题目中,打破了以往在设计dp状态时潜移默化形成的意识——让我们的状态记录更多的信息.这道题里,设计状态的时候,着重强调了信息的实用性,以及对转移的便利,同时还利用后缀自动机的最简状态自动机特性来减少状态数,并且利用对于不合法状态的分析来剪掉不合法状态(在这里需要提到的是,dfs寻找合法状态比迭代寻找合法状态要剪掉更多的不合法状态).
Contest 1133 at HZOI
Problem A: 遮天蔽日
数据水到爆……出题人的题解也是各种考虑不全……
大概就是需要求个均匀质量多边形的重心,然后再一波操作……这波操作一定程度上需要思维的严谨性.
关于求重心的方法:
多边形的重心
求任意多边形的重心
Problem B: 三元组
无论你是用manacher还是回文自动机,这题都挺水.
通过zzh了解了一发回文自动机的新科技——CodeForces #932G.Palindrome Partition
Problem C: 最有价值
比较水的最小割,我发现我们建图的时候只要建图符合最小割原则就没有问题……
Contest 1132 at HZOI
Problem A: 区间第K小
数据分治60分……
感觉已经不会做现在的数据结构题了……
思路是差分+整体二分,就是从一个离线的部分分的方法引出在线的100分做法,这种从部分分启发方法是第一次见到诶……
不是很会整体二分,这是第一次知道整体二分是什么意思……不过这种思想与方法也是很好的诶.
数据结构也需要加强了.
写可持久化数据结构的时候,一次区间修改所造成的空间花费比一次单点修改所造成的空间话费要大得多.
通过观察程序运行过程来进行优化与剪枝也是不错的一种思路.
Problem B: 求和
看到这道题会想到反演,然后就有了60分.
考虑容斥,得到式子以后利用一些数论函数的性质的到我们需要杜教筛,利用一般杜教筛的思路进行有意识的构造就可以了.
发现目前式子无法继续优化或推导的时候,可以退一步海阔天空啊.还有,在实现的时候,有一些小的细节可能会给你的程序带来意想不到的优化,虽然到现在我也不知道那个小细节为什么影响那么大,再有就是能用整型就少用浮点数了,毕竟精度嘛.
Problem C: C
这题真是尼玛吊.
作为一只苣蒻,只能想到10分做法……
首先,利用期望的线性性来分解期望,从而达到减小问题困难程度的目的.在这里利用了期望的本质——它反映随机变量平均取值的大小.
然后,烧脑一波来化简状态,同时得到转移方程.
最后,利用一种高科技来解这个方程——对于像这样的方程,我们可以利用左边的已知推导出所有状态关于初始未知状态的表达式,再利用右边的已知列出小规模的线性方程组来解得初始未知状态的答案,从而得到所有状态的答案.
烧脑题……
Contest 1131 at HZOI
仍然是数学专项测试……
Problem A: 猜拳游戏
考试的时候以为是水题,最后发现自己是错的.
notes:
I.利用改换定义来得到式子,这可以在“山重水复疑无路”的时候达到“柳暗花明又一村”的效果.
II.分数规划有妙用,在这道题里利用他,可以把概率转化为期望,感觉好流弊啊~~~
III.使用高斯消元的时候,通过观察并利用矩阵特点来优化消元是一种常见的优化方法.
IV.if的常数比max函数小多了啊……
V.通常情况下期望比概率要容易处理,所以把概率问题转为处理期望也就算的上是一种有效的优化了.
Problem B: inequ
TMD数据范围和题面都不全!!!不过也是我没有梦想……
数据范围和题面如果是全的话,60分还是很好拿的啊……
正解不会……看不懂题解……
分段打表大法吼~~~
Problem C: 生成树
以前做过的题,忘记了……
所以说多项式+Matrix-Tree来进行有关生成树的计数是一种套路,而且尤其是在对边有一些限制的时候,然后利用高斯消元来解系数就是这个套路的所有了……
并不会拉格朗日,只会高斯消元……
Contest 1130 at HZOI
又是一次数学专项测试……
Problem A: B
看一眼就是傻逼杜教筛,只不过只能拿到80分,不过分析一下,如果预处理前1e6的组合数就可以过掉了……这个预处理其实动动脑子就可以想到,还是太菜……对于预处理的优化还有待研究啊.正解的方法好像不太一样,还没看……
Problem B: B君的回忆
思考一下就会发现需要向上推模数,打了个表发现有循环节,而且和p同阶,所以考虑如何找循环节,我想到了BSGS,因为感觉BSGS可以解决这个问题(所以说BSGS只不过是一种分块方法,不一定是去解那种方程的啊,像这种找循环节的题目也是蛮适合BSGS的嘛).但是这玩意只能拿到60分,不过如果你强力wqs一波,是可以拿到80~100分的啊.正解是大力结论一波,我的BSGS做法当然是个部分分,在这个部分分的基础上加上两个结论,基本就可以过了,再加上一个强力小结论,就可以飞快了,如果把map改成unordered_map,那就更快了哈.题解里还给了一个结论,但是不知道有啥用……所以这道题就给了我一群"知其然而不知其所以然"的结论……感觉十分不爽,但是又没有什么办法,毕竟人菜啊……不过这个东西似乎可以通过打表得到,但是和普通的打表找规律不一样的是,这个东西的规律本身就是分情况的规律,再加上一个特判……还尼玛有这种操作……
Problem C: sanrd
这题真是挺流弊的……
具体见ryf's NOI前的考试日志中 4.22 T3.
就是画柿子的能力与意识,其中有几个比较好玩的技巧:
I.把2xy变成(x+y)^2-x^2-y^2.
II.如果关于i,满足k=i+j的k、j的乘积是我们要求的值,那么这也可以fft.
III.由简到易、维数扩展、重新构造的思想.
Contest 1129 at HZOI
(考完才发现这是数学专项测试……)
Problem A: 解方程
打了个50分做法,结果由于压内存而翻车了……压成1维的杨辉三角,一定要注意数组里没有空的地方啊……但是我如果打个对拍也就出来了……以后考试还是尽量打对拍吧,虽然有时候自信也不是错.
正解是容斥,首先你动一下脑子就会发现n2部分很智障,所以就可以把n1往这个方向容斥了,当然求组合数需要exLucas(我才知道我以前就会的那个方法是exLucas……那个阶乘看情况处理).
调试的时候,一定要注意隐式数组越界啊!!!
我考试的时候似乎连脑子都没用动……
Problem B: 宇宙序列
会了fwt就果断50分了,但是由于不会fwt,所以考试推了2.5h+才把这东西搞定……菜死算了……
然后你会发现你可以利用fwt的线性性来优化他,然而这并不会多一些分数……但是这会启发你一件事——由于我们是对应位相乘,所以每一位都独立的,所以我们可以单独算每一位的,于是我们的计算对象就从数组变为了单个数字,这个时候,你会发现,我们可以倍增他,这在一定程度上利用了模意义以及模数很小,如果不是这样的话似乎不行?
思想:优化算法(优化部分分也会有一定的启发的吗?)、fwt的线性性、倍增、利用题目性质——模数小.
Problem C: exp
一道比较牛逼的期望概率dp.
主要思想——期望概率(废话)、环问题转为序列问题、倒序考虑问题(考虑最后一步)、区间dp的区间分割(分割为独立的两个区间来转移)、特判(尼玛我的做法特判AC,不特判0分).
主要是处理好dp的边界,我还是有一些边界比较迷啊.
Contest 1128 at HZOI
考试的时候不是很专注,就直接GG了,还是太菜了……
LOJ#6031.「雅礼集训 2017 Day1」字符串
思想:数据分治、根号分类处理、观察数据性质.
LOJ#6033.「雅礼集训 2017 Day2」棋盘游戏
一眼就是裸的二分图博弈,但是由于我的博弈论和匈牙利都太菜,所以我猜了半天结论才猜到结论,还打错了……
考试的时候还想写个暴力拍一下,结果由于不专注打错了个变量,而且有由于后来太慌了,也没有调出来……
菜死了……
LOJ#6032.「雅礼集训 2017 Day2」水箱
考试没怎么想这道题,但是这题真的不难啊……
我一开始想到的是分治,但是不太会实现,看了题解,发现可以打重构树,于是最后就码出来了一个树形dp.
思想:重构树.