题目

分析

发现,当子段[l,r]被取了出来,那么[l-1,r]、[l,r+1]一定也被取了出来。

那么,首先将[1,n]放入大顶堆,每次将堆顶的子段[l,r]取出来,因为它是堆顶,所以一定是最大的子段,输出它,并将[l+1,r]和[l,r-1]放进堆中。

一共就只用做k次就可以了。

  1. #include <cmath>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cstring>
  6. #include <algorithm>
  7. #include <queue>
  8. const int maxlongint=2147483647;
  9. const int mo=1000000007;
  10. const int N=100005;
  11. using namespace std;
  12. long long n,m,a[N],sum[N],t[N*3][3],tot=1;
  13. int swap(int x,int y,int z)
  14. {
  15. t[x][z]=t[x][z]^t[y][z];
  16. t[y][z]=t[x][z]^t[y][z];
  17. t[x][z]=t[x][z]^t[y][z];
  18. }
  19. int up(int x)
  20. {
  21. while(t[x][2]>t[x/2][2] && x!=1)
  22. {
  23. for(int i=0;i<=2;i++)
  24. swap(x,x/2,i);
  25. x/=2;
  26. }
  27. }
  28. int down(int x)
  29. {
  30. int s=x*2,s1=x*2+1;
  31. while((t[x][2]<t[s][2] || t[x][2]<t[s1][2]) && s<=tot)
  32. {
  33. if(t[x][2]>t[s][2] && s1>tot) break;
  34. if(t[s][2]>t[s1][2])
  35. {
  36. for(int i=0;i<=2;i++)
  37. swap(x,s,i);
  38. x=s;
  39. }
  40. else
  41. if(s1<=tot)
  42. {
  43. for(int i=0;i<=2;i++)
  44. swap(x,s1,i);
  45. x=s1;
  46. }
  47. s=x*2,s1=x*2+1;
  48. }
  49. }
  50. int insert(int x,int y)
  51. {
  52. t[++tot][0]=y;
  53. t[tot][1]=x;
  54. t[tot][2]=sum[x]-sum[y-1];
  55. up(tot);
  56. }
  57. int cut()
  58. {
  59. t[1][0]=t[tot][0];
  60. t[1][1]=t[tot][1];
  61. t[1][2]=t[tot--][2];
  62. t[tot+1][0]=t[tot+1][1]=t[tot+1][2]=0;
  63. down(1);
  64. }
  65. int main()
  66. {
  67. scanf("%lld%lld",&n,&m);
  68. for(int i=1;i<=n;i++)
  69. {
  70. scanf("%lld",&a[i]);
  71. sum[i]=sum[i-1]+a[i];
  72. }
  73. tot=1;
  74. t[tot][0]=1;
  75. t[tot][1]=n;
  76. t[tot][2]=sum[n]-sum[0];
  77. while(m--)
  78. {
  79. printf("%lld ",t[1][2]);
  80. int x=t[1][1],y=t[1][0]+1,x1=t[1][1]-1,y1=t[1][0];
  81. cut();
  82. if(x==n) if(x>=y) if(y<=n) insert(x,y);
  83. if(x1>=y1) if(x1>=1) insert(x1,y1);
  84. }
  85. }

【NOIP2016提高A组五校联考4】ksum的更多相关文章

  1. NOIP2016提高A组五校联考4总结

    坑爹的第一题,我居然想了足足3个小时,而且还不确定是否正确. 于是,我就在这种情况下心惊胆跳的打了,好在ac了,否则就爆零了. 第二题,树形dp,本来差点就想到了正解,结果时间不够,没打完. 第三题, ...

  2. 【NOIP2016提高A组五校联考4】square

    题目 分析 首先,设\(f_{i,j}\)表示最大的以(i,j)为左下角的正方形的边长. 转移显然,\(f_{i,j}=\max(f_{i-1,j},f_{i,j-1},f_{i-1,j-1})+1\ ...

  3. 【NOIP2016提高A组五校联考4】label

    题目 题目 20%算法 设\(f_{i,j}\)表示第i个节点选了j这个权值的方案数. 显然转移方程为,\[f_{i,j}=\Pi_{v=son(i)}(\sum_{k=1}^{j-k}f_{v,k} ...

  4. NOIP2016提高A组五校联考3总结

    第一题,本来一开始就想到了数位dp,结果脑残地打了十几个转移方程,总是调试不出来,一气之下放弃了. 调第一题几乎调了整节比赛,第二第三都没它. 第二题连边找联通块. 第三题题解都打了三页,看都不想看. ...

  5. 【NOIP2016提高A组五校联考2】tree

    题目 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1.每个结点上有一个物品,第i 个结点上的物品价值为vi. 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的 ...

  6. 【NOIP2016提高A组五校联考2】running

    题目 小胡同学是个热爱运动的好孩子. 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n个格子排成的一个环形,格子按照顺时针顺序从0 到n- 1 标号. 小胡观察到有m 个同学在跑步,最开始每 ...

  7. 【NOIP2016提高A组五校联考2】string

    题目 给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位. 由于答案可能很大,模10^9 ...

  8. NOIP2016提高A组五校联考2总结

    第一题用组合数各种乱搞,其恶心程度不一般.搞了很久才调对,比赛上出了一点bug,只拿了30分. 第二题我乱搞得出个错误的结论,本来自信满满60分,结果爆零了. 第三题,树形dp,在一开始的时候想到了, ...

  9. NOIP2016提高A组五校联考1总结

    第一题二分,在比赛上明明想到的方法,结果考虑的时候似乎漏了什么,被否决掉了. 只打了个水法,10分. 第二题,最长不上升子序列,原题,类似的题目做过两道,直接搞定. 第三题,一开始想了一种通过在树上打 ...

随机推荐

  1. 修改Windows 2008以后系统的NTP服务设置

    @echo off echo autor OAK @echo off echo -------------------------------- @echo off echo setup time r ...

  2. pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  3. goland搭建beego开发环境

    1.安装最新的go软件 ,当前版本1.122.下载goland开发工具3.安装bee工具 go get github.com/beego/bee4.通过bee api dsh -tables=&quo ...

  4. TypeError: reduction operation 'argmax' not allowed for this dtype

    这个错误真的tmd伤脑筋.我用idxmax函数去求series类型的最大值的索引,结果明明是下面这种数据, 无论我如何pint他的shape,type,他怎么看都是一个满足idxmax函数要求的参数类 ...

  5. 逻辑回归2-scikit-learn参数介绍

    1.1     scikit-learn参数介绍 1.1.1  导入 from sklearn.linear_model import LogisticRegression 1.1.2  版本 sci ...

  6. IDEA 对spring boot Maven 项目打 Jar 包

    <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...

  7. 三、Kubernetes_V1.10集群部署-master-部署flanne网络

    1. etcdctl --ca-file=/etc/etcd/ssl/ca.pem --cert-file=/etc/etcd/ssl/server.pem --key-file=/etc/etcd/ ...

  8. hive udf编程教程

    hive udf编程教程 https://blog.csdn.net/u010376788/article/details/50532166

  9. ef core 动态拼接 条件

    var sql = new List<string>(); var sqlparams = new List<string>(); ; foreach (var p in ph ...

  10. 洛谷 P1593 因子和 题解

    题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1) ...