题目链接

思路

用\(f(i,j)\)表示前i个元素,以i为右端点,j为左端点时的答案。

用个"区间修改,单点查询"的线段树维护出第二维。在从左往右枚举i的过程中。将\([lst_i+1,i]\)的答案+1.将\([lst_{lst_i}+1,lst_i]\)的答案-1。

代码

  1. /*
  2. * @Author: wxyww
  3. * @Date: 2019-06-05 11:13:19
  4. * @Last Modified time: 2019-06-05 11:39:04
  5. */
  6. #include<cstdio>
  7. #include<iostream>
  8. #include<cstdlib>
  9. #include<cstring>
  10. #include<algorithm>
  11. #include<queue>
  12. #include<vector>
  13. #include<ctime>
  14. using namespace std;
  15. typedef long long ll;
  16. const int N = 100000 + 100;
  17. ll read() {
  18. ll x=0,f=1;char c=getchar();
  19. while(c<'0'||c>'9') {
  20. if(c=='-') f=-1;
  21. c=getchar();
  22. }
  23. while(c>='0'&&c<='9') {
  24. x=x*10+c-'0';
  25. c=getchar();
  26. }
  27. return x*f;
  28. }
  29. int tree[N << 2],lazy[N << 2];
  30. void pushdown(int rt) {
  31. if(lazy[rt]) {
  32. tree[rt << 1] += lazy[rt];
  33. tree[rt << 1 | 1] += lazy[rt];
  34. lazy[rt << 1] += lazy[rt];
  35. lazy[rt << 1 | 1] += lazy[rt];
  36. lazy[rt] = 0;
  37. }
  38. }
  39. void update(int rt,int l,int r,int L,int R,int c) {
  40. if(l >= L && r <= R) {
  41. lazy[rt] += c;
  42. tree[rt] += c;
  43. return;
  44. }
  45. pushdown(rt);
  46. int mid = (l + r) >> 1;
  47. if(L <= mid) update(rt << 1,l,mid,L,R,c);
  48. if(R > mid) update(rt << 1 | 1,mid + 1,r,L,R,c);
  49. tree[rt] = max(tree[rt << 1],tree[rt << 1 | 1]);
  50. }
  51. int pos[N],ans,lst[N];
  52. int main() {
  53. int n = read();
  54. int ans = 0;
  55. for(int i = 1;i <= n;++i) {
  56. int x = read();
  57. if(pos[x]) lst[i] = pos[x];
  58. pos[x] = i;
  59. if(lst[i]) update(1,1,n,lst[lst[i]] + 1,lst[i],-1);
  60. update(1,1,n,lst[i] + 1,i,1);
  61. ans = max(ans,tree[1]);
  62. }
  63. cout<<ans;
  64. return 0;
  65. }

nowcoder911L 最优子区间的更多相关文章

  1. 动态规划——区间dp

    在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...

  2. HDU 4597 Play Game(区间DP(记忆化搜索))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 题目大意: 有两行卡片,每个卡片都有各自的权值. 两个人轮流取卡片,每次只能从任一行的左端或右端 ...

  3. 46张PPT讲述JVM体系结构、GC算法和调优

    本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.(内嵌iframe,建议使用电脑浏览) 好东西当然要分享,PPT已上传可供下载 ...

  4. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

  5. 【腾讯优测干货分享】如何降低App的待机内存(四)——进阶:内存原理

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/3FTPFvZRqyAQnU047kmWJQ 1.4进阶:内存原理 在 ...

  6. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  7. 【腾讯优测干货分享】如何降低App的待机内存(二)——规范测试流程及常见问题

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/806TiugiSJvFI7fH6eVA5w 作者:腾讯TMQ专项测 ...

  8. 《深入理解Java虚拟机》调优案例分析与实战

    上节学习回顾 在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事. 本节学习重点 在书本上本 ...

  9. Spark Shuffle原理、Shuffle操作问题解决和参数调优

    摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...

随机推荐

  1. redis之漏斗限流

    Redis 4.0 提供了一个限流 Redis 模块,它叫 redis-cell.该模块也使用了漏斗算法,并提供了原子的限流指令.有了这个模块,限流问题就非常简单了.

  2. CodeForces 574D Bear and Blocks

    Limak is a little bear who loves to play. Today he is playing by destroying block towers. He built n ...

  3. sc命令创建和删除服务

    安装服务 sc create 服务名 binPath= "C:\Users\Administrator\Desktop\win32srvDemo\win32srvdemo\Debug\win ...

  4. lego loam 跑镭神32线激光雷达

    师弟反应镭神32线激光雷达(32C)录制的数据包不能跑lego loam,这里就总结一下. 首先lego loam默认的接受的topic name是velodyne_points,点云的frame_i ...

  5. 解决 IDEA 无法找到 java.util.Date 的问题

    原文首发于 studyidea.cn点击查看更多技巧 问题 最近在项目中频繁使用到 java.util.Date,但是使用 IDEA 提示查找 Date 类,却无法找到 java.util.Date. ...

  6. 【EasyExcel】使用easyExcel过程中,项目报错的解决集合

    报错:Can not close IO [ERROR] 2019-11-02 13:51:21.210 [ProExportSkuDataJob-1455-TaskThread-1] [com.dma ...

  7. Delphi - 16进制取反 Not

    //Not直接实现十六进制取反var I, J : word; begin I := $96E5; J := Not I; ShowMessage(Format('%x',[J])); end; 作者 ...

  8. Web Api 模型绑定 二

    [https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2] 1.ApiController属性使模型验证错误 ...

  9. 那些年我们走过的坑,对Fortify的漏洞进行总结

    1.修复方案,过滤引起Log Forging漏洞的敏感字符的公共方法 /** * Log Forging漏洞校验 * @param logs * @return */ public static St ...

  10. Scrum冲刺第二篇

    一.每日例会 会议照片 成员 昨日已完成的工作 今日计划完成的工作 工作中遇到的困难 陈嘉欣 撰写博客,管理成员提交代码 每日博客,根据队员代码问题更改规范文档安排后续工作 队员提交的代码管理困难 邓 ...