备战 清华大学 上机编程考试-冲刺前50%,倒数第6天

真题训练:

T1:舞蹈团 - 排序+滑动窗口

生活在在外星球X上的小Z想要找一些小朋友组成一个舞蹈团,于是他在网上发布了信息,一共有 \(n\) 个人报名面试。面试必须按照报名的顺序依次进行。小Z可以选择在面试完若干小朋友以后,在所有已经面试过的小朋友中进行任意顺序的挑选,以组合成一个舞蹈团。虽然说是小朋友,但是外星球X上的生态环境和地球上的不太一样,这些小朋友的身高可能相差很大。小Z希望组建的这个舞蹈团要求至少有 \(m\) 个小朋友,并且这些小朋友的最高身高和最低身高之差不能超过 \(k\) 个长度单位。现在知道了这些小朋友的身高信息,问小Z至少要面试多少小朋友才能在已经面试过的小朋友中选出不少于 \(m\) 个组成舞蹈团。

链接:REKCARC-TSC-UHT/大三小学期/保研考试/推研题目/THUPUB2017/statements/tuoj/day1/interview.md at master · PKUanonym/REKCARC-TSC-UHT (github.com)

解:

(在“轩轩”前辈的代码上,做了一些优化)

#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
#include<stdlib.h>
#include<string>using namespace std;//定义学生类
struct student
{int id;int h;
};//重载小于符号:
bool operator <(const student& a,const student& b)
{return a.h < b.h;
}//利用 插入排序 进行改进:
//这一次不再调用sort(vec.begin()+1,vec.begin()+m+i+1)
//但是,要实现相同的功能,只是内部实现必须更加高效
//前m-1个调用sort
//后面就调用mySort
void mySort(vector<student> &vec,int m,int i)
{//vec[1] - vec[m+i-1]都是有序的,只要把vec[m+i]放到合适的位置即可:student tmp = vec[m+i];for(int u = m+i-1 ; u>=1 ; u--){if(vec[u] < tmp){//把tmp放到u+1的位置,把u+1 - m+i-1后移1个位置for(int w = m+i-1; w>=u+1 ;w--){vec[w+1] = vec[w];}vec[u+1] = tmp;break;}else if(u == 1 && vec[u].h > tmp.h){//tmp需要放到第一个位置for(int w = m+i-1 ; w>=1;w--){vec[w+1] = vec[w];}vec[1] = tmp;break;}}
}int main()
{//处理输入:int n,m,k;cin>>n>>m>>k;//输入n个小朋友的身高vector<student> vec(n+1);for(int i = 1; i<=n;i++){cin>>vec[i].h;vec[i].id = i; //id都是从1开始的}//从1到n一次遍历,选出 m个朋友, 最高 - 最矮  <= k//输出面试完 atleast 个人://其实这个问题挺难的,因为,你要 选择合适的 m个人int atleast = 0;    //至少需要的面试的人数//--大概按照“轩轩”前辈的思路进行求解,但是有所改进sort(vec.begin()+1,vec.begin()+m);for(int i = 0 ;i<= n-m;i++){mySort(vec, m,i) ; //sort(vec.begin()+1,vec.begin()+m+i+1); //sort是左闭右开的for(int j = 1;j<=i+1 ; j++)          //滑动窗口{//检查是否满足 最大 最小的 差值 <=k的条件:if(vec[j+m-1].h - vec[j].h <=k){//搞定:cout<<m+i<<endl;return 0;}}}cout<<"impossible"<<endl;//真的很像一个dp动态规划://那么,怎么设置初始状态 和 转移方程呢?//状态dp[i] : 至少面试了i人,才能获取到的满足 max - min <= k 的最大人数//初始状态dp[1] = 1//转移方程://思路二: 每次加入一个人,都进行一次sort排序://又有一些滑动窗口的感觉//我先写一个朴素的方法://反正只是需要每次检查第i个,只要知道加入了第i个//是否满足即可://这种朴素的方法,存在可以改进的地方,是否可以将前一次的信息利用起来//其中一种做法是,直接暴力://从头m个,m+1个,m+2个,一直到m+(n-m)个,//每次进行sort排序,从头开始 检查, 窗口大小为m的是否满足//虽然“轩轩的代码挺不错的”,但是//我觉得有一点可以改进,就是哪个for(int y = j,y<j+m;y++)找最大id这个循环//是不需要的,因为随着i的逐渐增大,tall一定是(m-1),m,m+1//“否则,我干嘛还要加入后一个元素”——请仔细思考这句话//还有一个可以改进的点,其实不必要每次全部sort,写一个 插入排序或许更优//毕竟前面都是排序好的    return 0 ;
}

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

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

相关文章

手搓文件格式转换

最初目标&#xff1a; 自己搞一个免费的pdf文件转换 根据现有的开源jar 项目实现思路&#xff1a; 1. 项目原因a. 我想转换文件b. wps 文件转换 2. 最初的状态a. jar运行的b. main,输入文件路径c. 一定的编程能力的人才能得 3. 开始构思项目a. 网页版本b. 想着大家一起用 4. …

MyBatis二级缓存开启条件

MyBatis缓存为俩层体系。分为一级缓存和二级缓存。 一级缓存&#xff1a; 一级缓存默认开启&#xff0c;一级缓存的作用域是SqlSession级别的&#xff0c;这意味着当你更换SqlSession之后就不能再利用原来的SqlSession的一级缓存了。不同的SqlSession之间的一级缓存是隔离的。…

Django更改超级用户密码

Django更改超级用户密码 1、打开shell 在工程文件目录下敲入&#xff1a; python manage.py shell再在python交互界面输入&#xff1a; from django.contrib.auth.models import User user User.objects.get(username root) user.set_password(123456) user.save()其中ro…

adb 删除文件或文件夹

1. 通过adb shell 进入终端shell 2. cd sdcard/data //进入系统内指定文件夹 3. ls //列表显示当前文件夹内容 4. remount //挂载 5. rm -r xxx // 删除名字为xxx的文件夹及其里面的所有文件 6. rm xxx // 删除文件xxx 7. rm dir xxx // 删除xxx的文件夹 8. cat 123…

递归【2】(组合回溯(生成括号)、子集回溯(背包问题))

括号对 &#xff08;组合型回溯&#xff09; 分解成子问题&#xff0c;每一次添加括号分两步&#xff1a; if左括号小于n&#xff0c;加左括号&#xff0c;然后k(index1), if左括号大于有括号&#xff0c;加右括号&#xff0c;k(index1),然后收尾括号单独考虑&#xff0c;到…

二叉树----7-3 列出叶结点

对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶结点。 输入格式: 首先第一行给出一个正整数 n(≤10),为树中结点总数。树中的结点从 0 到 n−1 编号。随后 n 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 "…

【Ardiuno】实验使用ESP32连接Wifi(图文)

ESP32最为精华和有特色的地方当然是wifi连接&#xff0c;这里我们就写程序实验一下适使用ESP32主板连接wifi&#xff0c;为了简化实验我们这里只做了连接部分&#xff0c;其他实验在后续再继续。 由于本实验只要在串口监视器中查看结果状态即可&#xff0c;因此电路板上无需连…

Transformer模型结构解析:编码器与完整模型的应用场景

Transformer模型结构解析&#xff1a;编码器与完整模型的应用场景 Transformer模型自2017年由Google的研究者提出以来&#xff0c;已经在自然语言处理&#xff08;NLP&#xff09;领域产生了革命性的影响。Transformer模型的核心特点是其使用了自注意力&#xff08;Self-Atten…

ToxVidLLM:一个用于检测有害视频的多模态多任务框架

在一个社交媒体平台赋予用户成为内容创作者力量的时代&#xff0c;数字领域见证了前所未有的信息传播激增&#xff0c;到2023年&#xff0c;近82%的互联网流量是视频内容。因此&#xff0c;像抖音和YouTub这样的平台已经成为主要的信息来源。一个显著的统计数据凸显了这些平台的…

【java并发】知识框架

文章目录 一. 并发基础1.多线程基础2. 线程安全性3. 同步机制4. 线程间通信5. 并发集合 二. java 进阶1. 并发工具类2. 原子操作和 CAS3. 线程池 三、并发架构1. 并发设计模式2. 性能调优与高级主题3. 并发框架与实践4. 线程分析 一. 并发基础 1.多线程基础 学习 Java 中如何…

线段树模板

0、基本模板 0.1单点修改 class Node:def __init__(self,l,r,s):self.llself.rrself.ss def pushup(u,l,r):u.s l.s r.s def build(u,l,r):if lr:tr[u]Node(l,r,a[l])else:mid lr>>1tr[u]Node(l,r,0)build(u<<1,l,mid); build(u<<1|1,mid1,r)pushup(tr[…

发布处理方案 —— 前台项目构建与发布处理

目录 01: 前言 02: 域名、DNS、公网IP、服务器、Nginx之间的关系 03: 阿里云服务器购买指南 04: 服务器连接方式 05: Nginx 环境处理 06: 项目发布 07: 小结 01: 前言 现在我们来看一下项目的打包和发布功能&#xff0c;这两个功能也就是我们本篇文章的主要功能。 对…

大泽动力30KW静音汽油发电机

安全操作&#xff1a; 在使用前&#xff0c;确保发电机放置在通风良好、干燥、无易燃物品的地方。 避免在发电机运行时触摸其热表面或运转部件&#xff0c;以免烫伤或受伤。 遵循发电机的启动和停机程序&#xff0c;不要随意操作。 燃油管理&#xff1a; 使用高质量的汽油&…

关于Redis的持久化

Redis与MySQL的不同 MySQL的事务&#xff0c;有四个核心特性&#xff1a;原子性、一致性、持久性和隔离性 把数据存储在磁盘上就是持久化的&#xff0c;把数据存储在内存上则是不持久化的。区别在于重启进程/主机后&#xff0c;数据是否存在。 而Redis是一个内存数据库&#x…

Avalonia TreeView 示例代码

参考文档 https://docs.avaloniaui.net/docs/reference/controls/detailed-reference/treeview-1 新建一个avalonia MVVM工程AvaloniaAppTreeview&#xff0c;删掉MainWindow.xaml里的<TextBlock Text"{Binding Greeting}" HorizontalAlignment"Center"…

数据可视化:Matplotlib 与 Seaborn

数据可视化是数据分析中至关重要的一部分&#xff0c;它能帮助我们直观地理解数据的分布、趋势和关系。Python 中&#xff0c;Matplotlib 和 Seaborn 是两个最常用的可视化库。本文将详细介绍如何使用 Matplotlib 和 Seaborn 进行数据可视化&#xff0c;包括基本图形、图形定制…

Spring boot项目

一. Spring boot 安装地址 https://start.spring.io/ 二. 选择 三. idea配置 找到下载的文件解压缩&#xff0c;打开pom.xml(选择从idea打开)

ROS基础学习-ROS通信机制进阶

ROS通信机制进阶 目录 0.简介1.常用API1.1 节点初始化函数1.1.1 C++1.1.2 Python1.2 话题与服务相关函数1.2.1 对象获取相关1.2.1.1 C++1.2.1.2 Python1.2.2 订阅对象相关1.2.2.1 C++1.2.2.2 Python1.2.3 服务对象相关函数1.2.3.1 C++1.2.3.2 Python1.2.4 客户端对象相关1.2.4.…

推荐一个网安资源学习网站

渗透师 网络安全从业者安全导航 工具 wireshark metasploit namp sqlmap 国外安全论坛 hack forums Форум АНТИЧАТ Tuts 4 You 安全帮网址导航 | 让网络安全资源更有序&#xff01; src挖掘

常见机器学习概念

信息熵 信息熵&#xff08;information entropy&#xff09;是信息论的基本概念。描述信息源各可能事件发生的不确定性。20世纪40年代&#xff0c;香农&#xff08;C.E.Shannon&#xff09;借鉴了热力学的概念&#xff0c;把信息中排除了冗余后的平均信息量称为“信息熵”&…