AB水题,C是斜率优化的动态规划。
报告从D开始。
D 高精度乘法。
题目的bug带来了比较大的困扰,之后许多弱弱的小毛病也耽误了不少时间
E 找每点最近三个点
赛后写的算法其实和比赛时思路是一致的。这个算法肯定不算是正统的, 不过解决一些随机产生的,分布比较平均的数据应该还是可以的(含有人品因素)。具体解法是:把所有点进行一个先比x再比y的排序,然后对每个点i在排序表里上/下交替地找一些点j进行比较,当i和j的x坐标差大于得到的最近三个距离的时候,就可以停止枚举了。
写的时候没有交替地在排序表里上/下寻找邻进点,时间花得比较多。
还有在精度问题上卡了非常久,最后还是放宽了很多地方才AC的。
F 集合的操作
这道题其实就是经典的集合操作,关键在于如何合并这些操作。
操作最终可以归结为染色和取反两种,分别写好就可以了。
并运算对应的是T部分的染1色。
交运算对应的是非T部分染颜色0,即S中不在T里的部分染成0。
S-T运算就是把T部分染成0色。
对称差运算对应的是T部分中属于S的染成0,不属于S的染成1。这里用到异或/取反。
T-S运算复杂一些:
先把T部分中属于S的染成0,不属于S的染成1。这里用到异或/取反。
再把整区域中非T的部分染成0
这一道题纠结了非常久主要是由于T-S部分的运算没有弄清楚,漏掉了一部分。却一直以为是线段树写的有问题,非常久了才找到问题所在。
G 网络流
还没有写,大概想了一下构图,但是可能不是最好的。
字符串处理也比较不熟,用STL应该会比较好。
对网络流的算法不是很熟悉,以后找一段时间来突击一下。
H 快速幂
如果能往快速幂方向去想了应该就能比较快得到这个思路,只可惜比赛的时候很二地去推通项,以为能得到一个带有规律的迭代项……
这一道题在long long和int上纠结了比较长时间,太弱了。起初打算偷懒,变量都写成long long的,但是中途发现各种问题,就改掉了。最后得出的结论是,其实int都够用,只是偶尔中间有大数乘积的时候需要用long long暂时放一放再%prime。
long long的输入还是用cin比较靠谱(输出用cout,这题没用到)。还得到一个结果是__int64或者long long最好不要直接和0比较,这一次挂掉了,虽然不知道理论原因,不过知道了可以改写成“if (abs(n-0)<0.5) break;”这样的判断。