1115. 裁判机 / 数组 【PATbasic】
1115 裁判机
有一种数字游戏的规则如下:首先由裁判给定两个不同的正整数,然后参加游戏的几个人轮流给出正整数。要求给出的数字必须是前面已经出现的某两个正整数之差,且不能等于之前的任何一个数。游戏一直持续若干轮,中间有写重复或写错的人就出局。
本题要求你实现这个游戏的裁判机,自动判断每位游戏者给出的数字是否合法,以及最后的赢家。
输入格式:
输入在第一行中给出 2 个初始的正整数,保证都在 [1,10的5次方 ] 范围内且不相同。
第二行依次给出参加比赛的人数 N(2≤N≤10)和每个人都要经历的轮次数 M(2≤M≤10的3次方)。
以下 N 行,每行给出 M 个正整数。第 i 行对应第 i 个人给出的数字(i=1,⋯,N)。游戏顺序是从第 1 个人给出第 1 个数字开始,每人顺次在第 1 轮给出自己的第 1 个数字;然后每人顺次在第 2 轮给出自己的第 2 个数字,以此类推。
输出格式:
如果在第 k 轮,第 i 个人出局,就在一行中输出 Round #k: i is out.。出局人后面给出的数字不算;同一轮出局的人按编号增序输出。直到最后一轮结束,在一行中输出 Winner(s): W1 W2 … Wn,其中 W1 … Wn 是最后的赢家编号,按增序输出。数字间以 1 个空格分隔,行末不得有多余空格。如果没有赢家,则输出 No winner.。
输入样例 1:
101 42
4 5
59 34 67 9 7
17 9 8 50 7
25 92 43 26 37
76 51 1 41 40
输出样例 1:
Round #4: 1 is out.
Round #5: 3 is out.
Winner(s): 2 4
输入样例 2:
42 101
4 5
59 34 67 9 7
17 9 18 50 49
25 92 58 1 39
102 32 2 6 41
输出样例 2:
Round #1: 4 is out.
Round #3: 2 is out.
Round #4: 1 is out.
Round #5: 3 is out.
No winner.
数组巧用
刚开始做这道题用了两个set记录数字的情况以及差的情况,超时了,后来发现一个方法只用数组,比较巧妙
思路:flag数组直接开大一点记录每个数是否被说过,nums数组则按顺序记住每个数,alive数组记录每个人是否存活,然后每次用那个数按顺序去加nums数组中的数看看是否有flag为1的(即两个数的差为该数),这种方法用数组内存较小,且时间较短
#include<bits/stdc++.h>
using namespace std;
int s[12][1005];
int main()
{int a,b,m,n,alive[12]={0},flag[200000]={0},cnt=0,nums[200000]={0},num=0;scanf("%d%d%d%d",&a,&b,&m,&n);for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&s[i][j]);flag[a]=1;flag[b]=1;nums[cnt++]=a;nums[cnt++]=b;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(alive[j]==1) continue;int t=0;while(t<cnt&&flag[s[j][i]+nums[t]]==0) t++;if(t==cnt||flag[s[j][i]]==1){printf("Round #%d: %d is out.\n",i,j);num++;alive[j]=1;}else{flag[s[j][i]]=1;nums[cnt++]=s[j][i];}}}if(num==m){printf("No winner.\n");return 0;}printf("Winner(s):");for(int i=1;i<=m;i++) if(alive[i]==0) printf(" %d",i);return 0;
}
1115. 裁判机 / 数组 【PATbasic】相关推荐
- 如何确定C语言中数组的大小?
如何确定C语言中数组的大小? 也就是说,数组可以容纳多少个元素? #1楼 如果您要处理未作为参数接收的数组,则sizeof方法是正确的方法. 作为参数发送给函数的数组被视为指针,因此sizeof将返回 ...
- acm pc^2的配置与使用
-------------------------------------------------------------------------------------- !!! 转载请注明: 转自 ...
- 【PAT】2020年春季考试乙级题目、答案、摸鱼、游记、93分
T1 对称日 (15分) 7-1 对称日 (15分) 央视新闻发了一条微博,指出 2020 年有个罕见的"对称日",即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组 ...
- javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧
javascript选择器 选择器如何影响代码的快速指南 (A quick guide on how selectors affect your code) While working on a pr ...
- java arraylist 序列化_无法序列化/反序列化ArrayList
我试图序列化和反序列化内部对象的数组列表: HairBirt param = new HairBirt(); param.setName("name"); param.setVal ...
- Flex与外部的数据通信
视频课:https://edu.csdn.net/course/play/7621 本章简介 第3章讲解了视图状态.Flex页面间的跳转.Flex应用的模态窗体.数据绑定.使用拖放,图表等知识.本章将 ...
- Java中Array和ArrayList之间的9个区别
array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用. 即使ArrayList在内部由数组支持,了解Java中的数组和ArrayList之间的差异对于成为一名优秀的 ...
- 编程竞赛控制系统(PC2)使用说明书
编程竞赛控制系统(PC2)使用说明书 1. 系统简介 PC2是由美国加利福尼亚大学为国际大学生编程竞赛开发研制的竞赛控制系统.目前主要用于ACM/ICPC等国际编程竞赛.PC2最新的 ...
- 使用PostgREST的RestAPI操作PostgreSQL数据库教程
使用PostgREST的RestAPI操作PostgreSQL数据库教程 表和视图 公开的架构中的所有视图和表均可被查询的活动数据库角色访问,并且可供活动数据库角色访问.它们暴露在一级深度路线中.例如 ...
最新文章
- 使用Visual Studio重构与分析Python
- stm8s串口奇偶校验学习笔记
- 同步中断和异步中断区别
- 【华科考研机试题】阶乘
- sybase性能优化经验浅谈
- 从一个 SAP CRM 软件实际的故障处理出发,谈谈企业管理软件领域内那些很难稳定重现故障的处理技巧
- python spark视频_Spark2.x+Python大数据机器学习视频课程
- 27 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义评估方法(实际成本)
- 目标检测网络中的 bottom-up 和 top-down理解
- 如何使用pandas正确读取带有中文的cvs文件
- Android 实现圆角头像(使用第三方开源库)
- IGBT模块测试台原理
- python实验报告代写_vector data作业代写、python程序设计作业调试、代做python实验作业、代写OGR python作业代做Python程序|代写Web开发...
- keras读取h5文件load_weights、load代码操作
- 【云原生之Docker实战】使用Docker部署ShowDoc文档工具
- 日志20130104~0308
- 【转载】NetLogic买断多核芯片公司RMI
- dwz ajax提交,DWZ-JUI Ajax.post 封装
- OPEX推出新一代货到人仓库自动化技术——Infinity ASRS
- 如何在AndroidStudio中使用GitHub
热门文章
- 评分卡模型开发-用户数据缺失值处理
- 安卓获取APP对应的Android id的原理分析
- opencv python安装 centos_centos下安装opencv
- 美通企业周刊 | 联行科技与保时捷中国达成充电合作;默克推进新冠疫苗制造平台;蔡司上半财年业绩良好...
- 七十二个小时 (打一字)
- jquery之Uncaught Error: Syntax error, unrecognized expression: #
- 中國IT從業人員如此之多,為什麼沒有流行世界的核心技術呢?例如,操作系統,編程語言,數據庫等...
- SSL 2406 2408 约数 比萨
- vue获取input的属性_Vue中自动获取input焦点
- 钉钉PC端聊天中分享的网址生成卡片