作为压轴题,题目描述很长、很难理解
还没写好 QwQ
[CodeForces1000]F. One Occurrence
一道有意思的线段树题目,维护一个pair值(下一个元素的位置,权值)对其维护最大值(就是影响越持久)
把问题离线处理,按照问题的右端点排序,这样就能满足单调性
输出的时候一定要判断一下first的值是否符合要求
注意:
- 这棵线段树维护的是最大值,不管是修改还是查询都需要取max
- 如果没有nxt,数组的值要赋值为n+1
[CodeForces1000]E. We Need More Bosses
无向图求割边的模板题,缩点后建立新图DP一下就可以了
对于每条割边,答案都可以为dp[x]+1+dp[y]
,然后dp[x]=dp[y]+1
(合并x和y)
只需要注意e1、e2的区别和h1、h2的区别就行了
[CodeForces1000]D. Yet Another Problem On a Subsequence
DP经典题目,枚举第一个正整数就得到了区间长度,再暴力枚举区间最后一个值,$O(n^2)$的DP就搞定了~
在DP的时候,可以从i优化到j而不需要倒着循环来DP,f[n+1]就是答案
注意:f[i]的初值为1!
[CodeForces1000]C. Covered Points Count
区间前缀和的经典问题,离散化后求前缀和(值即为覆盖的条数),用离散化之前的值直接计算即可
注意:
- 离散化后的值有$2n$个,sum数组和b数组要开n的两倍
- 只需要对L和R+1进行离散化就可以了,但记住取lower_bound的时候也要取R+1的排名,所以算前缀和的时候是–sum[y]而不是–sum[y+1]
- 相邻两个端点的值不相同,在最后计算ans的时候只能算一边!
[CodeForces1000]B. Light It Up
一道贪心的简单题,插入无非就是两种情况:
- 在开灯的区间内插入,应该让插入的元素尽可能地靠后
- 在关灯的区间内插入,应该让插入的元素尽可能地靠前
注意:
- g1和g2的含义,g1是指不落单(最后两次操作刚好完成一次开关)的后缀和,而g2则指的是会落单的后缀和
- i+1和i+2的选择,应该在纸上画图而不是凭空乱想
- 因为n的奇偶性不知道,所以ans的初始值为末尾两个数的最大值
[CodeForces1000]A. Codehorses T-shirts
一道简单但是题面很难懂的水题,说了半天就是求不同型号的个数而不是需要修改几个字母,用unordered_map维护即可(不需要求前驱后继就用unordered_map会更快)
solution-code1433
模板题,没什么好说的,正着算一遍,反着算一遍,乘积即为答案
solution-code2050
相信大家一眼就看出是二分答案的模板题,问题就是如何检验是否可行
我们先求出最小的能够包含所有点的矩形,暴力选取四个角分别覆盖,再这样操作一次,检验最后一个矩形的大小就可以了
注意覆盖完成后要恢复到初始状态!!
[NOIP2003]神经网络
一道语文题
$c$的含义是兴奋度,只有大于0的时候才是兴奋状态
$u$的含义是兴奋阀值,只有大于阀值才能传递剩余的兴奋状态
注意输入模块的兴奋度要加上兴奋阀值