思路

  • 不难想到枚举\(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. 城市旅游ppt模板

    城市旅游ppt模板,城市,旅游,旅行,休闲. 下载:http://www.huiyi8.com/lvyoumuban/ppt/

  2. 51nod【1196】字符串的数量

    超级神题! 有n种字符,若此种字符的编号( \(1\) ~ \(n\)),\(i*2>n\),则他后面可接任意字符.若不是,则他后面接的字符编号至少要是他的两倍. 问长度为m的字符串的个数. 这 ...

  3. string类封装

    class cMyString{ char* m_str; int m_strSize;public: cMyString();//指针指向一个空字符串 cMyString(char* str);// ...

  4. arm-linux-gcc4.4.3编译busybox-1.25.0

    系统环境: 1.操作系统:Ubuntu16.04 2.交叉编译工具链:arm-linux-gcc4.4.3 3.busybox源码包:busybox-1.25.0 一.修改Makefile配置 首先解 ...

  5. POJ2657Comfort(扩展欧几里得基础)

    A game-board consists of N fields placed around a circle. Fields are successively numbered from1 to ...

  6. 「NOIP2017」「LuoguP3959」 宝藏(爆搜

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nn 个深埋在地下的宝藏屋, 也给出了这 nn 个宝藏屋之间可供开发的mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏. ...

  7. wpf如何获取control template里的元素

    wpf中的控件模板里的元素有自己独立的命名域. 因此不能通过FindName来根据x:Name来查找子节点. 自己写了一个方法, 通过可视树遍历子节点,然后匹配名字. 如下: private stat ...

  8. POJ3177(无向图变双连通图)

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11514   Accepted: 4946 ...

  9. request实现请求转发

    ServletContext可以实现请求转发,request也可以. 在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常 在forwar ...

  10. 五 akka streams kafka

    (转载 https://doc.akka.io/docs/akka-stream-kafka/current/home.html) 一: Akka Streams Kafka, also known ...