07.10~07.21 总结
07.10
T1
一开始理解错题意,后来看样例才发现。
觉得暴力是能过的,推了下两个圆的交点坐标,然后转换成了一个求最多覆盖的问题。先想了下权值线段树,发现做不到。然后想到扫描线的思想,就考虑把点排序,打上 +1/-1 标记。然后排序。
但是一直被排序后初始点在结束点后面的情况给卡住,后面也没能调出来。
其实可以用三角函数求角(就不用复杂的计算),然后把上面那个情况先拉出来计算,然后再处理正常的。
T2
考场想拿 \(n^2\) 的部分分。发现我在枚举之后很难快速判断是否合法,于是就想着固定左端点,不断加入右端点,同时判断是否合法,没写完。
但应该先考虑比较简单的条件,比如同余,不能相等之类的。然后就能快速计算出某个区间最少还差多少。用一些数据结构优化即可。
T3
没怎么看,也没看懂题意。
发现树的形状对答案没什么影响,每个点对应的区间大小是知道的,只需要判断能够通过合理的分配使得每个数的总区间大小是一样的。可以用 dp。
07.12
T1
一开始没什么想法,后面就想叫外卖次数和存活天数应该是一个单峰函数,但不会证明。秉持着大胆猜想,绝不求证的想法就上了。
三分叫外卖次数,然后贪心,把钱先平摊,能买就买,最后再把剩下的钱合起来,看还能不能再买一点。
T2
没什么想法,先回忆了一下怎么求最大全零子矩阵,然后暴力递归排序拿 30 分的部分分。
还挂了 10 分,寄。
T3
想了个 DP 但是有后效性,然后不知道怎么把后效性处理掉。
其实转最短路就好,调整一下 SPFA 队列的含义就可以了。
07.13
T1
题目很长,不过很多废话。关键点就是 \(d\in \{1,2,3\}\) 这个点,这意味着任意两点间的最大流不超过 3。然后就想什么情况下会是 1,显然只要联通就至少为 1。然后 2 就是双联通。3 的时候觉得如果删掉某条边,如果删后边上两个点还是双联通,那这两个点就是三联通,并且如果两个点同时和一个点三联通,那这两个点也三联通。然后觉得可以写一个并查集记录一下有多少个点三联通。
赛后发现只有 70 分,原因是两个三联通的点之间可能没有连边。所以不妨直接粗暴的,在删除任意一条边的情况下都始终双联通就是三联通。用 hash 处理。
T2
不太会,但是 \(n\le 10\) 可以直接打表。
正解没有太懂,40 分的 dp 是转换题意,然后枚举当前位是 +1 还是 -1。
T3
没打。暴力也没有思路
正解没懂。
07.15
【UNR 7】Day 1。
A
题目名很不妙。
在提示的暗示下,一直在思考是不是每次删最小/最大。
但其实应该从奇偶性出发,可以证明,最后留下的数一定是原本数列中奇数位置上的数。
那么根据最优策略,答案就是奇数位置上的中位数。
B
没有想到很好的构造方法,但是我会 \(b=0\)!
于是直接有 1 的地方就输出一个,\(k\le 17\) 时不超过上限。
正解是考虑组合数模 2 的意义,以及将序列分成一个个子序列,对子序列贪心。
C
没打。
实际上可以一次性先把宝石拿完,再去买卡。
07.16
【UNR 7】Day 2
A
先写了暴力的 \(\mathcal O(nq)\) 的做法。
然后去搞了下 B 和 C,没搞出来。
困,先睡了一会儿。
起来想 k=1,想到倍增,但好像有点问题。
调到结束。
B&C
如上。
07.18
HDU contest 1。
开赛后随缘点了道题,同时关心排行榜。
T9 最先被切,同学去打了,同时让我看眼 T5。
T5 就比较两个字符串循环同构后能否相同,直接套最小表示法的板子,然后一位一位比较。没注意复杂度,可能会被卡,所幸没有。
然后看了眼 T12 的博弈论,树上删边,经典。\(sg\) 函数搞一下加个换根。
回去睡了个觉,回来看队友再打 T1 的暴力,说暴力能过。
我怕过不了,就想着补一手正解。其实只需要将两个经过的队列拉出来,枚举交点,扩欧解方程即可。然后过了,队友还没调完暴力……