P11232 [CSP-S 2024] 超速检测(民间数据)

原题链接​​​​​​

来分析这道题,题中所说由于是匀加速直线运动,所以超速的区间一定是连续的,而且还可以被计算出来,但是要注意区间的开闭。

我们可以把超速的区间变为测速仪的分布区间。

这道题可以通过多区间贪心来实现:一条长线段上有若干条短线段(可以重复也可以不完全覆盖长线段),请在长线段上选取尽可能少的点,使得每条短线段上(含端点)都有被选取的点。

贪心实现:按照右端点排序(从小到大),然后在尽可能少的右端点初开测速仪。

代码+注释:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 2, L = 1e6 + 2;
int t, n, m, l, V, tmp, ans1, ans2;
int d[N], v[N], a[N], p[N];
int lft[L], rgt[L]; //距离最近的测速仪编号
int ld[N], rd[N]; //每辆车超速区间的左、右端点
int g[N]; //所有超速的车的编号
int id; //后面贪心用的
bool cmp(int x, int y) {return rd[x] < rd[y];
}
void solve() {//1.常规读入+初始化ans1 = ans2 = 0, id = -1;cin >> n >> m >> l >> V;for (int i = 1; i <= n; ++i)cin >> d[i] >> v[i] >> a[i];for (int i = 1; i <= m; ++i) {cin >> p[i];lft[p[i]] = rgt[p[i]] = i; //这一行是2.的步骤,提前到这}//2.预处理距离最近的测速仪编号p[0] = 0, p[m + 1] = l + 1;for (int i = 0; i <= m; ++i)for (int j = p[i] + 1; j < p[i + 1]; ++j)lft[j] = i, rgt[j] = i + 1;//3.计算每辆车的超速区间(本题核心)for (int i = 1; i <= n; ++i) {if (d[i] > p[m]) continue; //如果驶入的位置之后没有测速仪就不理它了if (a[i] == 0) {if (v[i] > V) {g[++ans1] = i;ld[i] = rgt[d[i]];rd[i] = m;} //一开始就超速} else if (a[i] > 0) {if (v[i] > V) {g[++ans1] = i;ld[i] = rgt[d[i]];rd[i] = m;} //一开始就超速else {tmp = V * V - v[i] * v[i];if (tmp % (2 * a[i]) == 0) {tmp = d[i] + tmp / (2 * a[i]); //当车行驶到这里时提速到Vif (tmp < p[m]) {g[++ans1] = i;ld[i] = rgt[tmp + 1];rd[i] = m;} //在p[m]处恰好提速到V是不算的} else {tmp = d[i] + tmp / (2 * a[i]) + 1;if (tmp <= p[m]) {g[++ans1] = i;ld[i] = rgt[tmp];rd[i] = m;}}} //加速了一会儿才超速} else {if (v[i] > V) {tmp = v[i] * v[i] - V * V;if (tmp % (-2 * a[i]) == 0) {tmp = d[i] + tmp / (-2 * a[i]);if (tmp > p[m]) {g[++ans1] = i;ld[i] = rgt[d[i]];rd[i] = m;} else {ld[i] = rgt[d[i]];rd[i] = lft[tmp - 1];if (rd[i] >= ld[i]) g[++ans1] = i;}} else {tmp = d[i] + tmp / (-2 * a[i]);if (tmp >= p[m]) {g[++ans1] = i;ld[i] = rgt[d[i]];rd[i] = m;} else {ld[i] = rgt[d[i]];rd[i] = lft[tmp];if (rd[i] >= ld[i]) g[++ans1] = i;}}} //一开始超速,后面减速}}//4.计算最少需要开启的测速仪数量(贪心)sort(g + 1, g + 1 + ans1, cmp);for (int i = 1; i <= ans1; ++i)if (ld[g[i]] > id) {id = rd[g[i]];++ans2;} //如果左端点没有被覆盖到,那就在右端点覆盖cout << ans1 << " " << m - ans2 << endl;
}
int main() {cin >> t;while (t--) solve();return 0;
}

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

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

相关文章

JAVA 单例模式实验(头歌)

第1关&#xff1a;单例模式 任务描述 在企业网站后台系统中&#xff0c;一般会将网站统计单元进行独立设计&#xff0c;比如登录人数的统计、IP 数量的计数等。在这类需要完成全局统计的过程中&#xff0c;就会用到单例模式&#xff0c;即整个系统只需要拥有一个计数的全局对象…

PVE 一键安装WIKI.js

Wiki.js 一个轻量的知识库管理工具 在PVE 的shell 下执行如下代码&#xff08;国内访问需自行调整&#xff09;&#xff0c;一键安装&#xff0c;默认使用了sqlLite 作为数据库&#xff1a; bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/wikijs…

电脑维修指南

1.输入法切换 1.右键悬浮窗 2.选择全拼 2.换壁纸 壁纸给你准备好了 https://wwyz.lanzoul.com/b00g2g2vyd 密码:da72浏览器下载解压, 然后就有了 右键, 挑选 3.清理垃圾 浏览器输入这个地址 https://wwyz.lanzoul.com/ijMin2di41ih普通下载 找一个喜欢的地方 右键, 解压 …

FFmpeg 4.3 音视频-多路H265监控录放C++开发六,使用SDLVSQT显示yuv文件

使用QT 显示YUV 文件 在最后一帧的时候会不停的显示最后一帧图片。 Vsqtshowyuv.h #pragma once#include <QtWidgets/QWidget> #include "ui_vsqtshowyuv.h" #include <sdl/SDL.h> #include <iostream> #include <fstream> #include <Q…

[SWPUCTF 2022 新生赛]py1的write up

开启靶场&#xff0c;下载附件&#xff0c;解压后得到&#xff1a; 双击exe文件&#xff0c;出现弹窗&#xff1a; 问的是异或&#xff0c;写个python文件来计算结果&#xff1a; # 获取用户输入的两个整数 num1 int(input("Enter the first number: ")) num2 int…

排序算法(冒泡,插入),希尔排序(插入升级),希尔排序和插入排序时间比较!

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;排序算法 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一.冒泡排序&#xff1a; 时间复杂度&#xff1a;O&#xff08;N^2&#xff09;。 &#x1f3c4;‍♂️思路…

【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)

【Nas】X-DOC&#xff1a;搞机之PVE部署All In One&#xff08;黑群晖NAS & 软路由OpenWrt & Docker & Win10远程桌面&#xff09; 1、原硬件配置清单&#xff1a;2、改AIO后增加配置清单&#xff1a;3、虚拟化平台PVE&#xff1a;4、搭建的关键服务&#xff1a; 1…

Web高级开发实验:EL基本运算符与数据访问

一、实验目的 掌握EL的定义&#xff0c;即Expression Language&#xff0c;用于提高编程效率。学习和掌握在开发环境中创建Java文件&#xff0c;并在jsp文件中使用EL表达式去调用其中的方法与属性等。 二、实验所用方法 上机实操 三、实验步骤及截图 1、创建javaweb项目&a…

Springboot项目中常用注解

文章目录 Springboot相关注解EnableAspectJAutoProxy(exposeProxy true)内部实现机制 EnableTransactionManagementServletComponentScanMapperScan(basePackages {"com.xxx.mapper"})ComponentScan(basePackages{"*"})lombok Data注解Controller中的相关…

基础设施即代码(IaC):自动化基础设施管理的未来

随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性…

Spring Cloud 微服务综述 | 含服务调用最佳实践

Spring微服务架构综述 微服务是一种架构风格&#xff0c;它将单一应用程序拆分为一组小型、独立的服务&#xff0c;每个服务实现特定的业务功能&#xff0c;并且可以独立部署。在Spring生态系统中&#xff0c;提到Spring微服务通常是指利用Spring Cloud框架进行开发。Spring C…

jvm虚拟机介绍

Java虚拟机&#xff08;JVM&#xff09;是Java语言的运行环境&#xff0c;它基于栈式架构&#xff0c;通过加载、验证、准备、解析、初始化等类加载过程&#xff0c;将Java类文件转换成平台无关的字节码&#xff0c;并在运行时动态地将其翻译成特定平台的机器码执行。 JVM的核心…

Java全栈经典面试题剖析8】JavaSE高级 -- 线程同步、 线程通信、死锁、线程池

目录 面试题3.44 多线程的同步方式 面试题3.45 多线程安全问题怎么解决 面试题3.46 当一个线程进入一个对象的一个synchronized方法后&#xff0c;其它线程是否可进入此对象的其它方法? 面试题3.47 简述synchronized与java.util.concurrent.locks.Lock的异同&#xff…

基于SSM农业信息管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;农业技术管理&#xff0c;种植户管理&#xff0c;农产品类型管理&#xff0c;农资订单管理&#xff0c;系统管理 种植户账号功能包括&#xff1a;系统首页&#xff0c;个人中心&a…

01C++书写hello world、注释、变量、常量

#include <iostream> using namespace std; int main()//main为一个程序的入口&#xff0c;每个程序都必须仅有一个 { cout<<"hello world"<<endl; } //#输出结果为 //单行注释的符号 /* 多行注释的符号 */ //变量创建的语法&#xff1a;数据类…

OpenAI GPT-o1实现方案记录与梳理

本篇文章用于记录从各处收集到的o1复现方案的推测以及介绍 目录 Journey Learning - 上海交通大学NYUMBZUAIGAIRCore IdeaKey QuestionsKey TechnologiesTrainingInference A Tutorial on LLM Reasoning: Relevant methods behind ChatGPT o1 - UCL汪军教授Core Idea先导自回归…

shodan2---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 实验一&#xff1a;search 存在CVE-2019-0708的网络设备 CVE - 2019 - 0708**漏洞&#xff1a;** 该漏洞存在于远程桌面…

offset Explorer连接云服务上的kafka连接不上

以上配置后报连接错误时&#xff0c;可能是因为kafka的server.properties配置文件没配置好&#xff1a; 加上面两条配置&#xff0c;再次测试连接&#xff0c;成功 listeners和advertised.listeners

Xshell远程连接工具详解

Xshell是一款在Windows平台上运行的远程连接工具&#xff0c;它支持SSH1、SSH2以及Microsoft Windows平台的TELNET协议。Xshell通过互联网实现对远程主机的安全连接&#xff0c;帮助用户在复杂的网络环境中享受他们的工作。本文将详细介绍Xshell的溯源、最新版本以及它的优势。…

C++的相关习题(2)

初阶模板 下面有关C中为什么用模板类的原因&#xff0c;描述错误的是? ( &#xff09; A.可用来创建动态增长和减小的数据结构 B.它是类型无关的&#xff0c;因此具有很高的可复用性 C.它运行时检查数据类型&#xff0c;保证了类型安全 D.它是平台无关的&#xff0c;可移植…