指望得分:80+100+0数组
实际得分:70+80+0网络
rk:18ui
T1连续爆炸篇排序
第一眼拓扑,发现要存状态,定义了个dp,脑子糊了不知道怎么处理多起点多终点,以为十分不可作。而后发现能够记忆化,然而不会打。class
因而盯了40分钟,想了各类乱七八糟的东西,卡T1慌得一批。为了缓和下,滚去T2。变量
打完T2回来仍是没什么可A的复杂度,而后打了个O(mv^2)每一个起点拓扑跑了。查询
正解:建虚点S,T时间
S向入口连边,权值为排队时间,出口相似。而后就只须要跑一遍拓扑。O(v^2)header
定义dp[i][j]为到i点的链长为j的最短期,拓扑更新便可。mv
以上实际上是网络流建图的经常使用套路,然而考试大脑短路。
简化:给定序列ai,q个[k,l]的询问,回答[k,l]中全部知足区间中不一样数的个数>=m的子区间[i,j]的j-i之和。
第一眼莫队,发现区间能够转移,[l,r]->[l,r+1]的答案增量为以r+1为右端点的全部知足>=m限制且左端点坐标>=l的等差数列之和。
性质:
定义pre[i]表示以i为右端点,最大的知足限制的左端点。
suf[i]表示以i为左端点,最小的知足限制的右端点。
那么[l,r]->[l,r+1],能造成贡献的左端点范围为[l,pre[r]],等差数列求和便可。
复杂度$\Theta(n+q \sqrt{n})$
然而乘法运算没ll,WA80,跟O(qn)暴力一个分。。。
正解:
拆式子,维护变量。
对于全部询问[l,r]按r排序,而后把r的合法答案放到pre[r]上,用树状数组维护,回答查询>=k处的和。
不会