【C/C++】PAT A1025 Ranking/算法笔记
题目意思大概是输入一堆人的学号,成绩,给出学号,总排名,考场号,考场内排名。
这是我第一次写的:
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 30005;
struct Student
{
int registnum[13];
int score;
int rank_in_group;
int group;
};
Student stu[maxn]; //创建数组用于存储
bool cmp(Student a, Student b)
{
if(a.score != b.score) return a.score > b.score;
else return a.registnum < b.registnum;
}
int main()
{
//输入
int n, k, num=0;
scanf("%d", &n);
//fflush(stdin);
for (int i = 1; i <= n; i++) //考场号
{
scanf("%d", &k);
///fflush(stdin);
for (int j = 0; j < k; j++)
{
scanf("%d%d", &stu[num].registnum, &stu[num].score);
stu[num].group = i;
num++;
}
//组内排名
sort(stu + num - k, stu + num, cmp);
//组内排号
stu[num - k].rank_in_group = 1;
for (int j = 1; j < k; j++)
{
if (stu[num - k + j].score != stu[num - k + j - 1].score)
{
stu[num - k + j].rank_in_group = stu[num - k + j - 1].rank_in_group + 1;
}
else
{
stu[num - k + j].rank_in_group = stu[num - k + j - 1].rank_in_group;
}
}
}
printf("%d\n", num); //总人数
sort(stu, stu + num, cmp);
int r = 1;
for (int i = 0; i < num; i++)
{
if (i>0 && stu[i].score != stu[i-1].score) //避免出现数组访问问题
{
r = i + 1;
}
printf("%d %d %d %d\n", stu[i].registnum, r, stu[i].group, stu[i].rank_in_group);
}
system("pause");
}
但是有问题,那个学号总是输入不对。后来一想是因为13位数字的数组,输入的话得一个一个输入(输入到每个位置)。
但是直接int a[13]然后输入scanf("%d",&a)这样
肯定只能输入到一个里面
比如这段测试代码:
(剩余的奇怪数字是因为没有清内存)
然而13位的学号,对于单个是int型的数组来说,又超内存了
int是一种数据类型,在编程语言C中,是用于定义整数类型变量的标识符。在一般的电脑中,int占用4字节,32比特,数据范围为-21474836482147483647[-2^312^31-1]
然后就把改成了输入字符串数组,因为用scanf("%s",a)的话,他就会自己放进去了
【C/C++】PAT A1025 Ranking/算法笔记的更多相关文章
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- Bayesian Personalized Ranking 算法解析及Python实现
1. Learning to Rank 1.1 什么是排序算法 为什么google搜索 ”idiot“ 后,会出现特朗普的照片? “我们已经爬取和存储了数十亿的网页拷贝在我们相应的索引位置.因此,你输 ...
- 算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ...
- 算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int ...
- 算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...
- 算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int&g ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...
- 算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...
随机推荐
- Android Thermal HAL 降龙十八掌
基本概念 参阅下面两篇文章,就可以大概了解一些概念的内容了 https://source.android.com/devices/architecture/hidl/thermal-mitigatio ...
- scrapy的安装,scrapy创建项目
简要: scrapy的安装 # 1)pip install scrapy -i https://pypi.douban.com/simple(国内源) 一步到位 # 2) 报错1: building ...
- liunx基础知识点2:文件操作命令、系统资源查询、权限赋予命令、安装命令、解压命令
- 第三次SQLServer试验解答
1 --讲解函数: SUM.AVG.COUNT.MAX.MIN .GETDATE()等 2 --查询BookInfo表中购进价格最高的图书的信息 3 --查询BookInfo表中书的平均购进价格 4 ...
- [cf1326F]Wise Men
对答案序列求一个高维后缀和,再通过差分将其解出,后者复杂度为$o(n2^{n})$ 对于求后缀和后的结果,即01序列仅要求1处有边(不要求0处没有边),那么也即要求将原图划分为若干条长度给定且没有公共 ...
- [luogu3733]八纵八横
根据$[WC2011]XOR$的思路,每次暴力重构线性基,令$l'=\frac{l^{2}}{w}$,则有一个$nql'$的做法(这里线性基位数很多,所以要用bitset) 由于初始连通,因此每一个环 ...
- Docker 之 Dockerfile 常用语法与实战
1. 概述 老话说的好:超越别人,不如超越自我,每天比昨天的自己更强就好. 言归正传,之前聊了 Docker 的相关知识,今天来聊聊如何编辑 Dockerfile 脚本,来创建我们自己的镜像. 2. ...
- Hi3516开发笔记(五):通过HiTools使用网口将uboot、kernel、roofts和userdata按照分区表烧写镜像
前言 前面生成了uboot,kernel,sample,userdata(我们实际修改了ip的),rootfs,现在需要烧写进入核心板. 使用网口烧写镜像(海思烧写必须占用调试串口) 步骤一: ...
- pm2 重启策略(restart strategies)
使用 PM2 启动应用程序 时,应用程序会在自动退出.事件循环为空 (node.js) 或应用程序崩溃时自动重新启动. 但您也可以配置额外的重启策略,例如: 使用定时任务重新启动应用程序 文件更改后重 ...
- Codeforces Round #681 (Div. 1) Solution
A. Extreme Subtraction 把这个数组差分一下,发现操作一的作用是把 \(d_1\) 的大小分给 \(d_i\),而操作二的作用是把 \(d_i\) 减去任意值,目标是把 \(d\) ...