PAT A1153

2023-05-16

题目:https://pintia.cn/problem-sets/994805342720868352/problems/1071785190929788928

这道题我很久才AC,主要是不知道原来它的输入可以乱来。我原先是单独用scanf接收flag,然后再分三种情况接收后面的东西,即flag==1,接收%c;flag==2或flag==3都是用%d接收。结果一直有两个答案是错的。思考了很久觉得逻辑没有错,就只有考虑输入的东西奇形怪状,于是直接把输入整个接收,然后分情况,最后就AC了

#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn = 10010;
int n, m;
vector<int> A, B, T;
int nt[1010] = {0}, ns[1010] = {0};
int vis[1010];

struct Node{
	string cardnum;
	int score, site;
}node[maxn];

int change(string a, int Left, int Right){
	int num = 0;
	for(int i = Left; i <= Right; i++)
		num = num * 10 + a[i] - '0';
	return num;
}

bool cmp1(int a, int b){
	if(node[a].score != node[b].score)
		return node[a].score > node[b].score;
	else
		return node[a].cardnum < node[b].cardnum;
}

bool cmp2(int a, int b){
	if(vis[node[a].site] != vis[node[b].site])
		return vis[node[a].site] > vis[node[b].site];
	else
		return node[a].site < node[b].site;
}

int main(){
	scanf("%d%d", &n, &m);
	getchar();
	for(int i = 0; i < n; i++){
		cin>>node[i].cardnum>>node[i].score;
		if(node[i].cardnum[0] == 'B')
			B.push_back(i);
		else if(node[i].cardnum[0] == 'A')
			A.push_back(i);
		else
			T.push_back(i);
		int site = change(node[i].cardnum, 1, 3);
		node[i].site = site;
		++nt[site];
		ns[site] += node[i].score;
	}
	sort(A.begin(), A.end(), cmp1);
	sort(B.begin(), B.end(), cmp1);
	sort(T.begin(), T.end(), cmp1);
	for(int i = 1; i <= m; ++i){
		int flag;
		string str;
		cin>>flag>>str;
		cout<<"Case "<<i<<": "<<flag<<" "<<str<<endl;
		if(flag == 1){
			vector<int> ans;
			if(str == "B")
				ans = B;
			else if(str == "A")
				ans = A;
			else if(str == "T")
				ans = T;
			if(ans.empty()){
				printf("NA\n");
				continue;
			}
			for(int k = 0; k < ans.size(); k++)
				cout<<node[ans[k]].cardnum<<" "<<node[ans[k]].score<<endl;
			
		}else if(flag == 2){
			int site;
			sscanf(str.c_str(), "%d", &site);
			if(nt[site])
				printf("%d %d\n", nt[site], ns[site]);
			else
				printf("NA\n");
		}else{
			vector<int> ans;
			fill(vis, vis+1010, 0);
			for(int j = 0; j < n; j++){
				if(node[j].cardnum.substr(4, 6) == str){
					if(!vis[node[j].site]){
						ans.push_back(j);
					}
					vis[node[j].site]++;
				}
			}
			sort(ans.begin(), ans.end(), cmp2);
			if(ans.empty())
				printf("NA\n");
			for(int j = 0; j < ans.size(); j++){
				printf("%d %d\n", node[ans[j]].site, vis[node[ans[j]].site]);
			}
		}
	}
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PAT A1153 的相关文章

  • 【PAT(Advanced Level) Practice】1010 Radix(二分)

    链接 xff1a https pintia cn problem sets 994805342720868352 problems 994805507225665536 题意 xff1a 有两个数 N 1 xff0c N 2
  • 7-10 链表去重(25 分)

    给定一个带整数键值的链表 L 你需要把其中绝对值重复的键值结点删掉 即对每个键值 K 只有第一个绝对值等于 K 的结点被保留 同时 所有被删除的结点须被保存在另一个链表上 例如给定 L 为 21 15 15 7 15 你需要输出去重后的链表
  • PAT BASIC LEVEL 1054. 求平均值 (20)

    1054 求平均值 20 本题的基本要求非常简单 给定N个实数 计算它们的平均值 但复杂的是有些输入数据可能是非法的 一个 合法 的输入是 1000 1000 区间内的实数 并且最多精确到小数点后2位 当你计算平均值的时候 不能把那些非法的
  • 【PAT】1033 旧键盘打字 (20 分)

    1033 旧键盘打字 20 分 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中
  • 2020年十二月ccf-csp认证总结(内附个人题解)

    吐槽一下这个在线评测功能 平均四十分钟才能看到提交结果 本次成绩为100 100 0 30 20 最后两道题都是骗的分 提醒自己附代码的神奇图片 希望寒假有时间把没做出来的题目也再做一遍 csp官网更新出题目后 有路过的可以提醒我把题目加上
  • PAT乙级1074. 宇宙无敌加法器(C语言)

    PAT乙级真题题解目录 可回顾 1048 数字加密 都涉及使数字位数一致 1 不同位数的PAT数之间如何方便相加 构造相同大小的字符数组 按位数存储对应的数字 2 相加时转为数字进行运算 3 结果为0 为特殊情况 单独写输出代码 inclu
  • PAT : 基础编程题目集_编程题答案(7-1 ~ 7-38)(纯C编写)

    题目地址 7 1 include
  • 1004. 成绩排名 (20)

    读入n名学生的姓名 学号 成绩 分别输出成绩最高和成绩最低学生的姓名和学号 输入格式 每个测试输入包含1个测试用例 格式为 第1行 正整数n 第2行 第1个学生的姓名 学号 成绩 第3行 第2个学生的姓名 学号 成绩 第n 1行 第n个学生
  • PAT乙级刷题之路1055 集体照 (25分)

    1055 集体照 25分 拍集体照时队形很重要 这里对给定的 N 个人 K 排的队形设计排队规则如下 每排人数为 N K 向下取整 多出来的人全部站在最后一排 后排所有人的个子都不比前排任何人矮 每排中最高者站中间 中间位置为 m 2 1
  • 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号 一个是试机座位 一个是考试座位 正常情况下 考生在入场时先得到试机座位号码 入座进入试机状态后 系统会显示该考生的考试座位号码 考试时考生需要换到考试座位就座 但有些考生迟到了 试机已经结束
  • 7-7 12-24小时制 (15 分) (C语言实现)

    题目 思路 直接跟着题目往下写 没有过多思考 后面答案部分正确 才重新写了12点那里的程序 11min 代码 include
  • Pat刷题真题乙级(4)

    标题 前言 Pat乙级1013 组个最小数 Pat乙级1014 科学计数法 Pat乙级1017 打印沙漏 Pat乙级1018 人口普查 Pat乙级1019 旧键盘 前言 这个周末花了两天才写了五道题 嘿嘿 康康吧 Pat乙级1013 组个最
  • 1012 数字分类

    1012 数字分类 题目 输入格式 输入样例 输出样例 代码 小结 题目 给定一系列正整数 请按要求对数字进行分类 并输出以下 5 个数字 A 1
  • 1059 C语言竞赛(PAT 乙级 C++实现)

    1059 C语言竞赛 20 point s C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛 既然竞赛主旨是为了好玩 颁奖规则也就制定得很滑稽 0 冠军将赢得一份 神秘大奖 比如很巨大的一本学生研究论文集 1 排名为素数的学生将赢得最好
  • PAT B1016 部分A+B (15 分)(C语言实现)

    PAT B1016 部分A B 15 分 C语言实现 问题描述 正整数 A 的 D A 为 1 位整数 部分 定义为由 A 中所有 D A 组成的新整数 P A 例如 给定 A 3862767 D A 6 则 A 的 6 部分 P A 是
  • PAT 1018 锤子剪刀布 (20分)

    1018 锤子剪刀布 20分 大家应该都会玩 锤子剪刀布 的游戏 两人同时给出手势 胜负规则如图所示 现给出两人的交锋记录 请统计双方的胜 平 负次数 并且给出双方分别出什么手势的胜算最大 输入格式 输入第 1 行给出正整数 N 10 5
  • 7-3 谁是赢家

    7 3 谁是赢家 某电视台的娱乐节目有个表演评审环节 每次安排两位艺人表演 他们的胜负由观众投票和 3 名评委投票两部分共同决定 规则为 如果一位艺人的观众票数高 且得到至少 1 名评委的认可 该艺人就胜出 或艺人的观众票数低 但得到全部评
  • 1054 求平均值 (20 分)

    1054 求平均值 20 20 分 本题的基本要求非常简单 给定N个实数 计算它们的平均值 但复杂的是有些输入数据可能是非法的 一个 合法 的输入是 1000 1000 区间内的实数 并且最多精确到小数点后2位 当你计算平均值的时候 不能把
  • PAT-组个最小数

    题目描述 给定数字0 9各若干个 你可以以任意顺序排列这些数字 但必须全部使用 目标是使得最后得到的数尽可能小 注意0不能做首位 例如 给定两个0 两个1 三个5 一个8 我们得到的最小的数就是10015558 现给定数字 请编写程序输出能
  • 1074 Reversing Linked List (25 point(s))

    1074 Reversing Linked List 25 point s Given a constant K and a singly linked list L you are supposed to reverse the link

随机推荐

  • C++实现二路归并排序算法

    排序算法分为五大类 xff0c 一共是有九种 xff0c 如下 xff1a 插入类 xff1a 直接插入排序 折半插入排序 希尔排序 交换类 xff1a 冒泡排序 快速排序 选择类 xff1a 简单选择排序 堆排序 归并类 xff1a 二路
  • C语言实现-学生信息管理系统

    通过C语言实现一个学生信息管理系统 xff0c 要求如下 xff1a xff08 1 xff09 用户采用自己账号和密码登录系统 xff1b xff08 2 xff09 学生信息和账号密码通过文件的形式存储 xff1b xff08 3 xf
  • 通过python画矢量图(matplotlib,有代码)

    python画矢量图 xff08 有代码 xff09 python的matplotlib可以保存的文件格式word可以插入哪些图片格式呢代码中文乱码问题 有些同学因为文章的要求 xff0c 图片插入到word里的时候需要足够清晰 xff0c
  • Java实现LRU

    首先看看什么是LRU LRU是Least Recently Used的缩写 xff0c 即最近最少使用 xff0c 是一种常用的页面置换算法 xff0c 选择最近最久未使用的页面予以淘汰 该算法赋予每个页面一个访问字段 xff0c 用来记录
  • 域名cdn加速(apache与nginx)

    一 xff1a 由于公司业务属于请求量比较大的吧 xff0c 每个月几亿条 xff0c 考虑到安全性 xff0c 所以需要域名由http改为https cdn加速才可以支成撑业务 二 xff1a 之前的系统是使用lamp配置的 xff0c
  • ubuntu系统安装完nvidia显卡驱动后黑屏,不能进入系统

    我之前安装了系统里建议安装的nvidia 380显卡驱动 xff0c 为了安装更高版本的CUDA xff0c 我将nvidia显卡驱动升级到了430 xff0c 但是重启电脑进入Ubuntu系统时黑屏 xff0c 进不去系统界面 xff0c
  • 黑盒模糊测试之AFL++

    git clone depth 1 https github com AFLplusplus AFLplusplus cd AFLplusplus make Build Summary 43 afl fuzz and supporting
  • centos7安装MySQL5.7

    一 下载mysql5 7 1 下载地址 mysql 5 7 28 1 el7 x86 64 rpm bundle tar 2 上传至服务器 3 解压压缩包 解压命令 tar xvf mysql 5 7 28 1 el7 x86 64 rpm
  • 打包VSCode源码为安装程序(.exe)

    参考博客 GitHub vscode里的Packaging部分 xff1a https github com microsoft vscode wiki How to Contribute 这里提供了vscode打包后可以发布的平台代码 x
  • Ubuntu的安装卡在安装界面 (解决方法记录)

    安装过程 在 Install Ubuntu 的grub 选项上点击e 在 Linux 系统的启动参数 倒数第二行 中加入 nomodset 安装界面分辨率会有问题 xff0c 但这个之后再解决 安装过程中 xff0c 如果需要拖拽窗口 Al
  • 树莓派ubuntuMATE 安装xrdp来进行显示图形的远程调试

    树莓派ubuntuMATE 安装xrdp来进行显示图形的远程调试 引 在树莓派上调试显示图形界面的项目 xff0c 纠结配显示器的问题 pi本身有hdmi的接口 xff0c 如果有多余的显示器直接连接的那最好 xff0c 倘若接口不合适也可
  • C与C++源文件的拼接

    C 43 43 与C处理函数名 如果C 43 43 两个cpp源文件中函数名称相同 xff0c 会出现如下错误 xff08 ave就是函数名 xff09 34 int cdecl ave void 34 ave 64 64 YAHXZ 已经
  • 【Android-Socket】Socket通信笔记(单例模式,线程管理,AsyncTask)

    扉 本作学习视频来源 https www bilibili com video BV1Nx411r7Pr t 61 940 amp p 61 11界面参考 https blog csdn net fszeng2011 article det
  • 明明安装了anaconda,conda命令一直无效

    添加路径到bashrc里 export PATH 61 34 home xxx anaconda3 bin PATH 34 source 一下bashrc source bashrc
  • 云计算ACP练习题(一)

    阿里云计算绿网是云盾体系内的业务防护模块 xff0c 它的作用是保护网站内容的安全 xff0c 提前发现不符合政策规定的信息 以下对绿网功能的描述最准确的是 A 自动判别文本内容和图片是否合规 xff0c 支持API批量检测图片 B 只支持
  • 解决Linux字符界面中文变方框的问题

    图形界面控制台中输入init 3可以跳转到字符界面 xff0c 如果遇到含有中文目录且中文变成方框的问题 xff0c 可以尝试安装zhcon xff0c 然后做一下设置 xff0c 具体步骤如下 xff1a 终端下输入 xff1a sudo
  • 【报错解决方案】W: GPG error: http://dl.google.com/linux/chrome/deb stable InRelease

    0x00 问题描述 今天用apt update 更新apt源的时候 xff0c 曝出了 xff1a W GPG error http dl google com linux chrome deb stable InRelease The f
  • 磁盘满载导致的ubuntu远程连接xrdp失效问题

    远程连接断开主要三大原因 xff1a sshd服务和Xrdp服务未打开 防火墙拦截 电脑故障 SSHD网络服务和XRDP服务检测可以通过端口号监听查看service sshd status service xrdp status 也可以直接
  • MySQL入门指南3(常用函数)

    目录 一 常用函数 1 合计 统计函数 2 字符串相关函数 3 数学相关函数 4 加密和系统函数 5 流程控制函数 二 最后的话 一 常用函数 1 合计 统计函数 1 1 COUNT 用于统计表中记录 xff08 行 xff09 的数量 x
  • PAT A1153

    题目 xff1a https pintia cn problem sets 994805342720868352 problems 1071785190929788928 这道题我很久才AC xff0c 主要是不知道原来它的输入可以乱来 我