A Game with Traps

题解:


上图其实是我们两种决策的方案。决定我们在某点时刻到底是折返回去带队还是继续排雷。
我们发现当区间有交集的时候就继续排雷。否则折返回去带队这样花费的代价是最小的。然后就是去找题目中的二分性在哪里。我们可以发现当我们二分最低敏感度士兵的时候是具有二分性的。我们需要带的士兵的敏感度越低我们需要排的雷越多代价也就越大。这道题用了一个排序再间接通过队内士兵中的敏感度找到那个答案思路非常的妙。

#include <bits/stdc++.h>
//#define int long long
using namespace std;
int n,m,k,t;
const int N=2e5+7;
int a[N],cf[N];
struct Node
{int l,r,d;
}node[N];
bool check(int x)
{int low=a[x];memset(cf,0,sizeof cf);for(int i=1;i<=k;i++){if(node[i].d>low) cf[node[i].l]+=1,cf[node[i].r+1]-=1;}int res=0;for(int i=1;i<=n;i++) cf[i]+=cf[i-1];for(int i=0;i<=n;i++) res+=(cf[i]>=1);return res*2+n+1<=t;
}
int main()
{scanf("%d%d%d%d",&m,&n,&k,&t);for(int i=1;i<=m;i++) scanf("%d",a+i);for(int i=1;i<=k;i++){scanf("%d%d%d",&node[i].l,&node[i].r,&node[i].d);}sort(a+1,a+1+m,greater<int>());int l=0,r=m;while(l<r){int mid=(l+r+1)>>1;if(check(mid)) l=mid;else r=mid-1;}cout<<l<<endl;
}

A Game with Traps—— 二分相关推荐

  1. Educational Codeforces Round 77 (Rated for Div. 2) D. A Game with Traps 贪心 +二分

    传送门 文章目录 题意: 思路: 题意: 给你nnn个人,每个人都有个能力值aia_iai​.让后在1−m1-m1−m的路上有kkk个陷阱,每个陷阱的范围是[li,ri][l_i,r_i][li​,r ...

  2. C语言二分查找法(指针和数组实现)

    /** 编写一个函数,对一个已排序的整数表执行二分查找.* 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值.* 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时 ...

  3. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  4. 分治算法的设计思想(二分检索、二分归并排序)

    分治策略思想: 将原问题划分或者归结为规模较小的子问题. 递归或迭代求解每一个问题. 将子问题的解综合得到原问题的解. 性质: 子问题与原问题具有相同的性质. 子问题的求解彼此独立. 划分时子问题的规 ...

  5. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  6. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  7. [C] [二分] C语言实现快速排序

    为了以防万一有人想不开想手撕快排呢?比如我. 通过快排来理解二分思想 什么是快排? 快排的思想不难,理解好递归很重要. 什么是递归? 递归,就是在运行的过程中调用自己. 构成递归需具备的条件: 子问题 ...

  8. Showstopper [POJ3484] [二分] [思维]

    Description 给你n个数列,问哪一个数字在所有的数列中出现了奇数次(最多一个). Sample Input 1 10 1 2 10 11 10 1 1 10 11 10 1 4 4 1 1 ...

  9. BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】

    题目 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题. 现在你拥有n颗宝石,每颗宝石 ...

  10. usaco The Perfect Stall(二分匹配模板)

    其实二分匹配都是很早之前看的不过又忘了现在再看看比第一次好理解多了. /* ID:jinbo wu TASK:stall4 LANG:C++ */ #include<bits/stdc++.h& ...

最新文章

  1. 建立双链表(尾插法)
  2. mysql sqlstate 28000_mysql ERROR 1045 (28000): 错误解决办法
  3. vmmem 内存占用高
  4. [原创]辽宁移动通信-话费余额查询
  5. numpy(8)-转换维度
  6. mybatis_SQL映射(1)
  7. jstl 处理Date 时间
  8. matlab常数编程,用MATLAB编程序,拟合方程,求常数。 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
  9. 6.5 XGBoost实战
  10. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_7_Lambda表达式有参数有返回值的练习...
  11. SpringApplication.run 做了哪些事?
  12. 无法安装 DotNetCore.1.0.0-VS2015Tools.Preview2解决方法
  13. 【笔记】Altera - Quartus II使用方法——工程创建、Modelsim破解/仿真、Verilog编写、举例(待续)
  14. hscan扫描mysql代码_HScan 扫描器
  15. 百度杀毒软件2013低调发布
  16. 20200726 plecs 元件显示变量名
  17. 雷达信号处理---MTI滤波器设计仿真
  18. 云端卫士助力运营商实现DDoS安全业务的统一运营
  19. ibmr系列服务器怎么装架子,R440/R540/R640/R740 R820 R930 DELL服务器导轨 滑轨 支架 理线架...
  20. kms激活代码 win10_Win10_KMS_激活脚本(示例代码)

热门文章

  1. 协议分析_qvod_获取快播视频的下载地址_20120203
  2. python能写dnf脚本么_python dnf
  3. javaweb JAVA JSP计算机系试题库管理系统的设计与实现JSP题库管理系统 JSP试题管理系统
  4. 摸鱼摸累了,看几个有趣的网站
  5. WIn10桌面美化(一)Rainmeter的使用
  6. 基于MATLAB的PID控制器设计
  7. ubuntu18.04 ros-melodic 中科大的ROS教程gazebo打开没有地图与环境,只有地板
  8. 基于MATLAB的数字图像处理
  9. JAVA 二维码图片生成和base64位加密解密
  10. 瑞星2008序列号正确号码