G. Count the Trains(思维set + 二分)
Codeforces Round #797 (Div. 3)
Problem
铁轨上有 n 节车厢,每节车厢在各自的引擎驱动下可以达到一个最高速度,记录在一个序列 { a i } \{a_i\} {ai} 里. 车厢从左到右的编号依次为 1 到 n.
现在让这些车厢向左尽可能快地开动,要求靠右的车厢实际速度不能超过靠左的车厢. 这样便会形成若干段速度一致的连续数节车厢,称这样的一段为一节火车. 例如序列 a=[10,13,5,2,6] 对应的车厢的实际运行速度为 [10,10,5,2,2],形成了 3 节火车.
在车厢行驶时,依次收到了 m 条信息,每条信息包含两个数k和d,表示第 k 节车厢的最高速度因引擎老化而下降了 d. 请维护这个过程中火车的总节数,每次收到信息后输出,每条信息对数组的更改保存。
Solution
- 要求靠右的车厢实际速度不能超过他左边车厢的实际速度,
那么,最终会形成包含第一节车厢的单调递减的队列。
最终火车数就是该队列的严格递减序列的长度。 - 我们把该序列的下标存入set中,对于每次询问,找出set中最大的 j 满足 j ≤ k j \leq k j≤k
- 如果 j = k,插入set
- 如果 a [ j ] > a [ k ] a[j] > a[k] a[j]>a[k] (a[k]为修改后的值),插入set
- 插入后要维护队列的单调性,所以要把集合中 下标大于 j 的 且 其数值 大于等于 a[k]的删掉。
使队列始终是严格单调递减的。 - 此时set的大小即为该次修改的结果
- 时间复杂度 O ( m l o g n ) O(mlogn) O(mlogn)
Code
int main()
{IOS;int T; cin >> T;while (T--){int n, m; cin >> n >> m;for (int i = 1; i <= n; i++) cin >> a[i];set<int> s;for (int i = 1; i <= n; i++)if (s.empty() || a[i] < a[*s.rbegin()])s.insert(i);int k, d;while (m--){cin >> k >> d;a[k] -= d;auto it = s.upper_bound(k);if (it == s.begin()) s.insert(k);else{it = prev(it);if (*it == k || a[*it] > a[k])s.insert(k);}while (1){it = s.upper_bound(k);if (it != s.end() && a[*it] >= a[k])s.erase(it);else break;}cout << sz(s) << " ";}cout << "\n";}return 0;
}
G. Count the Trains(思维set + 二分)相关推荐
- BZOJ1863 [ZJOI2006]trouble 皇帝的烦恼 [思维题,二分答案,动态规划]
皇 帝 的 烦 恼 皇帝的烦恼 皇帝的烦恼 题目描述见链接 . 正 解 部 分 \color{red}{正解部分} 正解部分 当是一条链时, 答案显然为 max ( A [ i − 1 ] + A ...
- P1852-跳跳棋【思维,差分,二分】
正题 题目链接:https://www.luogu.com.cn/problem/P1852 题目大意 一个数轴上有333个跳棋,你每次可以将一个跳棋跳到另一个跳棋对称的位置,但是不能一次跨过两个棋子 ...
- 【Codeforces - 127D】Password(思维,二分+字符串Hash)
题干: Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temp ...
- Uniqueness(思维 or 二分 or 暴力)
题目链接:B. Uniqueness 题意:n (1 - 2000) 个数,只删除一个子串使得数组中没有重复元素,求删除的子串长度. 思路(参考博客cf1208B B. Uniqueness): 逆向 ...
- 2020ICPC上海 D Walker(思维、二分、三分)
链接 题目描述 As a world-famous traveler, Prof. Pang's research interest is to travel as many places as po ...
- 【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)
题干: 其中 zi 是第i次询问后的z. 解题报告: 因为有取log运算,所以分母的取值肯定不会超过30种,所以分每一个分母的时候,用前缀和优化一个和,最后求乘积就行了.(其实不需要快速幂,用快速幂也 ...
- 【CodeForces - 589F】Gourmet and Banquet (贪心,思维,二分)
题干: A gourmet came into the banquet hall, where the cooks suggested n dishes for guests. The gourmet ...
- 【洛谷 - U43391】不是0-1背包的暴力AC(思维,二分,可转化为二元组问题,复习暴力dfs总结)
题干: https://www.luogu.org/problemnew/show/U43391 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包. 小A的背包最多 ...
- 【2019南昌邀请赛现场赛 - G】Winner(思维、图论+缩点)
题目链接: https://nanti.jisuanke.com/t/40259" Ichuan really likes to play games, so he organized a ...
最新文章
- 【HM】第5课:JDBC连接MySQL数据库
- c语言答案填空选择,C语言试题配答案
- SAP中用json数据格式调用http接口发送短信邮件案例
- spring扫描自定义注解并进行操作
- 第六章 XaaS和IT服务标准
- linux下mysql-5.6忘记root密码,重置root密码详细过程
- C#读写txt文件的两种方法介绍
- 魅族17 5G旗舰快充头曝光:万年24W终成过去时
- 【NLP免费系列直播】图卷积神经网络, BERT,知识图谱, 对话生成
- BAT-局域网内在线电脑IP
- 为什么品质一直做不好?因为法方有问题
- PO系列之 使用XPI_INSPECTOR跟踪PO报错
- 百度云apkg手机文件怎么打开_ipad上用百度云和notability学习时的各种七七八八
- 睿智的目标检测22——Keras搭建RFBnet目标检测平台
- 计算机桌面出现输入框,Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法...
- 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
- php苗木批发,南京苗木批发市场(南京苗木生产中心)
- Linux shell:脚本编写快速入门
- 技术汇总:第七章:三种验证方式
- 使用xom实现xml文件数据的查找,删除,修改(转载)