题意:
x正轴上有着一个陷阱的位置,开关和灵敏度,如果一个士兵灵敏度输给陷阱,他是过不去这个陷阱的
幸运的是,你可以先过去把开关给关了,没错你是不怕陷阱的
接下来呢你有操作,你移动一个,耗费一秒
而你的团队需要你一起才能移动,但是团队有一个士兵过不了,那就不能过去,你可以先过去关掉开关,然后再回来带领你的团队过去
思路:
一开始就想到二分找最多人数,然后贪心来走路满足t秒内。
问题是怎么贪心呢?
我们不难发现我们关完开关后再回到队伍里一起走,所以我们要尽可能的减少这种往回。
图书一画图就发现,我们以陷进位置和开关位置连起来看作一个线段,两个线段相交,答案贡献就是2*(关掉第一个后顺手关第二个)
线段不相交就发现,例如(2,3)(5,10)你当然不可以关完3后还去关10,因为这样你就沙雕了,你回来的时候又通过来3 5,这是没必要的
所以对于不是相交的,我们走到3后就不用顺手帮5走到10了。

#include<bits/stdc++.h>
using namespace std;
const int maxx=2e5+10;
int l[maxx],r[maxx],d[maxx],a[maxx];
int n,m,k,t;
vector<pair<int,int> >v[maxx];
int read(){
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
return x*f;
}
bool cmp(int a,int b){return a>b;}
int work(int x) {
int tmpp=1,pre=0;// printf("hhx :: %d\n",x);
for(int i=1;i<=n;i++) {
int maxx=-1;
// for(vector<pair<int,int> >::iterator it=v[i].begin();it!=v[i].end();it++)
for(auto it:v[i])
if(it.second>x) maxx=max(maxx,it.first);
if(~maxx) {
pre=max(pre,i-1);
if(pre<maxx) tmpp+=2*(maxx-pre),pre=maxx;
}
tmpp++;
// printf("%d %d\n",i,x);
printf("tmp=%d\n",tmpp);
if(tmpp>t) return 0;
}
return 1;
} int main()
{
int ans=0;
m=read(),n=read(),k=read(),t=read();
for(int i=1;i<=m;i++) a[i]=read();
a[0]=0x3f3f3f3f;
for(int i=1;i<=k;i++){
l[i]=read();r[i]=read();d[i]=read();
v[l[i]].push_back(make_pair(r[i],d[i]));
}
int l=0,r=m;
sort(a+1,a+1+m,cmp);
work(a[1]);
while(l<=r){
int mid=(l+r)/2;
if(work(a[mid])) ans=mid,l=mid+1;
else r=mid-1;
}
printf("%d\n",ans);
}

  

Educational Codeforces Round 77 (Rated for Div. 2) D A game with traps的更多相关文章

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

    题意:$m$个士兵,每个士兵都有一个灵敏度$a[i]$,起点为$0$,终点为$n + 1$,在路上有$k$个陷阱,每个陷阱有三个属性$l[i],r[i],d[i]$,$l[i]$表示陷阱的位置,如果你 ...

  2. 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)

    比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...

  3. Educational Codeforces Round 77 (Rated for Div. 2)

    A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...

  4. Codeforce |Educational Codeforces Round 77 (Rated for Div. 2) B. Obtain Two Zeroes

    B. Obtain Two Zeroes time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. Educational Codeforces Round 77 (Rated for Div. 2)D(二分+贪心)

    这题二分下界是0,所以二分写法和以往略有不同,注意考虑所有区间,并且不要死循环... #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...

  6. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...

  7. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  8. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  9. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

随机推荐

  1. CORS on Nginx

    https://enable-cors.org/server_nginx.html # # Wide-open CORS config for nginx # location / { if ($re ...

  2. Tesseract-OCR 字体库下载地址

    https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

  3. CrazyBingo mini VIP 2.0 视频开发板 NIOS移植例程(原创)

    创建一个NIOS环境 注意事项 前言:(先了解下硬件) 本板卡目前主要适合以下几类人: (1)对FPGA 逻辑开发有强烈的兴趣,并且有一定的HDL基础 (2)计划采用FPGA图像架构,学习并研究图像算 ...

  4. 小白进阶—python中os模块用法

    一.os模块概述 python中的os 模块包含普遍的操作系统功能,这个模块不受平台限制,即windows和linux上都适用. 二.常用方法 1.os.name 返回正在使用的平台.如果是windo ...

  5. Spring Boot (二) 整合 Redis

    前言 本文将会基于 springboot 2.1.8.RELEASE 简单整合 Redis ,适合新手小白入门 Spring Boot 整合 Redis 入门 1.pom.xml 中引入 redis ...

  6. JS 判断移动端 ,跳转

    function SetPlatForm() { var JumpUrl = ""; var sUserAgent = navigator.userAgent.toLowerCas ...

  7. CentOS6.8系统最小化安装

    一.CentOS系统版本 CentOS-6.8-x86_64 二.安装系统 1.打开VMware主页点击创建虚拟机 2.选择镜像 3.启动虚拟机 4.键入回车键直接进行安装 5.按Tab键选择Skip ...

  8. 你不知道的JavaScript(上)this和对象原型(一)

    第一章  关于this 1.this 既不指向函数自身也不指向函数的词法作用域 2.this 实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用(调用位置). 第二章 this全面 ...

  9. Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)

    leetcode真的是一个学习阅读理解的好地方 860. 柠檬水找零 """ 因为用户支付的只会有5.10.20 对于10元的用户必须找一个5 对于20元的用户可以找(三 ...

  10. SpringCloud-创建服务消费者-Ribbon方式(附代码下载)

    场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...