原题链接:

Problem - 1260D - Codeforces

题意:

你有 m 个士兵,你和士兵都在 0 坐标上,你要把其中的某些士兵带到 n+1 的坐标去打 boss,过程中不能死,每个士兵都有敏捷度 ,其中有 k 个陷阱,每个陷阱的坐标在  ,危险程度为  (当士兵的敏捷度 < 陷阱的危险程度时,士兵将立即死亡),你可以到  去解除这个陷阱的威胁,你在 x 坐标可以做如下操作:

1:你走到 x-1 或 x+1 的坐标,花费一个单位时间。

2:你和你的士兵 走到 x-1 或 x+1 的坐标,花费一个单位时间。

3:如果  ,你可以解除第 i 个陷阱。

(你和你的士兵可以不在同一个位置)

(陷阱的危险程度不会累加)

问你最多能带多少个士兵在 t 个单位时间内去打 boss。

解法:

二分答案。可以二分最多可以带的士兵数。右端点要设成 m + 1 (调了 1 h 就离谱)。

check 函数可以用一个变量来表示自己最远走到哪里,之后加上多走的就可以了。

Code :

 # include <bits/stdc++.h>
//# include "windows.h"
# define ll long long
//# define int ll
# define db double
# define mod 998244353
//# define mod 1000000007
# define inf 1000000000
# define INF 1000000000000000000
# define fi first
# define se second
# define pb push_back
using namespace std;
int dx[15] = {0, 0, 1, -1, -1, -1, 1, 1};
int dy[15] = {1, -1, 0, 0, -1, 1, -1, 1};int n, m, k, t, b[200005];vector <pii> g[200005];bool cmp1(int a, int b){return a > b;
}int chk(int x){int num = b[x], ret = 0, ind = 0;for (int i = 1;i <= n+1;i++){ind = max(ind, i-1);ret++;if (g[i].size() == 0) continue;for (pii a : g[i]){int r = a.fi, w = a.se;if (w > num){if (ind >= r || i-1 >= r) continue;ret += 2*(r - max(ind, i-1));ind = max(ind, r);}}}return (ret <= t);
}int main(){scanf("%d%d%d%d", &m, &n, &k, &t);for (int i = 1;i <= m;i++) scanf("%d", &b[i]);for (int i = 1;i <= k;i++){int l, r, d;scanf("%d%d%d", &l, &r, &d);g[l].pb({r, d});} sort (b+1, b+m+1, cmp1);int l = 0, r = m+1;if (chk(l+1)) l++; while (l < r-1){int mid = (l+r) >> 1;if (chk(mid)) l = mid;else r = mid; }printf("%d", l);return 0;
}

CF 1260 D 题解相关推荐

  1. 【cf】Codeforces 题解等汇总

    [cf]Codeforces Round #774 (Div. 2) 前4题 [cf]Codeforces Round #774 (Div. 2) 前4题_legend_yst的博客-CSDN博客 [ ...

  2. CF Round#240题解

    第一次参加CF的比赛,MSK19.30,四个小时的时差真心累,第一次CODE到这么夜-- 一开始做了A,C两题,后来做B题的时候我体力和精神集中度就很低了,导致一直WA在4-- 今天起床后再刷B,终于 ...

  3. CF#574E. OpenStreetMap 题解

    原题链接 中文版戳这里(来自洛谷) 做法很简单 两层单调队列 不知道deque的 就自行baidu啦,也可以参考我以前发的deque模板 上代码了 #include<bits/stdc++.h& ...

  4. cf#732div2 c题解

    c   CodeForces - 1546C 题目大意:给定n个数,可以进行任意次相邻数交换,目标序列是不递增序列,问对于每个数能否用偶数次操作使得它们回到目标位置上. 思路: 如果序列没有重复数,那 ...

  5. 训练 CF 1700分 题解

    C o d e F o r c e s 264 B CodeForces 264B CodeForces264B G o o d S e q u e n c e s Good Sequences Go ...

  6. Educational Codeforces Round 95题解

    Educational Codeforces Round 95题解 题目链接 代码链接 A. Buying Torches 题目大意: 你手上现在有一个木棍.有以下两种交换方式: 1.用一个木棍交换x ...

  7. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  8. 【CF888G】Xor-MST(最小生成树,Trie树)

    [CF888G]Xor-MST(最小生成树,Trie树) 题面 CF 洛谷 题解 利用\(Kruskal\)或者\(Prim\)算法都很不好计算. 然而我们还有一个叫啥来着?\(B\)啥啥的算法,就叫 ...

  9. 【CF809D】Hitchhiking in the Baltic States(Splay,动态规划)

    [CF809D]Hitchhiking in the Baltic States(Splay,动态规划) 题面 CF 洛谷 题解 朴素\(dp\):设\(f[i][j]\)表示当前考虑到第\(i\)个 ...

  10. codeforces contest 1142

    前言 这个contest是div1的,div2的题其实也做了一下,但这里就不贴出了 CF 1142 A 题目大意:有nnn个城市排成一圈,相邻两个城市距离为kkk,一个人从起点SSS(SSS未给出)开 ...

最新文章

  1. stl_config.h基本宏
  2. 这么全的数组去重,你怕不怕?
  3. 论文阅读: Direct Monocular Odometry Using Points and Lines
  4. pythonista脚本合集_GitHub - xchenhao/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...
  5. SpringMVC响应使用案例(带数据页面跳转,快捷访问路径,返回json数据)
  6. Python 监控主机程序,异常后发送邮件(我的第一只Python程序)
  7. 基于python的酒店管理系统_基于Web酒店管理系统的设计与实现
  8. 研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是都乱的。...
  9. 宋红康jvm学习p1-100
  10. 访问服务器硬盘速度慢,硬盘读取速度变慢 当前传输模式pio的解决方法
  11. 2010年度《影评达人》活动火…
  12. linux 创建 swap分区
  13. android移动日记代码,Android开源项目-小熊日记源码
  14. 转:CEO, CFO, CIO, CTO, CSO是什么
  15. 快速学习COSMIC软件规模度量方法
  16. 雅可比矩阵:“Jacobian“矩阵
  17. iPhone12与mate40,你pick哪一款?
  18. 利用绝对值编码器计算odom阿克曼运动学模型
  19. 小话设计模式(九)组合模式
  20. 程序员的七夕浪漫时刻

热门文章

  1. 安装C4D步骤 附加一大波C4D序列号
  2. 洛谷P1005 [NOIP2007 提高组] 矩阵取数游戏题解
  3. 服务器中的虚拟化是什么意思,虚拟化是什么意思
  4. linux启动项修复工具,Boot Repair Tool: 可以修复与启动相关的大部分问题
  5. Backordered even the inventory is sufficient在库存量满足的情况下PICK却BACKORDER
  6. Gossip 协议详解
  7. word论文公式加点
  8. iOS之解决崩溃Collection was mutated while being enumerated.
  9. qlv格式转mp4格式(简单、高效)
  10. 阿里云产品之数据中台架构