大学ACM第六周心得(11.29)
写在前面:
- 后面要用到浮点数计算的,输入哪怕是整形也可以直接当浮点数,不然容易出错
- 多组数据的初始化要考虑全
USACO训练题:
一:2.1.1 The Castle
很善良的,每一格墙的情况题目已经用二进制凑好了,处理一下就行。对每一块染色(用dfs)并记录块的大小。然后枚举,对每一格枚举它四个方向是否是墙,是的话就打通,两个块大小加起来大于目前答案就记录。
二:2.1.2 Ordered Fractions
用个结构体分别放分子,分母,然后用个浮点数记大小,排序输出。记得约分和0/1的情况就行。
三:2.1.3 Sorting A Three-Valued Sequence
最终排好序的肯定是分成1,2,3三个数字区间,数字位置错误的情况有这两种:
某两种数字相互错位,比如:有一个1到了2的区间,有一个2到了1的区间,那交货一次就行
三个数字错位,比如1到2,2到3,3到1,那么需要交换两次
先贪心找前三种交换,再找还有几个数未归位,这时由于只会剩下第四、五种情况,三个数为一组,每组需交换两次,所以答案为:前三种交换次数+未归位的数的个数×2/3
四:2.1.4 Healthy Holsteins
就直接dfs,决策某种饲料要不要
五:2.1.5Hamming Codes
n<=8,最大也就1<<8,可以直接暴力枚举,对每个数判断会不会和当前集合里已经有的数冲突。(输出有点坑点)
六:靶形数独
学完DLX应该算偏模板了,就是数独的做法加个记录答案,输出最大的。
没学之前一直T,吸氧能过,但是应该是有非DLX的解法的,可能需要更优秀的剪枝,我还没想出来
这周学的算法:
DLX:从精确覆盖到重复覆盖,再把数独和八皇后问题打了
分块:分块有个经典入门9题,暂时没打完,但是感觉真的很玄学
莫队:基于分块的算法,推荐博客:[https://www.cnblogs.com/Paul-Guderian/p/6933799.html]