蓝桥杯C++大学B组一个月冲刺记录2024/3/12

蓝桥杯C++大学B组一个月冲刺记录2024/3/12

规则:每日三题

时间过得好快…

1.挤牛奶

每天早上 5点,三名农夫去牛场给奶牛们挤奶。
现在从 5点开始按秒计时,第一名农夫在第 300秒开始给牛挤奶,并在第 100 秒停止挤奶。
第二名农夫在第 700秒开始给牛挤奶,并在第 1200秒停止挤奶。
第三名农夫在第 150 秒开始给牛挤奶,并在第 2100秒停止挤奶。
从开始挤奶到挤奶完全结束,这一期间,至少存在一名农夫正在挤奶的连续时间段的长度最长为 900秒(第 300秒至第 1200秒),完全没有任何农夫在挤奶的连续时间段的长度最长为 300秒(第 1200 秒至第 1500秒)。
现在给你 N名农夫挤 N头奶牛的工作时间表,请你求出:
至少存在一名农夫正在挤奶的连续时间段的最长长度。没有任何农夫在挤奶的连续时间段的最长长度。

区间合并:计算一下合并完区间的长度,以及下一个不在该区间的区间左端点到当前区间的右端点的长度就可以了

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;typedef pair<int,int>PII;vector<PII>q;int ans,len;
int l,r,n;bool cmp(PII a,PII b){return a.first < b.first;
}int main(){cin >> n;for(int i = 1;i <= n; ++i){cin >> l >> r;q.push_back({l,r});}sort(q.begin(),q.end(),cmp);for(int i = 0;i < n;++i){if(i == 0){l = q[i].first,r = q[i].second;ans = r - l;}else{if(q[i].first <= r){r = max(q[i].second , r);ans = max(ans , r - l);}else{len = max(q[i].first - r , len);l = q[i].first,r = q[i].second;ans = max(ans , r - l);}}}cout << ans << ' ' << len << endl;return 0;}

2.区间合并

给定 n个区间 [li,ri],要求合并所有有交集的区间。
注意如果在端点处相交,也算有交集。
输出合并完成后的区间个数。
例如:[1,3]和 [2,6]可以合并为一个区间 [1,6]。

区间合并: 模板题,注意相交区间的定义是在端点处相交还是相邻
(另外:个人认为非抽象的区间合并可以使用差分数组来记录状态的做。因为常规区间合并的做法包含了sort时间复杂度O(nlogn) , 差分数组的做法能够降到O(n))

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;typedef pair<int,int>PII;vector<PII>q;int n,ans = 0;bool cmp(PII a,PII b){return a.first < b.first;
}int main(){cin >> n;for(int i = 0;i < n;++i){PII t;cin >> t.first >> t.second;q.push_back(t);}sort(q.begin(),q.end(),cmp);int l = 0,r = 0;for(int i = 0;i < n;++i){if(i == 0) l = q[i].first, r = q[i].second,ans = 1;else{if(q[i].first <= r) r = max(q[i].second , r);else{ans ++;l = q[i].first,r = q[i].second;}}}cout << ans << endl;return 0;
}

3.校门外的树

某校大门外长度为 L的马路上有一排树,每两棵相邻的树之间的间隔都是 1米。
我们可以把马路看成一个数轴,马路的一端在数轴 0的位置,另一端在 L的位置;数轴上的每个整数点,即 0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点和终止点表示。
已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。
现在要把这些区域中的树(包括区域端点处的两棵树)移走。
你的任务是计算将这些树都移走后,马路上还有多少棵树。

区间合并: 每次记录一下区间合并完的长度即可

#include<iostream>
#include<algorithm>
#include<vector>using namespace std;typedef pair<int,int>PII;
vector<PII>q;int len,ans = 0;
int n,l,r;
int L;bool cmp(PII a,PII b){return a.first < b.first;
}int main(){cin >> L >> n;for(int i = 1;i<=n;++i){cin >> l >> r;q.push_back({l,r});}sort(q.begin(),q.end(),cmp);for(int i = 0;i < n; ++i){if(i == 0){l = q[i].first,r = q[i].second,len = r - l;}else{if(q[i].first <= r){r = max(q[i].second,r);len = max(r - l , len);}else{ans += len + 1;l = q[i].first,r = q[i].second;len = r - l;}}}ans += len + 1;cout << L - ans + 1 << endl;return 0;
}

4.管道

有一根长度为 len 的横向的管道,该管道按照单位长度分为 len段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。
一开始管道是空的,位于 Li的阀门会在 Si时刻打开,并不断让水流入管道。
对于位于 Li的阀门,它流入的水在 Ti(Ti≥Si)时刻会使得从第 Li−(Ti−Si)段到第 Li+(Ti−Si) 段的传感器检测到水流。
求管道中每一段中间的传感器都检测到有水流的最早时间。

区间合并+二分: 这个题关键是想到答案具有二分关系,check函数使用区间合并来判断。

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;typedef pair<int,int>PII;
typedef long long LL;
vector<PII>q;int n,len;
LL l,r;bool cmp(PII a, PII b){return a.first < b.first;
}bool check(int k){ vector<PII>temp;for(int i = 0;i < n;++i){if(q[i].second <= k){int ll = max(1,q[i].first - (k - q[i].second));int rr = min((LL)len,(LL)q[i].first + (k - q[i].second));temp.push_back({ll,rr});}}sort(temp.begin(),temp.end(),cmp);int l = 0,r = 0;for(int i = 0;i < temp.size();++i){ if(i == 0)  l = temp[i].first,r = temp[i].second;    else{if(temp[i].first <= r + 1) r = max(r,temp[i].second);     else l = temp[i].first,r = temp[i].second;  }}return l == 1&&r == len;}int main(){cin >> n >> len;for(int i = 1;i <= n;++i){cin >> l >> r;q.push_back({l,r});}l = 0,r = 2e9;while(l < r){int mid = (LL)(l + r)/2;if(check(mid) == false) l = mid + 1;else r = mid;}cout << l << endl;return 0;
}

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

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

相关文章

自动化测试过程中的手机验证码处理!

手机验证码登录很普遍了&#xff0c;那么在自动化测试的时候需要登录&#xff0c;登录不了就意味着很多自动化就没法执行下去了。 到底该怎么处理呢&#xff1f;其实并不难&#xff0c;我们先看下验证码的业务逻辑&#xff0c;在我们“点击获取验证码”按钮的时候&#xff0c;…

一学就懂:安装OLED透明屏拼接屏需要注意什么?

安装OLED透明屏拼接屏时&#xff0c;需要注意以下几个方面&#xff1a; 一、前期准备 测量和规划&#xff1a;对安装区域进行详细测量&#xff0c;确保安装区域的尺寸和结构符合OLED透明屏的要求。同时&#xff0c;规划好拼接屏的数量、位置以及布线和固定方案。 环境评估&am…

Weblogic 常规渗透测试环境

测试环境 本环境模拟了一个真实的weblogic环境&#xff0c;其后台存在一个弱口令&#xff0c;并且前台存在任意文件读取漏洞。分别通过这两种漏洞&#xff0c;模拟对weblogic场景的渗透。 Weblogic版本&#xff1a;10.3.6(11g) Java版本&#xff1a;1.6 弱口令 环境启动后…

(golang)切片何时会创建新切片或影响原切片

什么时候切片操作会影响原切片 // 1.切片后没有触发slice的扩容机制时 什么时候对切片操作会创建新切片不影响原切片 // 2.对切片头元素进行截取的时候 // 3.当使用append时&#xff0c;len > cap则会触发扩容机制 前置&#xff1a; //slice结构体 type SliceHeader struct…

指针篇章-(4)+qsort函数的模拟

学习目录 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…

​知识图谱:基于嵌入的模型(TransE 、TransH、TransR和TransD)

(一)TransE: Translating Embeddings for Modeling Multi-relational Data. Antoine Bordes, Nicolas Usunier, Alberto Garcia-Duran, Jason Weston, Oksana Yakhnenko. NIPS 2013. 论文地址:http://papers.nips.cc/paper/5071-translating-embeddings-for-modeling-multi-…

动态规划在算法中的实践

【摘要】为了提高算法的效率&#xff0c;动态规划是在算法实践中经常使用的一个思想&#xff0c;有些问题会非常适合使用动态规划的思想来设计算法。本文将借助LeetCode上的一些例子&#xff0c;来讲解和说明动态规划在算法案例中的一些实践。 【关键词】 动态规划 LeetCode 算…

【Vue3】defineExpose 实践

【Vue3】defineExpose 实践 defineExpose 是 Vue 3 的 <script setup> 语法糖中提供的一个函数&#xff0c;用于显式地暴露组件的属性、方法或其他响应式状态给其父组件或外部使用。这是在使用 <script setup> 语法时&#xff0c;控制组件公开哪些内部状态和方法的…

[论文笔记]跨语言摘要最新综述:典型挑战及解决方案

https://arxiv.org/abs/2203.12515 跨语言摘要是指为给定的一种语言(例如中文)的文档生成另一种语言(例如英文)的摘要。 图1:四个端到端框架的概述。XLS:跨语言摘要;MT:机器翻译;MS:单语摘要。虚线箭头表示监督信号。无框彩色方块表示相应任务的输入或输出…

【华为OD机试】智能成绩表【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗? 输入描述 第 1 行输入两个整数,学生人数 n 和科目数量 m,0<n<100,0<m < 10 第 2 行输入 …

Rust 语言中的 into() 方法

在 Rust 中&#xff0c;into() 方法通常用于将一个类型的值转换为另一个类型&#xff0c;这通常涉及到资源的所有权转移。into() 方法通常定义在实现了 Into<T> trait 的类型上&#xff0c;该 trait 允许一个类型被“转换”为另一个类型。 into() 方法的一个常见用途是在…

如果reactive绑定的数据没有双向绑定

只能用于对象类型 (array map set weakmap weakset Object这样的集合类型)。 不能持有如 string、number 或 boolean 这样的原始类型。 不能替换整个对象 对解构操作不友好&#xff1a;当我们将响应式对象的原始类型属性解构为本地变量时&#xff0c;或者将该属性传递给函数时…

Deep Learning for Detecting Robotic Grasps

链接&#xff1a;1301.3592.pdf (arxiv.org) 这个用于从单一RGB-D视图进行机器人抓取检测的算法包括以下步骤&#xff1a; 图像获取&#xff1a; 机器人获取包含待抓取对象的场景的RGB-D图像。 抓取评分&#xff1a; 使用小型深度网络对RGB-D图像中的潜在抓取进行评分。抓取以在…

如何才能做一名渗透测试人员?

学习实践&#xff0c;目前只有这路子&#xff0c;自学9月&#xff0c;成功入圈。下面说一下自己的学习路径&#xff0c;都是摸爬滚打&#xff0c;交了N份钱才学会的。 切记一定要先了解整个渗透测试的流程&#xff0c;记住整个流程口诀&#xff1a;信息收集&打点&#xff…

Linux:进程

进程 知识铺垫冯诺依曼体系结构操作系统&#xff08;OS&#xff09; 进程概念进程的查看ps 命令获取进程 pid文件内查看进程终止进程的方式kill命令快捷键 进程的创建 forkfork 返回值问题 进程状态运行状态 &#xff1a;R休眠状态&#xff1a;S &#xff08;可中断&#xff09…

Python实用工具:三维坐标点的键值对数组的值替换功能

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 代码: # 定义数据列表 data [{x: 9000.00, y: 0.00, z: 28209.83},{x: 8950.70, y: 940.76, z: 28209.83},{x: 8803.33, y: 1871.21, z: 28209.83},{x: 8559.51, y: 2781.15, z: 28209.83},{x: 8221.91, y: …

Vue源码系列讲解——内置组件篇【一】(keep-alive)

目录 1. 前言 2 用法回顾 3. 实现原理 props created destroyed mounted render 4. 生命周期钩子 5. 总结 1. 前言 <keep-alive> 是 Vue 实现的一个内置组件&#xff0c;也就是说 Vue 源码不仅实现了一套组件化的机制&#xff0c;也实现了一些内置组件&#xf…

数据集生成 YOLOV5 可训练的数据目录、并且可视化

1、前言 YOLOV5 训练数据的目录结构如下&#xff1a; 如果有测试集的话&#xff0c;也按照下面目录摆放即可 注意&#xff1a;这里的图片和标签文件名要严格对应&#xff01;&#xff01;后缀除外 关于YOLOv5介绍或者yolo格式的介绍参考之前专栏&#xff0c; 2、划分数据生成…

java面试题:为什么 SQL 语句不要过多的 join?

1 考察点 面试官主要想了解面试者对于 SQL 优化的理解以及在实际工作中如何处理 SQL 语句的性能问题。要回答好这个问题&#xff0c;只需要了解 join 操作会带来哪些影响&#xff0c;而这些影响对程序产生什么样的影响就行了。这个问题就是面试官想考察我们是不是平日里善于积…

SpringMVC04、Controller 及 RestFul

4、Controller 及 RestFul 4.1、控制器Controller 控制器复杂提供访问应用程序的行为&#xff0c;通常通过接口定义或注解定义两种方法实现。控制器负责解析用户的请求并将其转换为一个模型。在Spring MVC中一个控制器类可以包含多个方法在Spring MVC中&#xff0c;对于Contr…