NYOJ 题目528 找球号(三)
找球号(三)
- 描述
-
xiaod现在正在某个球场负责网球的管理工作。为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是偶数。有一天,xiaod发现少了一个球,你能帮他找出丢的那个球的球号吗?
- 输入
-
有多组测试数据。每组数据包括两行。
第一行是一个整数N(0<N<1000000),表示现在所剩的球数。
随后的一行是N个数,表示所剩的各个球的编号M(0<M<10^9)。 - 输出
- 对于每组数据,输出弄丢的那个球的球号。
- 样例输入
-
5 1 1 3 6 6 3 1 2 1
样例输出
3 2
一开始没有注意内存限制,直接开了一个数组,用数组下标记录球号,最后查询时用a[i]对2取余,余数为1时,输出 i 即可。提交以后才发现超内存了。
超内存的代码:
#include<stdio.h> #include<string.h> int a[1000002]; int main() {int n,i,m,max;while(~scanf("%d",&n)){memset(a,0,sizeof(a));max=0;for(i=0;i<n;i++){scanf("%d",&m);a[m]++;if(m>max)max=m;}for(i=1;i<=max;i++)if(a[i]&1){printf("%d\n",i);break;}}return 0; }
后来听人说可以用异或的性质来处理,就查了一下异或的性质,写好代码提交上就AC了。
异或的运算规则: 0^0=0, 0^1=1,1^0=1,1^1=0
具体就是先将十进制数转化为二进制数(取8位或16位,不足补0),然后每一位对应异或运算,把结果转化为十进制数就是异或后的结果。如9^5=12;
00001001 (9的二进制表示)
00000101 (5的二进制表示)
00001100 (异或后的结果,用十进制表示就是12)
具体代码如下:
#include<stdio.h> int main() {int n,m,i,s;while(~scanf("%d",&n)){s=0;for(i=0;i<n;i++){scanf("%d",&m);s^=m;}printf("%d\n",s);}return 0; }
另一种方法就是用C++里的容器处理,我看别人这样写的,做个参考。具体代码如下:
#include<stdio.h> #include<set> using namespace std; int main() {int n,a,b,i;set<int> T; //定义一个int型容器while(scanf("%d",&n)!=EOF){b=0;for(i=0;i<n;i++){scanf("%d",&a);if(T.find(a)==T.end()) T.insert(a);//容器中无与a相同的,插入aelse T.erase(a); //找到与a相同的,删除所有的a}printf("%d\n",*T.begin());T.clear();//清空容器}return 0; }
NYOJ 题目528 找球号(三)相关推荐
- NYOJ 138 找球号(二)哈希表
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...
- nyoj 86 找球号(一)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描写叙述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每一个球上都有一个整数编号i(0<=i< ...
- NYOJ-86 找球号(一)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...
- NYOJ 138 找球号(二) (哈希)
题目链接 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是&qu ...
- nyoj528 找球号(三) set容器的应用
set容器的用法 具体可以看我的另外一篇stl的应用点击打开链接 #include <stdio.h> #include <set> using namespace std; ...
- 1299: 【二分查找】找球号
题目描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说 一个随机整数k(0<=k<=10 ...
- NOJ --138 找球号(二)
最基础的哈希表用法,先看所要存的个数,一般都是10N+10的内存,这样相当于十个位置里面有一个,空间是足够的.之前一直一直都是超时,就是因为内存开小的话就会出现死循环,因为存不了那么多个数 #incl ...
- nyoj-138-找球号(二)----hash算法之除留余数法+vector
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...
- nyoj--86--找球号(一)(hashset二分)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...
最新文章
- 11月最热论文Top10、五大学科最热论文Top3!
- 【Python】学习笔记总结5(Python垃圾回收及内存优化)
- java用户里获取部门id_javaWeb开发,根据部门ID查询该部门和下属所有部门的ID集合...
- 使用Open Liberty的开发模式最大程度地缩短周转时间
- JDK各版本新增的主要特性
- Jupyter的配置
- 静默安装Oracle11G
- 针式打印机打印发虚_针式打印机使用技巧
- 软件开发javascript html实现网页版日历代码_javascript技巧
- 一小时看懂Ruby代码基本逻辑(自定义metasploit模块)
- VMware Workstation Pro详细安装教程
- word背景图片设置a4纸大小教程
- 关于职业发展:一篇不错的文章分享
- 严蔚敏《数据结构》表达式求值
- Only fullscreen activities can request orientation终极解决方法
- html字体样式不显示不出来,css怎么设置不显示文字
- 根据M3U8文件地址下载网站上的视频
- 冒泡排序的交换次数 (树状数组)
- 2017cad光标大小怎么调_AutoCAD 2010如何调整光标的大小?调整光标大小的方法
- Remix快速导入本地文件夹