P1271 【深基9.例1】选举学生会

P1271 【深基9.例1】选举学生会 - 洛谷

【方法一】快速排序

使用sort(),注意数组的范围!!!

#include<bits/stdc++.h>
using namespace std;int a[2000000],n,m;int main()
{cin>>n>>m;for(int i=0;i<m;i++){cin>>a[i];}sort(a,a+m);for(int i=0;i<m;i++){cout<<a[i]<<" ";}return 0;
}

【方法二】桶排序

桶排序(Bucket Sort)是一种基于分配策略的排序算法,其工作原理是将数组分到有限数量的桶子里,然后对每个桶内的元素进行排序(可能再使用其他排序算法或是以递归方式继续使用桶排序),最后合并所有已排序的桶,从而完成整个数据集的排序。

#include<bits/stdc++.h>
using namespace std;int main()
{int n,m,p;cin>>n>>m;int a[1000]={0};        // 以候选人作为“桶”for(int i=0;i<m;i++){cin>>p;a[p]++;}for(int i=1;i<=n;i++){for(int j=0;j<a[i];j++){cout<<i<<' ';}}return 0;
}

P1923 【深基9.例4】求第 k 小的数

P1923 【深基9.例4】求第 k 小的数 - 洛谷

【方法一】快速排序,直接输出

但是无法通过所有的测试点!!!

#include<bits/stdc++.h>
using namespace std;int main()
{int n,k;cin>>n>>k;int a[5000001]={0};for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n);cout<<a[k];return 0;
}

【方法二】根据快排的思想进行二分

在原二分的基础上可以进行修改:因为每次递归都会将数组划分为三部分,而答案只会在这三部分中的一个,不需要再对其他部分进行搜索,从而达到优化时间复杂度的效果。

#include<bits/stdc++.h>
using namespace std;int x[5000005],k;void qsort(int l,int r)
{int i=l,j=r,mid=x[(l+r)/2];do{while(x[j]>mid){j--;}while(x[i]<mid){i++;}if(i<=j){swap(x[i],x[j]);i++;j--;}}while(i<=j);//快排后数组被划分为三块: l<=j<=i<=rif(k<=j){qsort(l,j);			//在左区间只需要搜左区间}else if(i<=k){qsort(i,r);			//在右区间只需要搜右区间}else 					//如果在中间区间直接输出{printf("%d",x[j+1]);exit(0);}
}int main()
{int n;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&x[i]);}qsort(0,n-1);
}

【方法三】利用 nth_element

在 STL 里有 nth_element 函数。它的用法是 nth_element(a+x,a+x+y,a+x+len)。

执行之后数组 a 下标 x 到 x+y−1 的元素都小于 a[x+y],下标 x+y+1 到 x+len−1 的元素 都大于 a[x+y],但不保证数组有序。此时 a[x+y] 就是数组区间 x 到 x+len−1 中第 y 小的数,当然也可以自己定义 cmp 函数。

#include<bits/stdc++.h>
using namespace std;int x[5000005],k;int main()
{int n;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&x[i]);}nth_element(x,x+k,x+n);printf("%d",x[k]);
}

P1781 宇宙总统

P1781 宇宙总统 - 洛谷

#include<bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;int num;string a[21];string max;cin>>max;for(int i=1;i<n;i++){cin>>a[i];if((a[i].length()>max.length()) || (a[i].length()==max.length() && a[i]>max)){max=a[i];num=i+1;}}cout<<num<<endl;cout<<max<<endl;return 0;
}

P2676 [USACO07DEC] Bookshelf B

P2676 [USACO07DEC] Bookshelf B - 洛谷

贪心算法

先选最大的数(即最高的奶牛),一定能使取的数的数目(即奶牛数)最小

#include<bits/stdc++.h>
using namespace std;int main()
{long S[200005];long N,B,sum=0;cin>>N>>B;int num=0;for(int i=0;i<N;i++){cin>>S[i];}sort(S,S+N);for(int i=N-1;i>=0;i--){sum+=S[i];num++;if(sum>=B){break;}}cout<<num;return 0;
}

P1116 车厢重组

P1116 车厢重组 - 洛谷

计算每个数字后面有几个数字比它小,再相加,就可以计算出需要的最少次数。

相对于冒泡排序

#include<bits/stdc++.h>
using namespace std;int main()
{int n;int a[10010];cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int num=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i]>a[j]){num++;}}}cout<<num;return 0;
}

P1068 [NOIP 2009 普及组] 分数线划定

P1068 [NOIP 2009 普及组] 分数线划定 - 洛谷

#include<bits/stdc++.h>
using namespace std;struct people
{int k;int s;
}per[5001];bool cmp(people a,people b)
{if(a.s!=b.s){return a.s>b.s;}else{return a.k<b.k;}
}int main()
{int n,m;cin>>n>>m;for(int i=0;i<n;i++){cin>>per[i].k>>per[i].s;}int num=m*1.5;sort(per,per+n,cmp);for(int i=num;i<n;i++){if(per[i].s==per[num-1].s){num++;}else{break;}}cout<<per[num-1].s<<" "<<num<<endl;for(int i=0;i<num;i++){cout<<per[i].k<<" "<<per[i].s<<endl;}return 0;
}

P5143 攀爬者

P5143 攀爬者 - 洛谷

#include<bits/stdc++.h>
using namespace std;struct zuobiao
{double x;double y;double z;
}dot[50001];bool cmp(zuobiao a,zuobiao b)
{return a.z<b.z;
}double solve(double x1,double x2,double y1,double y2,double z1,double z2)
{double x=pow(abs(x1-x2),2);double y=pow(abs(y1-y2),2);double z=pow(abs(z1-z2),2);double sum=pow(x+y+z,0.5);return sum;
}int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>dot[i].x>>dot[i].y>>dot[i].z;}sort(dot,dot+n,cmp);double ans=0.0;int tag=0;for(int i=1;i<n;i++){if(dot[i].z>dot[tag].z){ans+=solve(dot[tag].x,dot[i].x,dot[tag].y,dot[i].y,dot[tag].z,dot[i].z);tag=i;}else{continue;}}cout<<fixed<<setprecision(3)<<ans;return 0;
}

P1012 [NOIP 1998 提高组] 拼数

P1012 [NOIP 1998 提高组] 拼数 - 洛谷

to_string------>可以实现数字向字符串转换(虽然这题没用到)

两个字符串 a,b,如果 a+b>b+a 则 a 排在前面。 这个公式的具体意思是当 a 排在 b 前面比 b 排在 a 前面要好,因为字典序更高,所以 a 自然要排在 b 的前面。

#include<bits/stdc++.h>
using namespace std;string a[25];bool cmp(string a,string b)
{return a+b>b+a;
}int main()
{int n,m;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n,cmp);for(int i=0;i<n;i++){cout<<a[i];}return 0;
}

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

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

相关文章

【机器学习】(算法优化二)提升算法之:AdaBoost与随机梯度

文章目录一、 AdaBoost&#xff1a;自适应提升算法1、AdaBoost数学原理详解1.1、 目标函数1.2、 样本权重更新的逻辑1.3、 模型权重计算的含义1.4、 AdaBoost的核心思想2、为什么AdaBoost如此有效&#xff1f;二、 随机梯度提升算法&#xff1a;梯度优化下更精细的优化1、随机梯…

力扣 hot100 Day65

75. 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函…

12.Linux 磁盘管理

Linux : 磁盘管理 一、磁盘设备命名规则磁盘类型设备命名模式示例特点SATA/SCSI/SAS/dev/sdXsda&#xff08;第一块硬盘&#xff09; sda1&#xff08;第一块硬盘第一分区&#xff09;机械硬盘/通用接口NVMe/dev/nvmeXnYpZnvme0n1&#xff08;第一通道第一块盘&#xff09; …

《Linux服务与安全管理》| DHCP服务器安装和配置

《Linux服务与安全管理》| DHCP服务器安装和配置 目录 《Linux服务与安全管理》| DHCP服务器安装和配置 一、点击“编辑虚拟机设置”&#xff0c;配置三台虚拟机为“仅主机”模式。 二、server01开机&#xff0c;root用户登录&#xff0c;输入nmtui&#xff0c;进入图形界面…

赛博威携手Dify,助力AI在企业的场景化落地

人工智能正以前所未有的速度重塑商业世界。我们经历了从理论探索到大语言模型&#xff08;LLM&#xff09;的爆发式增长&#xff0c;如今&#xff0c;一个以“AI Agent&#xff08;智能体&#xff09;”为核心的新阶段已然来临。AI Agent代表了人工智能应用的未来形态。它不再被…

嵌入式硬件中三极管推挽电路控制与实现

我们昨天讲到了这个电路。 如果 A 电是 PWM 波,那么请问 B 点是不是 PWM 波呢?那么,当 PWM 为高时, B 点的电流是从哪里流过来的?

数据结构——查找(三、树形查找)

一、二叉排序树&#xff08;BST&#xff09;1、二叉排序树的定义构造一棵二叉排序树的目的并不是排序&#xff0c;而是提高查找、插入和删除关键字的速度二叉排序树&#xff08;也称二叉搜索树&#xff09;或者是一颗空树&#xff0c;或者是具有以下性质的二叉树1、若左子树非空…

八股——Kafka相关

文章目录1、 消息队列的作用什么&#xff1f;思&#xff1a;消息队列是什么?消息队列的定义消息队列的工作原理消息队列的作用消息队列的常见类型消息队列的简单例子2、Kafka 集群的架构是什么样子的&#xff1f;3、Kafka 消费者组和生产者组是什么&#xff1f;定义与核心作用…

墨者学院SQL手工注入漏洞测试(MySQL数据库)题目,纯手工注入教程

打开练习手工注入的靶场,发现此时为一个登录页面,我们先试着登录看看注入点在不在登录页面 使用用户:or 1=1# 密码:admin123;尝试登录,发现显示错误后直接弹回原页面,无sql报错相关语句,这里不存在sql注入点 一:判断注入点以及猜测是否有注入 此时点击这里的动态页面…

[硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义

一、锁定放大器概述锁定放大器&#xff08;Lock-in Amplifier&#xff09;是一种基于相干检测技术的高灵敏度测量仪器&#xff0c;通过将待测信号与参考信号进行同步处理&#xff0c;从强噪声中提取微弱信号并精确测量其振幅与相位。其核心优势包括&#xff1a;信噪比提升&…

下载 | Windows Server 2025官方原版ISO映像!(7月更新、标准版、数据中心版、26100.4652)

⏩ 资源A066_Windows_Server_2025系统映像&#x1f536; Windows Server 2025官方原版ISO映像&#xff0c;7月更新版已放出。提供来自微软官方每月更新的ISO原版映像&#xff0c;内部包含了标准版和数据中心版&#xff0c;可选择无GUI界面版或桌面体验版&#xff0c;满足不同部…

Go 语言模糊测试 (Fuzz Testing) 深度解析与实践

学习一个知识&#xff0c;要先了解它的来源 1. 模糊测试的诞生&#xff1a;Barton Miller 的故事 “Fuzz”一词起源于1988年&#xff0c;由威斯康星大学麦迪逊分校的Barton Miller教授及其研究生团队在一个高级操作系统课程项目中提出 。这个概念的诞生颇具戏剧性。Miller教授在…

【软考和软著】

一、&#x1f4ab; 杭州E类人才政策 在这里插入图片描述 二、人才认定标准 三、关于软考 1、什么是软考&#xff1f; 软考指的是“计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试”。计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下…

「源力觉醒 创作者计划」开源大模型重构数智文明新范式

起来轻松玩转文心大模型吧一文心大模型免费下载地址&#xff1a;https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle开源大模型的崛起与AI幻觉挑战&#xff1a;中国AI发展的双重使命 ——从技术追赶到生态引领的跨越之路一、开源大模型&#xff1a;重构数智文…

政务云数智化转型:灵雀云打造核心技术支撑能力

政务云数智化转型进行时&#xff0c;亟需体系升级政务信息化作为政府治理与服务的重要支撑&#xff0c;业务呈现出政策性强、数据敏感度高、系统复杂度高、服务连续性要求严等特点&#xff0c;对IT系统提出了极高要求&#xff1a;不仅需支撑高并发、高可用的政务应用&#xff0…

软件测试自学之路

别找了&#xff01;2025B站最全最细的软件测试教程&#xff0c;7天从零基础小白到精通软件测试&#xff0c;学完即上岗&#xff01;自学软件测试对于小白来说还是有一定的难度&#xff0c;各种专业术语的不熟悉&#xff0c;各种电脑操作的不熟悉&#xff0c;有时候要安装一个学…

备案期间老网站有什么要求

老网站的内容必须符合法律法规和互联网管理规定。这可不是开玩笑的事儿&#xff0c;相关部门对于网站内容的审核可是相当严格的。比如说&#xff0c;不能有违法犯罪、色情低俗、虚假信息等不良内容。根据互联网信息管理专家的建议&#xff0c;网站内容应该积极健康、真实准确。…

Java数组转换为逗号分隔字符串的方法

Java数组转换为逗号分隔字符串的方法 在Java中&#xff0c;将数组转换为逗号分隔的字符串有几种常用方法&#xff0c;以下是清晰可靠的实现方案&#xff1a; 方法1&#xff1a;使用Arrays.toString() 字符串处理&#xff08;通用型&#xff09; import java.util.Arrays;publi…

抗辐照DCDC与MCU在核环境监测设备中的集成应用

摘要核环境监测设备对保障核设施安全、保护环境与人员健康意义重大&#xff0c;需在复杂恶劣的核环境中稳定运行。电子设备易受核辐射影响产生单粒子效应等故障&#xff0c;选用具备抗辐照能力的DCDC与MCU芯片至关重要。本文结合实际测试数据&#xff0c;深入探讨抗辐照DCDC与M…

C语言-指针[指针数组和数组指针]

知识重复变量指针&#xff1a;变量最小的地址值&#xff08;首地址&#xff09;&#xff0c;本质是地址、指针指针变量&#xff1a;存储指针的变量&#xff0c;本质是变量&&#xff1a;取地址运算符&#xff08;取址符、取地址符&#xff09;&#xff0c;获取变量、数组等的…