AGC001
A BBQ Easy
贪心。
https://agc001.contest.atcoder.jp/submissions/7856034
B Mysterious Light
很nb这个题
不好做,设(f(a,b))表示边长为(a,b),一个角为(60)度的平行四边形从(120)度的角平分线处出发能走的路程,转移是一个递归,复杂度证明类似(gcd)。
https://agc001.contest.atcoder.jp/submissions/7856746
C Shorten Diameter
每条边新建一个虚点,从每个点(虚实兜星)出发搜不超过(D)层(枚举直径中点),能保证真正的直径不超过(D),最大的大小即是答案。
https://agc001.contest.atcoder.jp/submissions/7864577
D Arrays and Palindrome
翻题解(sqrt{})
先说结论,如果(a)中奇数不超过(2)个,就把它们安排到序列两端,然后输出(a_1-1,a_2,a_3,ldots,a_{n-1},a_n+1)。(此时只有(a_1)和(a_n)可能是奇数)
可行性画一画就知道了,至于为什么只有这个对,考虑连的边至少要(n-1)条,如果一个序列尽量放偶数可以连出(lfloorfrac n2 floor)
如果一边有超过(2)个奇数那就会少一些边,对(n)分奇偶讨论可以得到不可行。
https://agc001.contest.atcoder.jp/submissions/7871320
E BBQ Hard
很久以前写过的顺便写写= =
求一大堆组合数之和,可以化为对每对(i,jin[1,n])求((-a_i,-b_i))到((a_j,b_j))的方案数
因为对每一对都要做所以直接dp就好了。
https://agc001.contest.atcoder.jp/submissions/3466674
F Wide Swap
最小化(A)的字典序相当于最小化(p_A)的字典序。(反正对的,关于证明弃疗了
那么从(p)上看就是可以交换相邻两个差(ge K)的数
如果有两个数(i<j,|p_i-p_j|<K)那么最后(i)肯定在(j)前面
可以用拓扑序解决,然而边数太多了
每个点(i)只要向右边第一个(a_j>a_i,|a_i-a_j|<K)的和(a_j<a_i,|a_i-a_j|<K)的(j)连边即可,可用数归证明后面的边一定会被这两个点连到。