A*G#C001

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\)条,如果一个序列尽量放偶数可以连出\(\lfloor\frac n2\rfloor\)

如果一边有超过\(2\)个奇数那就会少一些边,对\(n\)分奇偶讨论可以得到不可行。

https://agc001.contest.atcoder.jp/submissions/7871320

E BBQ Hard

很久以前写过的顺便写写= =

求一大堆组合数之和,可以化为对每对\(i,j\in[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\)连边即可,可用数归证明后面的边一定会被这两个点连到。

https://agc001.contest.atcoder.jp/submissions/7908880

posted @ 2019-10-08 22:15  菜狗xzz  阅读(173)  评论(0编辑  收藏  举报