[CF1260D] A Game with Traps

A Game with Traps の 传送门

首先,假设带 \(p\) 个人可以,那么带更少的人一定可以。

那么,可以二分带多少个人。

设当前二分带 \(x\) 个人。

带敏捷值最大的 \(x\) 个士兵肯定最好。

去除当前无用的陷阱,即 \(d_i\) 小于等于 \(x\) 个士兵中的最小敏捷值。

陷阱区间不相交时

然后就是自己从 \(l_i\) 走到 \(r_i\) 解除这个陷阱,再走回来

陷阱区间相交时

看一看下面这个。

肯定不会从一个一个地从每个区间左边走到右边。

而是从第一个区间左边一直走到第二个区间右边。

写的时候直接左右端点差分,加贡献时对 \(2\) 取个 \(\min\)(往返总共走 \(2\) 次)。

#include <bits/stdc++.h>
#define int long long
#define mid (l + r >> 1)
using namespace std;
inline int read()
{int f = 0, ans = 0;char c = getchar();while (!isdigit(c))f |= c == '-', c = getchar();while (isdigit(c))ans = (ans << 3) + (ans << 1) + c - 48, c = getchar();return f ? -ans : ans;
}
void write(int x)
{if (x < 0)putchar('-'), x = -x;if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
constexpr int N = 2e5 + 5, inf = 1e18;
int m, n, k, t, a[N];
int adj[N];
struct trap
{int l, r, d;
} b[N];
inline bool check(int x)
{int mn = a[x], ti = n + 1;for (int i = 1; i <= k; ++i)if (mn < b[i].d)adj[b[i].l] += 2, adj[b[i].r + 1] -= 2;for (int i = 1; i <= n; ++i)adj[i] += adj[i - 1], ti += min(adj[i], 2ll);for (int i = 1; i <= n; ++i)adj[i] = 0;return ti <= t;
}
signed main()
{// freopen(".in", "r", stdin);// freopen(".out", "w", stdout);m = read(), n = read(), k = read(), t = read();for (int i = 1; i <= m; ++i)a[i] = read();sort(a + 1, a + m + 1, greater<>());a[0] = inf;for (int i = 1; i <= k; ++i)b[i].l = read(), b[i].r = read(), b[i].d = read();int l = 0, r = m, it = -1;while (l <= r)check(mid)? (it = mid, l = mid + 1): (r = mid - 1);write(it);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/874834.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[CF549F] Yura and Developers

A Game with Traps の 传送门首先,假设带 \(p\) 个人可以,那么带更少的人一定可以。 那么,可以二分带多少个人。 设当前二分带 \(x\) 个人。 带敏捷值最大的 \(x\) 个士兵肯定最好。 先去除当前无用的陷阱,即 \(d_i\) 小于等于 \(x\) 个士兵中的最小敏捷值。 陷阱区间不相交…

Vue2_Vue 实例

本文主要介绍 Vue 实例,包括如何创建一个 Vue 实例、实例中的数据和方法、实例生命周期钩子以及生命周期的图示,实例的数据和方法主要涉及数据 data 对象,在实例生命周期钩子中简单讲解了模板编译Vue 实例创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 V…

AI应用实战课学习总结(7)聚类算法分析实战

本文介绍了机器学习中的聚类场景问题,常用的聚类算法 以及 分类和聚类的简单对比,最后再次通过电商订单数据做用户画像的案例做了一次聚类实战,相信对你理解聚类应用应该有所帮助。大家好,我是Edison。 最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结…

飞行器半实物联合仿真:技术解析与应用实践

1.背景介绍 当前,飞行器已成为大国博弈复杂场景中的重要角色,其技术经过多次实践不断发展,性能持续提升,整体效能显著增强。随着计算机技术和系统仿真技术的发展,利用计算机模拟和仿真构造一个虚拟飞行器的飞行控制系统已成为可能。这种仿真环境不仅可以定量描述飞行器在真…

函数计算百炼新春活动正式上线!三步赢取蛇年精美好礼

目前,人工智能(AI)正不断突破创作的边界,无论是文字、图像还是视频,AI都能以其卓越的效率和创造力为创作者提供助力。然而,如何让用户快速体验到此类 AI 创作应用,依然是一个需被解决的问题。为此,我们特别推出了基于函数计算百炼模型服务的 AI 创作方案,从剧本创作到…

春节如何用一款软件拯救你的电视?

应用简介 我们的电视(ourtv)是一款完全无广告的电视直播软件,清晰度可选择高清,超清,蓝光等播放。安装即可使用,再也不用费劲去找各种不稳定的直播源了。 “我们的电视”播放线路(直播源)是来自央视频,因此画质和稳定性还可以。不过随之而来的问题是跟央视频 App 不兼…

React Hook Form vs Redux Form

(公众号同步文章:https://mp.weixin.qq.com/s/IUAldltW9ywZ9kXB-NCDxA) Redux Form 想必 React 开发者们非常熟悉,在 Redux 流行的那几年里,Redux Form 是表单页面的标配,但是随着前端的发展与成熟,一些过渡设计的理念逐渐被大家抛弃,Redux 就是便是其中之一。 在大型的…

深度学习基础理论————CV中常用Backbone(Resnet/Unet/Vit系列/多模态系列等)以及代码

主要介绍在CV中常用的Backbone原理简易代码(代码以及原理经常更新),参考论文中的表格,对不同的任务所使用的backbone如下:针对上面内容分为两块内容:1、基于卷积神经网络的CV Backbone:1.Resnet系列;2.Unet系列等;2、基于Transformer的 CV Backbone:1.Vit系列等;3、在…

BUUCTF刷题-Web方向1~5wp

[极客大挑战 2019]EasySQL 一个sql注入登录框,直接万能密码登录拿到flag[极客大挑战 2019]Havefun 打开环境,没有任何信息,查看源码,发现这么一段代码GET方式传入一个cat请求,并且变量值为dog,即?cat=dog,得到flag[HCTF 2018]WarmUp 打开环境,是一张图片,查看源码发现…

99%的人不知道,桥接模式失败的真正原因是它!

前言 大家好,我是VoltCary 最近做一些基础设施的部署工作,以手上的kali linux作为集群的节点,因为用到的是虚拟机,且本机网络为无线wifi,现在希望虚拟机像正常独立主机存在网络中,因此不能像正常本地主机一样直接加入网段节点,虚拟机还需要进行网络的配置。 让虚拟机成为…

Orleans框架升级指南(3.6.5--8.0.0)

升级指南 官方升级指南 https://learn.microsoft.com/zh-cn/dotnet/orleans/migration-guide?source=recommendations主要涉及以下几个改动点ConfigureApplicationParts3.6.5版在Silo初始化的时候,会通过这个方法将指定目录下的Grain加载进来.ConfigureApplicationParts(part…

AtCoder Beginner Contest 386

A - Full House 2 题意给\(4\)个整数,问能否添加一个整数使得恰有\(3\)个整数\(a\)和\(2\)个整数\(b\)思路模拟代码点击查看代码 #include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii;const int mxn = 1e6 + 5;void…