题目链接

原题解:

我们需要找出两个距离不超过$k-1$的位置,使他们的和尽量大。

被修改过得位置比较少,所以我们可以先求出连个位置都没有被修改过的答案,然后只关心那些涉及到至少一个被修改过的位置的方案。

我们可以对每个位置维护一个multiset,表示可以和当前位置同时选择的被修改过的位置的值的集合。

我们需要知道每个位置本来的值加上multiset的最大值的最大值。

由于修改某个位置是需要在这个位置左右两边的两个区间的multiset中同时插入或删除一个值,我们可以用线段树维护集合,某个区间的节点上的multiset中的元素代表这个区间中每个multiset里都有一个当前元素。

我们还需要维护区间最大值。

由于每次修改最多引起$O(\log N)$次multiset操作,复杂度为$O(n+q\log ^2 n)$。

补充:

用STL来帮助做树套树。只用存修改后的值。

代码(100分):

#include<cstdio>
#define M 3700001
#define N 2097152
inline int min(int u,int v){return u<v?u:v;}
inline int max(int u,int v){return u<v?v:u;}
int a[N],b[M],c[M],d[M],e[N],f[N],g[N],m,n,p,q,t;
inline void add(int u,int v,int w){b[++t]=a[u],c[a[u]=t]=v,d[t]=w;}
inline void up(int u){g[u]=max(g[u<<1],g[u<<1|1]);}
inline void modify(int u,int v){for(g[u|=m]=v;u>>=1;up(u));}
inline int query(int u,int v)
{
int w=0;
for(u+=m-1,v+=m+1;u^v^1;u>>=1,v>>=1)
{
if(~u&1)w=max(w,g[u^1]);
if(v&1)w=max(w,g[v^1]);
}
return w;
}
inline void add(int u,int v,int x,int y)
{
for(u+=m-1,v+=m+1;u^v^1;u>>=1,v>>=1)
{
if(~u&1)add(u^1,x,y);
if(v&1)add(v^1,x,y);
}
}
void dfs(int u,int v)
{
for(int i=a[u];i;i=b[i])v=max(v,d[i]+query(max(1,c[i]-p+1),min(n,c[i]+p-1))),modify(c[i],d[i]);
u<m?dfs(u<<1,v),dfs(u<<1|1,v),0:q<(u^m)?0:printf("%d\n",v);
for(int i=a[u];i;i=b[i])modify(c[i],0);
}
int i,u,v,w;
int main()
{
for(scanf("%d%d%d",&n,&p,&q),m=1;m<n+2||m<=q;m<<=1);
for(i=1;i<=n;i++)scanf("%d",e+i);
for(i=1;i<=q;i++)scanf("%d%d",&u,&v),add(f[u],i-1,u,e[u]),e[u]=v,f[u]=i;
for(i=1;i<=n;i++)f[i]?add(f[i],q,i,e[i]):add(1,i,e[i]);
return dfs(1,0),0;
}

【2020NOI.AC省选模拟#7】C. 逃课的更多相关文章

  1. NOI.AC省选模拟赛第一场 T1 (树上高斯消元)

    link 很容易对于每个点列出式子 \(f_{x,y}=(f_{x,y-1}+f_{x,y}+f_{x,y+1}+f_{x+1,y})/4\)(边角转移类似,略) 这个转移是相互依赖的就gg了 不过你 ...

  2. [NOI.AC省选模拟赛3.31] 星辰大海 [半平面交]

    题面 传送门 思路 懒得解释了......也是比较简单的结论 但是自己看到几何就退缩了...... 下周之内写一个计算几何的学习笔记! Code #include<iostream> #i ...

  3. [NOI.AC省选模拟赛3.31] 附耳而至 [平面图+最小割]

    题面 传送门 思路 其实就是很明显的平面图模型. 不咕咕咕的平面图学习笔记 用最左转线求出对偶图的点,以及原图中每个边两侧的点是谁 建立网络流图: 源点连接至每一个对偶图点,权值为这个区域的光明能量 ...

  4. [NOI.AC省选模拟赛3.30] Mas的童年 [二进制乱搞]

    题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i ...

  5. [NOI.AC省选模拟赛3.23] 染色 [点分治+BFS序]

    题面 传送门 重要思想 真的是没想到,我很久以来一直以为总会有应用的$BFS$序,最终居然是以这种方式出现在题目中 笔记:$BFS$序可以用来处理限制点对距离的题目(综合点分树使用) 思路 本题中首先 ...

  6. [NOI.AC省选模拟赛3.23] 集合 [数学]

    题面 传送门 一句话题意: 给定$n\leq 1e9,k\leq 1e7,T\leq 1e9$ 设全集$U=\lbrace 1,2,3,...n\rbrace $,求$(min_{x\in S}\lb ...

  7. [noi.ac省选模拟赛]第12场题解集合

    题目 比赛界面. T1 数据范围明示直接\(O(n^2)\)计算,问题就在如何快速计算. 树上路径统计通常会用到差分方法.这里有两棵树,因此我们可以做"差分套差分",在 A 树上对 ...

  8. [noi.ac省选模拟赛]第10场题解集合

    题目 比赛界面. T1 不难想到,对于一个与\(k\)根棍子连接的轨道,我们可以将它拆分成\(k+1\)个点,表示这条轨道不同的\(k+1\)段. 那么,棍子就成为了点与点之间的边.可以发现,按照棍子 ...

  9. [noi.ac省选模拟赛]第11场题解集合

    题目   比赛界面. T1   比较简单.容易想到是求鱼竿的最大独立集.由于题目的鱼竿可以被分割为二分图,就可以想到最大匹配.   尝试建边之后会发现边的数量不小,但联系题目性质会发现对于一条鱼竿,它 ...

  10. [noi.ac省选模拟赛20200606]赌怪

    题目   点这里看题目. 分析   先特判掉\(K=2\)的情况.   首先可以考虑到一个简单 DP :   \(f(i)\):前\(i\)张牌的最大贡献.   转移可以\(O(n^2)\)地枚举区间 ...

随机推荐

  1. Tooltip 文字提示,居中显示

    Tooltip 文字提示有时候在table中无法居中显示,这个可以设置一下 <a-tooltip placement="top" overlayClassName=" ...

  2. SDN之Openflow+OpenDayLight课程开课通知

    内容简介: 该课程为期2天,在这两天里 我们将会深入体会SDN的特点与传统网络的区别 ,掌握SDN架构里各层的协议用途,Openflow作为sdn里的一款开源的南向协议,最大的意义体现在它实现了网络设 ...

  3. 自己写的java教程,免费分享

    自己写的一套java教程,主要用于内部培训使用,有需要的可以直接免费下载: http://it.zhenzikj.com/download/java.zip 一共写了3套: java语言基础.网络开发 ...

  4. repmgr部署和测试

    https://www.modb.pro/db/22029 https://blog.csdn.net/qq_34479012/article/details/125706815?app_versio ...

  5. C 标准 C89/C90/C99/C11/C17

    C89/C90 PDF:https://www.yodaiken.com/wp-content/uploads/2021/05/ansi-iso-9899-1990-1.pdf C99 PDF:htt ...

  6. Vue2 element-ui组件二封-表单组件-效果展示

    vue2已经落后了? 不着急, vue3的也在写的过程中, 只是发出来vue2的一些组件 系列说明: > 编写原因 vue2在很多人眼里已经快过时了, 而我一直想写一些总结, 但是从两年前到现在 ...

  7. C# 中 SetTimeout 方案

    近期项目中需在用户点击按钮后,延时执行代码逻辑,避免频繁操作.网上没找到有关 C# SetTimeout 官方API , 于是通过异步线程,动手实现一个.方案如下,如果同一个DelayedProces ...

  8. MySQL表操作(下篇)--完整性约束

    一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录FOREIGN KEY ...

  9. springboot集成Thumbnailator压缩图片

    一.参考大神博客 1.https://blog.51cto.com/u_11269274/5118649 2.https://blog.csdn.net/weixin_44722978/article ...

  10. P8872 [传智杯 #5 初赛] D-莲子的物理热力学

    题目链接:P8872 [传智杯 #5 初赛] D-莲子的物理热力学 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 参考了题解,自己在这再写一遍 假设数组有序且经过m次操作后的数组最 ...