题意:
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. 使用java语言实现八皇后问题

    八皇后问题,在一个8X8的棋盘中,放置八个棋子,每个棋子的上下左右,左上左下,右上右下方向上不得有其他棋子.正确答案为92中,接下来用java语言实现. 解: package eightQuen; / ...

  2. 在VS2017中连接到SQLite数据源(dbfist)

    在VS2017中配置.连接到SQLite数据源(dbfist) 需要安装的VS插件 SQLite/SQL Server Compact ToolBox 这个插件安装后,在选择数据源时已经可以选择SQL ...

  3. 70道阿里百度高频Java面试题(框架+JVM+多线程+算法+数据库)

    基础与框架 1.String类能被继承吗,为什么 2.String,Stringbuffer,StringBuilder的区别? 3.ArrayList和LinkedList有什么区别 4.类的实例化 ...

  4. oracle管理角色和权限

    介绍 这一部分主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必需为其授予系统的权限:如果 ...

  5. 可编程逻辑(FPGA)与硬核处理器(HPS)之间互联的结构

    本周我想进一步探究可编程逻辑(FPGA)与硬核处理器(HPS)之间互联的结构.我发现了三种主要方式,它们是如何映射并处理通信的,哪些组件需要管控时序并且有访问权限. AXI Bridge 为了能够实现 ...

  6. 【转载】img图片之间的间距问题

    [问题]页面中如果有多张图片,那么图片之间会有一些间距,在某些情况下(如切好的图片再次拼接),在显示上就会出现一些问题.效果如下: 解决方案参看以下文章 img图片之间的间距问题

  7. WPF引用WinForm控件

    前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf=&quo ...

  8. Mysql被黑客入侵及安全措施总结

    情况概述 今天登陆在腾讯云服务器上搭建的 MySQL 数据库,发现数据库被黑了,黑客提示十分明显. MySQL 中只剩下两个数据库,一个是information_schema,另一个是黑客创建的PLE ...

  9. vue中实现百度地图

    1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/ ...

  10. C# sync/async 同步/异步

    同步方法 Console.WriteLine($")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}******* ...