题面

发现每种电影只在两场之间产生贡献(只有$pos$的一场的就在$[pos,n]$产生贡献)。那么我们针对每个位置$i$求出这场电影下一次出现的位置$nxt[i]$,然后每次更新一下,求整个区间的最大值。具体说来我们先在每个电影第一次上映的位置$i$对$[i,nxt[i]-1]$区间修改一下,然后从左到右扫过去,每次消除$[i,nxt[i]-1]$的贡献,再增加$[nxt[i],nxt[nxt[i]]-1]$的贡献即可。

注意:不一定每种电影都出现过!

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=;
  6. long long maxx[*N],laz[*N],ans;
  7. int num[N],val[N],fir[N],las[N],nxt[N],n,m,rr;
  8. void release(int nde)
  9. {
  10. if(laz[nde])
  11. {
  12. int ls=*nde,rs=*nde+;
  13. laz[ls]+=laz[nde],laz[rs]+=laz[nde];
  14. maxx[ls]+=laz[nde],maxx[rs]+=laz[nde];
  15. laz[nde]=;
  16. }
  17. }
  18. void add(int nde,int l,int r,int nl,int nr,int task)
  19. {
  20. if(l>nr||r<nl)
  21. return ;
  22. else if(l>=nl&&r<=nr)
  23. maxx[nde]+=task,laz[nde]+=task;
  24. else
  25. {
  26. int mid=(l+r)/,ls=*nde,rs=*nde+; release(nde);
  27. add(ls,l,mid,nl,nr,task),add(rs,mid+,r,nl,nr,task);
  28. maxx[nde]=max(maxx[ls],maxx[rs]);
  29. }
  30. }
  31. long long query(int nde,int l,int r,int nl,int nr)
  32. {
  33. if(l>nr||r<nl)
  34. return ;
  35. else if(l>=nl&&r<=nr)
  36. return maxx[nde];
  37. else
  38. {
  39. int mid=(l+r)/,ls=*nde,rs=*nde+; release(nde);
  40. return max(query(ls,l,mid,nl,nr),query(rs,mid+,r,nl,nr));
  41. }
  42. }
  43. int main ()
  44. {
  45. scanf("%d%d",&n,&m);
  46. for(int i=;i<=n;i++)
  47. {
  48. scanf("%d",&num[i]);
  49. if(las[num[i]])
  50. nxt[las[num[i]]]=i;
  51. las[num[i]]=i;
  52. }
  53. for(int i=n;i;i--)
  54. fir[num[i]]=i;
  55. for(int i=;i<=m;i++)
  56. scanf("%d",&val[i]);
  57. for(int i=;i<=m;i++)
  58. if(fir[i])
  59. {
  60. rr=nxt[fir[i]]?nxt[fir[i]]-:n;
  61. add(,,n,fir[i],rr,val[i]);
  62. }
  63. for(int i=;i<=n;i++)
  64. {
  65. ans=max(ans,maxx[]);
  66. rr=nxt[i]?nxt[i]-:n;
  67. add(,,n,i,rr,-val[num[i]]);
  68. if(nxt[i])
  69. {
  70. rr=nxt[nxt[i]]?nxt[nxt[i]]-:n;
  71. add(,,n,nxt[i],rr,val[num[i]]);
  72. }
  73. }
  74. printf("%lld",ans);
  75. return ;
  76. }

解题:POI 2015 Kinoman的更多相关文章

  1. [BZOJ 3747] [POI 2015] Kinoman【线段树】

    Problem Link : BZOJ 3747 题解:ZYF-ZYF 神犇的题解 解题的大致思路是,当区间的右端点向右移动一格时,只有两个区间的左端点对应的答案发生了变化. 从 f[i] + 1 到 ...

  2. [POI 2015]Kinoman

    Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l< ...

  3. 解题:POI 2015 PUS

    题面 还以为是差分约束,原来拓扑排序也能解决这样的问题=.= 类似差分约束的建图方式,我们把大小关系看做有向边.这样一来图上是不允许存在环的,于是我们可以做拓扑排序.然后问题来了,边数非常大,根本建不 ...

  4. 解题:POI 2015 Pieczęć

    题面 发现好像没有什么好做法,那就模拟么=.= 以印章左上角的'x'为基准,记录印章上'x'的相对位置模拟.记录相对位置是因为可能有这种情况↓ 直接模拟是会漏掉的=.= #include<cst ...

  5. Odwiedziny[POI 2015]

    题目描述 给定一棵n个点的树,树上每条边的长度都为1,第i个点的权值为a[i]. Byteasar想要走遍这整棵树,他会按照某个1到n的全排列b走n-1次,第i次他会从b[i]点走到b[i+1]点,并 ...

  6. POI题解整合

    我也不知道为啥我就想把POI的题全都放到一篇blog里写完. POI 2005 SAM-Toy Cars 贪心,每次选下次出现最晚的. POI 2006 KRA-The Disks 箱子位置单调,所以 ...

  7. 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)

    官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...

  8. 2015 German Collegiate Programming Contest (GCPC 15) + POI 10-T3(12/13)

    $$2015\ German\ Collegiate\ Programming\ Contest\ (GCPC 15) + POI 10-T3$$ \(A.\ Journey\ to\ Greece\ ...

  9. [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告

    [NOIP 2015]运输计划 题面: A[NOIP2015 Day2]运输计划 时间限制 : 20000 MS 空间限制 : 262144 KB 问题描述 公元 2044 年,人类进入了宇宙纪元. ...

随机推荐

  1. Java基础知识:Java实现Map集合二级联动4

    comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label = new JLabe ...

  2. Ubuntu16.04使用Tarball安装ntp

    最近在学习linux,看书上例子(鸟哥的linux私房菜 P674),使用Tarball来安装ntp,出了点问题,提示错误,使用 ./configure 来检测程序时,出现如下提示: 提示少了 ope ...

  3. Paper Reading - Mind’s Eye: A Recurrent Visual Representation for Image Caption Generation ( CVPR 2015 )

    Link of the Paper: https://ieeexplore.ieee.org/document/7298856/ A Correlative Paper: Learning a Rec ...

  4. Amazon.com Seller Distributed Inventory Placement Inventory Placement Service

    Greetings, Thank you for writing to us. I understand that you would like to send inventory to our wa ...

  5. ShipStation Now Uses AWS And Amazon Fulfillment To Automatically Ship From eBay, Sears And Other Marketplaces

    ShipStation today unveiled a first-of-its-kind service to leverage Amazon Web Services and Amazon.co ...

  6. oozie的shell-action中加入hive脚本命令启动执行shell同时操作hive,抛异常Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143

    使用oozie来调度操作,用shell的action执行命令,其中shell里包含着hive -e 操作执行时,oozie窗口报 WARN ShellActionExecutor: - SERVER[ ...

  7. CSS3 使用 calc() 计算高度 vh px

    Viewport    viewport:可视窗口,也就是浏览器.    vw Viewport宽度, 1vw 等于viewport宽度的1%    vh Viewport高度, 1vh 等于view ...

  8. 过山车 HDU 2063 (二分图匹配裸题)

    Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...

  9. Alpha发布—文案+美工展示

    目录 团队简介 项目进展 组内分工 队员总结 后期计划 一.团队简介 二.项目进展 从选题发布到今天的Alpha发布,我们团队经历了许许多多的磨难.我们最终设计了如下的功能:首页.班级.个人.更多.打 ...

  10. vue cli3 配置postcss

    1.安装postcss-import,postcss-cssnext 包 2.修改package.json 将postcss响应的内容替换为 "postcss": { " ...