大学ACM第六周心得(11.29)

写在前面:

  1. 后面要用到浮点数计算的,输入哪怕是整形也可以直接当浮点数,不然容易出错
  2. 多组数据的初始化要考虑全

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]

原文地址:https://www.cnblogs.com/71-111/p/14059582.html