Description

在炽热的核熔炉中,居住着一位少女,名为灵乌路空。
据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量——核能。
核焰,可融真金。

咳咳。
每次核融的时候,空都会选取一些原子,排成一列。然后,她会将原子序列分成一些段,并将每段进行一次核融。
一个原子有两个属性:质子数和中子数。
每一段需要满足以下条件:
1、同种元素会发生相互排斥,因此,同一段中不能存在两个质子数相同的原子。
2、核融时,空需要对一段原子加以防护,防护罩的数值等于这段中最大的中子数。换句话说,如果这段原子的中子数最大为x,那么空需要付出x的代价建立防护罩。求核融整个原子序列的最小代价和。

Input

第一行一个正整数N,表示原子的个数。
接下来N行,每行两个正整数pi和ni,表示第i个原子的质子数和中子数。

Output

输出一行一个整数,表示最小代价和。

Sample Input

5
3 11
2 13
1 12
2 9
3 13

Sample Output

26

Data Constraint

对于20%的数据,1<=n<=100
对于40%的数据,1<=n<=1000
对于100%的数据,1<=n<=10^5,1<=pi<=n,1<=ni<=2*10^4

颓了一个月。来刷道之前的题目。训练时没A。题解都不想打了……

分析:
显然有dp。
f[i]=max(f[j]+s[j+1,i]) {j>=l[i]}

l[i]为i点向左能到的位置。

举个例子:
5 4 7 6 2
现在l[i]=1
发现能转移的为
f[4]+2 f[3]+6 f[0]+7 {f[2]+7和f[1]+7不优}

也就是以x为该区间的代价的,左边界为下一个比它大的右边。{2的区间为[5,5],6的区间为[4,5],7的区间为[1,5]}

现在我们到了下个i
5 4 7 6 2 5

假设先在i能到达的l[i]=3,
现在转移变为
f[2]+7 f[3]+6 f[4]+5
显然只改变了前面的装移{因为l改变且递增},把后面的<=5的状态踢掉了,剩下的不变{f[3]+6}。

也就是说对于前一个状态,一些转移不变,也就是这部分的最大值已经算出,维护一下就ok了。

代码:

#include<cstdio>
#include<algorithm>
#include<set>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=1e5+7;
multiset<int>t;
int i,j,k,n,m,ans,head,tail;
int data[maxn],a[maxn],b[maxn],hou[maxn],l[maxn];
int sum[maxn],wei[maxn],f[maxn];
int main(){freopen("array.in","r",stdin);freopen("array.out","w",stdout);scanf("%d",&n);fo(i,1,n)scanf("%d%d",&a[i],&b[i]);fo(i,1,n)l[i]=hou[a[i]]+1,hou[a[i]]=i;fo(i,1,n)l[i]=max(l[i-1],l[i]);head=1;fo(i,1,n){k=i-1;while(head<tail&&wei[head+1]<l[i]){t.erase(t.find(sum[head]));head++;}while(head<=tail&&b[i]>data[tail]){t.erase(t.find(sum[tail]));k=wei[tail];tail--;}data[++tail]=b[i];wei[tail]=k;if(head!=tail){sum[tail]=f[wei[tail]]+data[tail];t.insert(sum[tail]);t.erase(t.find(sum[head]));}sum[head]=f[l[i]-1]+data[head];t.insert(sum[head]);f[i]=*t.begin();}printf("%d\n",f[n]);
}

jzoj 4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰相关推荐

  1. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  2. JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰 2017.10(B组)

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  3. 【JZOJ4884】【NOIP2016提高A组集训第12场11.10】图的半径

    题目描述 mhy12345学习了树的直径,于是开始研究图的半径,具体来说,我们需要在图中选定一个地方作为中心,其中这个中心有可能在路径上. 而这个中心的选址需要能够使得所有节点达到这个中心的最短路里面 ...

  4. JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    题目 20 40 80 100 大致流程 code 题目 Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核 ...

  5. 【JZOJ4883】【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    题目描述 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取一些原子,排成 ...

  6. 【JZOJ4861】【NOIP2016提高A组集训第7场11.4】推冰块

    题目描述 Dpstr最近迷上了推冰块.冰地是一个n行m列的网格区域,第i行第j列的格子记为(i,j),也就是左上角为(1,1),右下角为(n,m).每个格子可能是冰面.障碍物.减速带三者之一.其中,冰 ...

  7. 【JZOJ4896】【NOIP2016提高A组集训第16场11.15】兔子

    题目描述 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之 ...

  8. JZOJ4870. 【NOIP2016提高A组集训第9场11.7】涂色游戏

    Description Data Constraint Solution 我们设f[i][j]表示当前有i个格子恰好放了j种颜色的方案数,那么f[i][j]=f[i−1][j−1]∗(p−(j−1)) ...

  9. 【NOIP2016提高A组集训第7场11.4】推冰块

    Description Dpstr最近迷上了推冰块.冰地是一个n行m列的网格区域,第i行第j列的格子记为(i,j),也就是左上角为(1,1),右下角为(n,m).每个格子可能是冰面.障碍物.减速带三者 ...

最新文章

  1. 数据结构的简要介绍:图形如何工作
  2. 大盘点 | 2020年5篇图像分割算法最佳综述
  3. MySQL学习笔记之九:MySQL Replication
  4. java 10 发布_Java 10 发布之后,大多数受访者仍在使用 Java 8(82%)
  5. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型
  6. 新手建站注意点,你有注意到没?
  7. RealNetworks创始人Rob Glaser:为什么我们在中国取得成功?
  8. linux IP、端口连通性测试
  9. 剑指Offer - 面试题60. n个骰子的点数(动态规划)
  10. 人群计数(Crowd Counting)研究综述
  11. np.memmap读取大文件
  12. 泰克示波器截屏软件-Tektronix示波器上位机-OpenChoice安装。示波器波形发文章论文
  13. VB 在浏览器中打开指定网址
  14. js 测试正则表达式
  15. Vijos 1006
  16. C语言编写一个掷骰子猜大小游戏,用C语言模拟一种掷骰子游戏
  17. win10插入耳机还是外放
  18. 使用openoffice任意格式的office转pdf
  19. 现在企业常用考勤软件
  20. Opencv 统计灰度图所有灰度值

热门文章

  1. Redis5.0+——集群搭建,水平扩容
  2. 西工大机考《房地产法》大作业网考
  3. python中如何对一个属性或方法进行封装_python学习第20天
  4. 产消合一。有感于华人新首富赵长鹏投资福布斯的话
  5. 惠普战66prog2拆机_惠普战66二代内部做工怎么样?全新惠普战66二代拆机图解评测(含视频教程)...
  6. Latex / Katex 编辑基础化学方程式 点这篇绝对有用
  7. Matlab 公式大全
  8. android 简易我的积分页面、答题页面的设计
  9. 《趣学Python编程》——第1部分 学习编程 第1章 Python不是大蟒蛇 1.1 关于计算机语言...
  10. java企业级快速开发平台jeeadminlte(jeesite大胖老师修改版)