思路

  • 不难想到枚举\(l\),那如何高效求出最小的\(r\)?这样答案加上\(x-r+1\)即可。
  • 如果\(l\)并没在序列里出现……没啥想法;如果\(l\)是序列里的数,我们可以做的事情是记下每个数出现的每个pos。观察可以发现如果某数小于\(l\)且在序列里出现过,则它不会被删,则:它的区间内所有跟它不同的数得都删掉;更小的数的右端点必须在它的左端点左边。
  • \(r\)还有个限制条件就是:比如如果序列中出现\(r+3\)在\(r+2\)左边,则不得不把\(r\)提高到\(r+2\),因此可以知道\(r\)始终都要大于等于一个值。
  • 思路是思路,预处理和维护就是另一个故事了……
const int maxn = 1e6 + 5;
int n, x, a[maxn], premax[maxn];
vector<int> pos[maxn];
ll ans; int main() {
read(n), read(x);
rep(i, 1, n) {
read(a[i]);
pos[a[i]].push_back(i);
premax[i] = max(a[i], premax[i - 1]);
} int p, t = n + 1;
for (int i = x; i; i--) {
if (pos[i].size()) {
if (t < pos[i].back()) break;
t = pos[i][0];
}
p = i;
} t = -1;
rep(l, 1, x) {
int r = max(l, p - 1);
if (t > 0) r = max(r, premax[t]);
ans += x - r + 1;
if (pos[l].size()) {
if (t > pos[l][0]) break;
t = pos[l].back();
}
} writeln(ans);
return 0;
}

Codeforces 1167E(思路、数据处理)的更多相关文章

  1. Codeforces 1167E 尺取法

    题意:给你一个长度为n的数组,以及数组中的数的取值范围1 - m,问有多少个区间[l, r],使得删除了数组中数值为[l, r]的数之后,数组是非递减的. 思路:我们记录一下每一个数出现的最左端和最右 ...

  2. Codeforces - 662A 思路巧妙的异或

    题意:给你\(n\)堆石子玩尼姆博弈,每堆石子可以是\(a_i\)也可以是\(b_i\),选择概率相等且每堆选择相互独立,求先手必胜(异或不为0)的概率 首先需要找出一种优雅的策略表示方法(利用异或的 ...

  3. Codeforces Round #269 (Div. 2) A,B,C,D

    CodeForces - 471A 首先要有四个数相等,然后剩下两个数不同就是Bear,否则就是Elephant. #include <bits/stdc++.h> using names ...

  4. CodeForces Canada Cup 2016【A,B,C,D】

    CodeForces 725A: 思路就是如果"最左"不是'>'这个了,那么这个右边的一定不可能到达左边了: 同理最右: CodeForces 725B: 有两个空姐,一个从 ...

  5. Common Divisors CodeForces - 182D || kmp最小循环节

    Common Divisors CodeForces - 182D 思路:用kmp求next数组的方法求出两个字符串的最小循环节长度(http://blog.csdn.net/acraz/articl ...

  6. Jury Meeting CodeForces - 854D

    Jury Meeting CodeForces - 854D 思路:暴力枚举会议开始的那一天(只需用所有向0点飞的航班的那一天+1去枚举即可),并计算所有人此情况下去0点和从0点出来的最小花费. 具体 ...

  7. 算法笔记--树的直径 && 树形dp && 虚树 && 树分治 && 树上差分 && 树链剖分

    树的直径: 利用了树的直径的一个性质:距某个点最远的叶子节点一定是树的某一条直径的端点. 先从任意一顶点a出发,bfs找到离它最远的一个叶子顶点b,然后再从b出发bfs找到离b最远的顶点c,那么b和c ...

  8. CCPC-Wannafly Summer Camp 2019 Day1

    A - Jzzhu and Cities CodeForces - 449B 题意:n座城市,m条路,k条铁路啥的吧,然后要求最多能删多少条铁路保持1到$n$的最短路不变. 思路:因为铁路是从1出发的 ...

  9. 算法笔记--CDQ分治 && 整体二分

    参考:https://www.luogu.org/blog/Owencodeisking/post-xue-xi-bi-ji-cdq-fen-zhi-hu-zheng-ti-er-fen 前置技能:树 ...

随机推荐

  1. CSS+HTML+JQuery简单菜单

    1. [代码]style <style type="text/css">    body,ul,li,a{        margin:0;        paddin ...

  2. array_1.array_map

    note: 为数组的每个元素应用回调函数 <?php $arr = [1, 2, 3]; $arr1 = array_map( function ($value) { return $value ...

  3. ACM学习历程—HDU 5317 RGCDQ (数论)

    Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more an ...

  4. 数据库关键字 (Oracle, SQL Server, DB2)

    Oracle SQL Server DB2 ! @@IDENTITY   DETERMINISTIC & ADD   DISALLOW      ( ALL   DISCONNECT    ) ...

  5. Set connectionId threw an exception.

    今天调试一个WPF程序时,出现一个问题. 程序运行后抛出异常, "Set connectionId threw an exception. XXXXXXXXXX",原因是依赖的一个 ...

  6. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录

    上节课复习:1.函数的对象    函数可以被当作数据取处理2.函数嵌套    嵌套调用:在调用一个函数时,函数体代码又调用了其他函数    嵌套定义:在一个函数内部又定义了另一个函数 def foo( ...

  7. JS--改变div大小

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. Word直接发表博客测试

    这是我现在使用的VSCode! 这是另一段测试内容!

  9. PCL中异常处理机制

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=287 本节我们主要讨论PCL在编写和应用过程中如何利用PCL的异常机制,提高 ...

  10. 《Java多线程编程核心技术》读后感(三)

    synchronized同步语句块 用synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行以一个长时间的任务,那么B线程则必须等待比较较长的时间.在这样的情况下可以使用s ...