选举学生会(洛谷P1271题题解,Java/C++语言描述)
题目要求
题目链接
分析
题很简单,但对sort()的效率有要求。
开始用Java写了一版:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));reader.readLine();String[] read = reader.readLine().split("\\s+");reader.close();int[] nums = new int[read.length];for (int i = 0; i < nums.length; i++) {nums[i] = Integer.parseInt(read[i]);}Arrays.sort(nums);StringBuilder result = new StringBuilder();for (int i : nums) {result.append(i).append(" ");}System.out.println(result.toString().trim());}
}
终究还是T了:
看了看,差的也不少,所以换C++,分析见此:《一文道破快速排序从理解到优化》。
AC代码(C++)
#include<iostream>
using namespace std;
int a, num, array[2000001];/*** 应用二分思想* @param left 左索引* @param right 右索引*/
void quickSort(int left, int right) {int mid = array[(left+right)/2];//中间数int i = left, j = right;do {while (array[i] < mid) {i++;//查找左半部分比中间数大的数}while (array[j] > mid) {j--;//查找右半部分比中间数小的数}if (i <= j) {swap(array[i], array[j]);//交换i++;j--;}} while (i <= j);if (left < j) {quickSort(left, j);//递归搜索左半部分}if (i < right) {quickSort(i, right);//递归搜索右半部分}
}int main() {cin >> a >> num;for (int i = 1; i <= num; i++) {cin >> array[i];}quickSort(1, num);for (int i = 1; i <= num; i++) {cout << array[i] << " ";}
}
选举学生会(洛谷P1271题题解,Java/C++语言描述)相关推荐
- 修改数组(洛谷P7285题题解,C++语言描述)
题目要求 P7285题目链接 分析 这题虽然是红题,但是因为很有趣且是 Special Judge ,所以写篇题解. 乍一看,这题好麻烦啊,要综合考虑xxx和yyy,达到x−yx-yx−y的最优化. ...
- Emacs(洛谷P6866题题解,C++语言描述)
题目要求 题目链接 分析 这题是一道入门难度的题,但很有意思,所以分享一下. 不知道会不会有人考虑到什么连通区域.DFS之类的奇怪内容,抑或是苦于不知道怎么去循环搜索. 其实很简单,开一个大数组,把边 ...
- 斐波那契数列升级版(洛谷P2626题题解,C++语言描述)
题目要求 题目链接 分析 首先是求斐波那契数列,这东西我就不说了,能看到这篇题解的你肯定会. 为什么要用数组呢?为了记忆化,防止重复算. 当然,由于本题是单查询,所以不必记忆化,但记忆化对多查询真的会 ...
- 查找(洛谷P2249题题解,C++语言描述)
题目要求 题目链接 分析 可以用内置函数直接解:lower_bound(a.begin(), a.end(), i) 如果自己写二分查找也行,注意是第一个出现的,所以不注意的话求的可不是第一个呀! 另 ...
- 坏掉的项链(洛谷P1203题题解,C++语言描述)
题目要求 题目链接 分析 链子是循环的,随便选一点断开不合适,所以把它作为一个线性的字符串其实不好. 处理方法是将字符串扩增一倍,即necklace += necklace; 这样的话,我们从初始出发 ...
- 魔法少女小Scarlet(洛谷P4924题题解,C++语言描述)
题目要求 题目链接 分析 数据量不大,直接开模拟即可. 此题恶心的地方就是题意理解与下标模拟. 首先,按要求初始化一个二维数组并填充[1,n2][1,n^{2}][1,n2]. 然后,分别进行每一次旋 ...
- 数字三角形(洛谷P1216题题解,C++语言描述)
题目要求 题目链接 分析 应该用DP来解,对于题给三角形,我们可以这么看: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 从上到下坐标x递增,从左到右坐标y递增. 我们要求的是全局最优解 ...
- 线段覆盖(洛谷P1803题题解,C++语言描述)
题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...
- 天然气井(洛谷P1708题题解,C++语言描述)
题目要求 P1708题目链接 分析 这题挺有意思的,看起来是一个复杂的优化问题,其实很水. 主要是题给了很多限定条件,比如中转站和天然气井的个数相等,最后还是一一对应的,求得距离只是走横向或纵向的-- ...
- 数列求和(洛谷P5745题题解,C++语言描述)
题目要求 题目链接 分析 思路参考自大佬的博客,此佬介绍了诸多解法,我学习了其中的O(N)O(N)O(N)解法: 维护一个队列,让数组中的数依次入队,并记录其的元素和,若大于m,则让对首出列,更新答案 ...
最新文章
- yml eureka defaultzone 只生效第一个_SpringCloud基础教程(三)-Eureka进阶
- qt 试用 (3)配置编译源代码及调试
- 看完就入门系列!吞吐量、消息持久化、负载均衡和持久化、伸缩性…… 你真的了解 Kafka 了吗?...
- 【数据格式】Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据
- HEVC---CompressCU 函数解析
- 【C#】SQL数据库助手类2.0(自用)
- Java 13新特性:switch表达式,文本块
- darknet 的python接口使用
- Xshell免费版安装 常用连接linux工具
- GEE、USGS、地理空间数据云上下载武汉地区的影像数据
- 时间序列研(part14)--习题
- 商业方向的大数据专业_大数据行业5个职位方向
- emacs python_将Emacs打造成强大的Python代码编辑工具
- ios旧版本app网站_你的iPhone还需要降级吗?深度分析:苹果为什么不开放iOS降级!...
- 某工厂配电线路及变电所设计
- flatten(扁平化)数组
- 如何实现简单粗暴靠谱的直播抓娃娃方案
- Python画星星和星空
- 柏林初创Meditopia​靠一个冥想App获1500万美元融资
- javaweb的lib文件夹
热门文章
- 移动端与PC端页面布局区别
- codeforces 540D Bad Luck Island (概率DP)
- DNS A记录和CNAME记录
- vue中使用导出表格功能
- 坑爹的水题之“元芳你怎么看”
- 下面哪个进制能表述 13*16=244是正确的?)[中国台湾某计算机硬件公司V2010年5月面试题]...
- The type Resource is not accessible due to restriction on required library
- linux内核端口绑定,linux 多网卡bonding 绑定 端口聚合
- asp连接oracle6,asp下用OracleInProcServer完成对Oracle的连接和操作-ASP教程,数据库相关...
- activiti 工作流_分享:springboot中关于工作流activiti的搭建