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

  1. 要求靠右的车厢实际速度不能超过他左边车厢的实际速度,
    那么,最终会形成包含第一节车厢的单调递减的队列。
    最终火车数就是该队列的严格递减序列的长度。
  2. 我们把该序列的下标存入set中,对于每次询问,找出set中最大的 j 满足 j ≤ k j \leq k j≤k
    1. 如果 j = k,插入set
    2. 如果 a [ j ] > a [ k ] a[j] > a[k] a[j]>a[k] (a[k]为修改后的值),插入set
  3. 插入后要维护队列的单调性,所以要把集合中 下标大于 j 的 且 其数值 大于等于 a[k]的删掉。
    使队列始终是严格单调递减的。
  4. 此时set的大小即为该次修改的结果
  5. 时间复杂度 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 + 二分)相关推荐

  1. BZOJ1863 [ZJOI2006]trouble 皇帝的烦恼 [思维题,二分答案,动态规划]

    皇 帝 的 烦 恼 皇帝的烦恼 皇帝的烦恼 题目描述见链接 . 正 解 部 分 \color{red}{正解部分} 正解部分 当是一条链时, 答案显然为 max ⁡ ( A [ i − 1 ] + A ...

  2. P1852-跳跳棋【思维,差分,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/P1852 题目大意 一个数轴上有333个跳棋,你每次可以将一个跳棋跳到另一个跳棋对称的位置,但是不能一次跨过两个棋子 ...

  3. 【Codeforces - 127D】Password(思维,二分+字符串Hash)

    题干: Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temp ...

  4. Uniqueness(思维 or 二分 or 暴力)

    题目链接:B. Uniqueness 题意:n (1 - 2000) 个数,只删除一个子串使得数组中没有重复元素,求删除的子串长度. 思路(参考博客cf1208B B. Uniqueness): 逆向 ...

  5. 2020ICPC上海 D Walker(思维、二分、三分)

    链接 题目描述 As a world-famous traveler, Prof. Pang's research interest is to travel as many places as po ...

  6. 【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)

    题干: 其中 zi 是第i次询问后的z. 解题报告: 因为有取log运算,所以分母的取值肯定不会超过30种,所以分每一个分母的时候,用前缀和优化一个和,最后求乘积就行了.(其实不需要快速幂,用快速幂也 ...

  7. 【CodeForces - 589F】Gourmet and Banquet (贪心,思维,二分)

    题干: A gourmet came into the banquet hall, where the cooks suggested n dishes for guests. The gourmet ...

  8. 【洛谷 - U43391】不是0-1背包的暴力AC(思维,二分,可转化为二元组问题,复习暴力dfs总结)

    题干: https://www.luogu.org/problemnew/show/U43391 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包. 小A的背包最多 ...

  9. 【2019南昌邀请赛现场赛 - G】Winner(思维、图论+缩点)

    题目链接: https://nanti.jisuanke.com/t/40259" Ichuan really likes to play games, so he organized a ...

最新文章

  1. 【HM】第5课:JDBC连接MySQL数据库
  2. c语言答案填空选择,C语言试题配答案
  3. SAP中用json数据格式调用http接口发送短信邮件案例
  4. spring扫描自定义注解并进行操作
  5. 第六章 XaaS和IT服务标准
  6. linux下mysql-5.6忘记root密码,重置root密码详细过程
  7. C#读写txt文件的两种方法介绍
  8. 魅族17 5G旗舰快充头曝光:万年24W终成过去时
  9. 【NLP免费系列直播】图卷积神经网络, BERT,知识图谱, 对话生成
  10. BAT-局域网内在线电脑IP
  11. 为什么品质一直做不好?因为法方有问题
  12. PO系列之 使用XPI_INSPECTOR跟踪PO报错
  13. 百度云apkg手机文件怎么打开_ipad上用百度云和notability学习时的各种七七八八
  14. 睿智的目标检测22——Keras搭建RFBnet目标检测平台
  15. 计算机桌面出现输入框,Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法...
  16. 关于电视盒子/XBOX/手机使用kodi访问局域网下的windows电脑文件/电影
  17. php苗木批发,南京苗木批发市场(南京苗木生产中心)
  18. Linux shell:脚本编写快速入门
  19. 技术汇总:第七章:三种验证方式
  20. 使用xom实现xml文件数据的查找,删除,修改(转载)

热门文章

  1. Siamese 网络(Siamese network)
  2. PPT快捷键-高效率办公技能get
  3. bam(sam)格式文件转化为fasta格式
  4. JavaWeb是什么?总结一下JavaWeb的体系
  5. python生成exe,pyinstaller编码错误或闪退,果断换坑cxfreeze!
  6. 家庭中成药使用方法一览表
  7. 你不知道的搜索引擎之高效率搜索
  8. C++ vc程序 进程优先级设置
  9. conda创建虚拟环境安装python类库
  10. Mac强大Git客户端Tower 基于Linux 内核开发的Git客户端