20201003

A.质数序列

考场

手玩样例发现 \(2+4\) 非法是因为 \(6\) 为偶数,即和为偶数(奇+奇or偶+偶)的情况的不行,所以答案有且仅有2个且为一奇一偶。

数据很大,考虑优化时间:

  1. 两个相同的数非法,故可将奇偶数分别排序去重
  2. 从小到大枚举两个数,若当前和已小于当前解则break
  3. 线性筛(不熟练,考场上没有打)(考后lgh说他写了,但并没有快多少)

大约用时40min,可以接受。

期望

\(O(n^2\sqrt a)\)

100pts

题解

对于两个数的情况,考场思路无误。

但可能有多个 \(1\)\(1+1=2,2\in prime\))。且如果存在一个偶数,该数+1也为质数,则该数与所有1构成合法解。

总结

  • 手玩样例有助于发现题目性质
  • 分类全面,考场想到“偶数非质数”,忘记了质数判断中1的特殊情况

B. 种花

考场

感觉是DP。

“ 两株花不能种在相邻的位置 ”与没有上司的舞会类似,很快列出状态 \(f[i][j][0/1]\) 表示 \(i\) 位置种 \(j\) 盆花且 \(i\) 种/不种的最大值,转移:\(f[i][j][0] = max(f[i-1][j][0],f[i-1][j][1]), f[i][j][1]=f[i-1][j-1][0]+a[i];\)

环形处理很套路(和蓝书上的例题一样):强行令 \(n\) 放/不放,改变 \(f[1]\) 的初值DP两次。

但显然时空复杂度无法接受,想了半天发现空间类似背包,\(f[i]\) 只与 \(f[i-1]\) 有关,可以压掉一维(虽然没写)。时间不会优化。

思路比较简单,但环形处理后的结束状态不清楚,浪费了不少之间,再加上思考优化,一共用了将近2h,导致T3暴力没时间写了。

期望

\(O(n^2)\)

50pts

题解

可反悔的贪心。

先将每个值放入大根堆,取出时标记两边为不可选,同时将“左右”的值-当前值入堆,双向链表维护左右。

若先选出的位置 \(i\) 不属于最优解,则取出 \(val[pre[i]]+val[nxt[i]]-val[i]\) 时相当于把 \(i\) 拔出来,再种上两边的。

循环 \(m\) 次结束。(若有反悔,设已种 \(k\) 棵,相当于将原来的拔起(\(k-1\))再种下旁边的两颗(\(k-1+2=k+1\))。)

C. 挺进

考场

完全不会。。。

暴力很好想:枚举断边,从两个端点开始dfs找最长链取max。

由于T2耗时太多&机子坏掉重敲了一次,看到T3时就剩不到1h了。最终没有写完。最后20min准备再看一下T1T2结果被机子制裁了。到现在(2020/10/4 18:39)代码还取不出来。。。

题解

枚举断边,RMQ求LCA,线段树维护直径

posted @ 2021-05-02 16:42  401rk8  阅读(81)  评论(0编辑  收藏  举报