IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PAT (Advanced Level) 1153——排序条件+前导零大坑 -> 正文阅读

[C++知识库]PAT (Advanced Level) 1153——排序条件+前导零大坑

题目传送门

本来想测试一下自己做题速度
但是一着急反而在读题上面犯了错误,磨磨唧唧40多分钟

题目的条件很细很繁琐

  • 查询1:按照成绩降序输出某level的考生信息,如果成绩相同则按照准考证号字母序升序排列
  • 查询2:根据给出的site,统计考生总成绩和人数,没啥坑
  • 查询3:根据给出的date,按照site统计考生人数信息,并按照人数降序输出;如果人数相同,则按照site升序输出
  • 查询3给出的Term可能出现前导零,输出时候需要原样进行输出,天坑!!!
  • 无结果输出NA

给贴心的前辈引流了

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;

const int N = 10010;
int n, m;
struct node {
	char level;
	int site;
	int date;
	int number;
	int score;
	char ID[20];
};
node stu[N];

int cmp1(const node &A,const node &B) {
	return (A.score > B.score) || (A.score == B.score && strcmp(A.ID, B.ID) < 0);
}

int cmp2(const node& A, const node& B) {
	return (A.score > B.score) || (A.score == B.score && A.site < B.site);
}

int changeToInt(int tou, int wei,char *s) {
	int ans = 0;
	for (int j = tou; j <= wei; ++j)
		ans = ans * 10 + s[j] - '0';
	return ans;
}

int site_cnt[1010];
node a[1010];

void find_date(int x) {
	bool flag = 0;
	for (int i = 0; i <= 999; ++i) site_cnt[i] = 0;
	for (int i = 1; i <= n; ++i) {
		if (stu[i].date == x) {
			++site_cnt[stu[i].site];
			flag = 1;
		}
	}
	if (!flag) {
		printf("NA\n");
		return;
	}
	int cnt = 0;
	for (int i = 101; i <= 999; ++i) {
		if (site_cnt[i] > 0) {
			++cnt;
			a[cnt].site = i;
			a[cnt].score = site_cnt[i];
		}
	}
	sort(a + 1, a + 1 + cnt, cmp2);
	for (int i = 1; i <= cnt; ++i) 
		printf("%d %d\n", a[i].site, a[i].score);
}

int main()
{
	char s[20];
	int x;
	int opt;
	scanf("%d%d",&n,&m);
	for (int i = 1; i <= n; ++i) {
		scanf("%s %d", &stu[i].ID,&stu[i].score);
		stu[i].level = stu[i].ID[0];
		stu[i].site = changeToInt(1, 3, stu[i].ID); 
		stu[i].date = changeToInt(4, 9, stu[i].ID);
		stu[i].number = changeToInt(10, 12, stu[i].ID);
	}

	sort(stu + 1, stu + 1 + n, cmp1);   //score

	for (int i = 1; i <= m; ++i) {
		scanf("%d", &opt);
		if (opt == 1) {
			scanf("%s",&s);
			printf("Case %d: %d %c\n",i,opt,s[0]);
			bool flag = 0;
			for (int j = 1; j <= n; ++j) {
				if (stu[j].level == s[0]) {
					printf("%s %d\n", stu[j].ID, stu[j].score);
					flag = 1;
				}
			}
			if (!flag) printf("NA\n");
		}
		else if (opt == 2) {
			scanf("%d", &x);
			printf("Case %d: %d %d\n", i, opt, x);
			int ans = 0;
			int cnt = 0;
			bool flag = 0;
			for (int j = 1; j <= n; ++j)
				if (stu[j].site == x) {
					ans += stu[j].score;
					++cnt;
					flag = 1;
				}
			if (flag) printf("%d %d\n",cnt,ans);
			else printf("NA\n");
		}
		else if (opt == 3) {
			scanf("%d", &x);
			printf("Case %d: %d %06d\n", i, opt, x);
			find_date(x);
		}
	}
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:22:53  更:2022-04-18 17:23:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:27:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码