20201003 质数序列,种花,挺进
作者:互联网
A.质数序列
考场
手玩样例发现 \(2+4\) 非法是因为 \(6\) 为偶数,即和为偶数(奇+奇or偶+偶)的情况的不行,所以答案有且仅有2个且为一奇一偶。
数据很大,考虑优化时间:
- 两个相同的数非法,故可将奇偶数分别排序去重
- 从小到大枚举两个数,若当前和已小于当前解则break
- 线性筛(不熟练,考场上没有打)(考后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,线段树维护直径
标签:20201003,val,题解,质数,偶数,考场,枚举,种花 来源: https://www.cnblogs.com/9Rings/p/14725932.html