WC2017 Day5

WC2017 Day5

T1

- 本题内存1G,时限3s
- 在任意图上玩n数码问题
- 10分点数少,10分树,10分环,10分基环树,10分网格图,15分仙人掌,剩下30分任意图
- 直接BFS可过40分,然而我写了特判喜获10分,树环基环树全挂了
- 网格图:判断置换是否为偶置换
- 考虑这个图的一个生成树
- 走过图中的一条非树边实质上是对一些棋子的轮换
- 仙人掌:每个环对答案贡献独立,分别判断是否循环同构即可
- 每个点双联通分量独立
- 对于一个点双联通分量,如果是一个环,那么只有换上的置换合法,如果是二分图,只有偶置换合法
- 错误的猜想:其他的点双可以生成所有置换,不正确但反例不多,可得75分
- 100分:Schreier-Sims算法
- $ n^5+qn^2 $
- 有玄学O(n)做法
- 刚才错误的猜想对于大的点双几乎都是对的
- 对小的点双特殊处理

T2

- 本题内存2G,时限3s

Subtask 1

给2e8个整数排序

- 直接sort得5分(1e6)
- 按16位基数排序19分(1e8)
- 按8位基数排序11分(2e8)

Subtask 2

给两个0,1,2组成的串,每次给出x,y,l,求第一个串从x位置开始,第二个串从y位置开始,长为l的子串有多少位(a[x+i]+1)%3==b[y+i]

- 分块FFT,不可过
- 全裸n^2暴力,7分
- 压位+查表求1个数可过,23分

Subtask 3

求长为n(n<=266666)的合法括号序列数量,一些位置是给定的

- 全裸dp,9分
- dp稍微优化一下常数,少做几次加法
- dp循环展开,可过

T3

- 本题为提交答案题

要求你设计一系列比较器,要求同一时间内没有一个数同时被两个比较器使用

比较器通过交换两个数,使两个数变得有序

要求这些比较器能把k个n排列排成有序

要求总时间不大于m,保证数据有解

1

- m=1
- 每个循环长度都为2
- 每个元素只属于一个循环
- 所以直接暴力交换即可

2

- nm都很小
- 枚举排序网络,剪枝+估价
- 最后一层的时候O(n)判断一下
- 最后两个点,奇偶归并

3

- k=1,m=O(loglogn)
- 只有一个串,可以针对性设计
- 分治排序
- 数据随机
- 贪心

4

- k=1,m=2,每个循环长度不同
- 最后一层肯定是个对换
- 在第一层找每个循环的对称轴
- 绕着对称轴转

5

- $ m=O(log^{2}n) $
- 直接构造排序网络
- 奇偶归并双调排序,M=105
- 可以优化成M=104

6

- 一个数和它应该在的位置偏移L不大
- 在长为2L块里奇偶排序,M=56
- 可以优化到M=54

7

- 排序可以由若干个互不相交的区间循环右移一位完成
- 所有的循环右移都是前缀时可以直接分治完成
- 对分治树进行调整可以使得$ M = 2logk $

8

- 所有的循环都由i和n交换得到
- 对[1,n-1]建立分治结构
- 乱搞一通可以做到$ 4logk $
- 多叉树+倍增可以做到$ 2lceillogk ceil+1$

总结

- 老老实实写暴力多好

许愿弥生改二
原文地址:https://www.cnblogs.com/LoveYayoi/p/6745438.html