09-02 NOIP模拟测试35

指望得分:80+100+0数组

实际得分:70+80+0网络

rk:18ui

 

A. 公园

T1连续爆炸篇排序

第一眼拓扑,发现要存状态,定义了个dp,脑子糊了不知道怎么处理多起点多终点,以为十分不可作。而后发现能够记忆化,然而不会打。class

因而盯了40分钟,想了各类乱七八糟的东西,卡T1慌得一批。为了缓和下,滚去T2。变量

打完T2回来仍是没什么可A的复杂度,而后打了个O(mv^2)每一个起点拓扑跑了。查询

正解:建虚点S,T时间

S向入口连边,权值为排队时间,出口相似。而后就只须要跑一遍拓扑。O(v^2)header

定义dp[i][j]为到i点的链长为j的最短期,拓扑更新便可。mv

以上实际上是网络流建图的经常使用套路,然而考试大脑短路。

 

B. 计划

简化:给定序列ai,q个[k,l]的询问,回答[k,l]中全部知足区间中不一样数的个数>=m的子区间[i,j]的j-i之和。

第一眼莫队,发现区间能够转移,[l,r]->[l,r+1]的答案增量为以r+1为右端点的全部知足>=m限制且左端点坐标>=l的等差数列之和。

性质:

  • 若是[l,r]中有>=m个不一样的数,那么[l-1,r],[l,r+1]一样知足
  • [l,r]->[x,r+1],x必定>=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处的和。

 

C. 抽卡

不会

相关文章
相关标签/搜索