Educational Codeforces Round 77 (Rated for Div. 2) D A game with traps
题意:
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的更多相关文章
- 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]$表示陷阱的位置,如果你 ...
- 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)
比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...
- Educational Codeforces Round 77 (Rated for Div. 2)
A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...
- 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 ...
- Educational Codeforces Round 77 (Rated for Div. 2)D(二分+贪心)
这题二分下界是0,所以二分写法和以往略有不同,注意考虑所有区间,并且不要死循环... #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...
- Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence
C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...
- 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 ...
- 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 ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
随机推荐
- CORS on Nginx
https://enable-cors.org/server_nginx.html # # Wide-open CORS config for nginx # location / { if ($re ...
- Tesseract-OCR 字体库下载地址
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
- CrazyBingo mini VIP 2.0 视频开发板 NIOS移植例程(原创)
创建一个NIOS环境 注意事项 前言:(先了解下硬件) 本板卡目前主要适合以下几类人: (1)对FPGA 逻辑开发有强烈的兴趣,并且有一定的HDL基础 (2)计划采用FPGA图像架构,学习并研究图像算 ...
- 小白进阶—python中os模块用法
一.os模块概述 python中的os 模块包含普遍的操作系统功能,这个模块不受平台限制,即windows和linux上都适用. 二.常用方法 1.os.name 返回正在使用的平台.如果是windo ...
- Spring Boot (二) 整合 Redis
前言 本文将会基于 springboot 2.1.8.RELEASE 简单整合 Redis ,适合新手小白入门 Spring Boot 整合 Redis 入门 1.pom.xml 中引入 redis ...
- JS 判断移动端 ,跳转
function SetPlatForm() { var JumpUrl = ""; var sUserAgent = navigator.userAgent.toLowerCas ...
- CentOS6.8系统最小化安装
一.CentOS系统版本 CentOS-6.8-x86_64 二.安装系统 1.打开VMware主页点击创建虚拟机 2.选择镜像 3.启动虚拟机 4.键入回车键直接进行安装 5.按Tab键选择Skip ...
- 你不知道的JavaScript(上)this和对象原型(一)
第一章 关于this 1.this 既不指向函数自身也不指向函数的词法作用域 2.this 实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用(调用位置). 第二章 this全面 ...
- Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)
leetcode真的是一个学习阅读理解的好地方 860. 柠檬水找零 """ 因为用户支付的只会有5.10.20 对于10元的用户必须找一个5 对于20元的用户可以找(三 ...
- SpringCloud-创建服务消费者-Ribbon方式(附代码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...