nyoj528-找球号(三) 【位运算】
http://acm.nyist.net/JudgeOnline/problem.php?pid=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:最直接的思路,排序,挨个检查。
- 代码未通过,MLE了:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <algorithm> using namespace std; int am[];
int m; int main(){
while(~scanf("%d",&m)){
for(int i=;i<m;i++){
scanf("%d",&am[i]);
}
sort(am,am+m);
int t;
bool b=false;
for(int i=;i<m;i++){
if(!b) t=am[i],b=true;
else if(t==am[i]){
b=false;
}else{
printf("%d\n",t);
goto tt;
}
}
printf("%d\n",t);
tt:;
}
return ;
}
解题思路B:利用set,每查相同即erase,减少内存占用。
代码AC:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <algorithm> using namespace std; int main(){
int m,t;
set<int> se;
set<int>::iterator it;
while(~scanf("%d",&m)){
for(int i=;i<m;i++){
scanf("%d",&t);
it=se.find(t);
if(it!=se.end()){
se.erase(it);
}else{
se.insert(t);
}
}
it=se.begin();
printf("%d\n",*it);
se.erase(se.begin());
}
return ;
}
解题思路C:stl有个缺点,就是效率较低,有部分无用内存。这道题有意思的地方是,可以把所有数据直接进行异或,奇数那个编号在异或后会显示出来(偶数的都抵消了)。
代码AC:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <algorithm> using namespace std; int main(){
int m,t,ans;
while(~scanf("%d",&m)){
ans=;
for(int i=;i<m;i++){
scanf("%d",&t);
ans^=t;
}
printf("%d\n",ans);
}
return ;
}
nyoj528-找球号(三) 【位运算】的更多相关文章
- NYOJ528 找球号(三)位运算
找球号(三) 时间限制:2000 ms | 内存限制:3000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是 ...
- nyoj 找球号三(除了一个数个数为基数,其他为偶数,编程之美上的)
#include<iostream> #include<stdio.h> using namespace std; int main() { int len; while(ci ...
- nyoj 528 找球号(三)(哈希)
点解:题目链接 两种办法,1是使用容器set做 2必须知道这个结论, 突然感觉数论很强大啊,,,, /*//set容器处理 出一次加进去,再出现删掉,这个最后留下的就是那个只出现基数次的 #incl ...
- nyist oj 138 找球号(二)(hash 表+位运算)
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描写叙述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中.每一个球上都有一个整数编号i(0<=i< ...
- nyoj_528_找球号(三)_201404152050
找球号(三) 时间限制:2000 ms | 内存限制:3000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是 ...
- 找球号(三)南阳acm528(异或' ^ ')
找球号(三) 时间限制:2000 ms | 内存限制:10000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都 ...
- nyoj138 找球号(二)_离散化
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i< ...
- ACM 找球号(一)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<= ...
- nyoj 86 找球号(一)
点击打开链接 找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i ...
- nyoj 86 找球号(一)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0& ...
随机推荐
- appium定位方法
1.id定位 driver.find_element_by_id("这里是resource-id") 2.name定位 (新版本的appium 1.7 已经没有这个定位方法了) d ...
- 微信jssdk批量添加卡券接口
1)首先是官方接口文档: 1.批量添加卡券接口:https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.0861973 ...
- 常用模块:re ,shelve与xml模块
一 shelve模块: shelve模块比pickle模块简单,只有一个open函数,所以使用完之后要使用f.close关闭文件.返回类似字典的对象,可读可写;key必须为字符串,而值可以是pytho ...
- treap Python实现
# coding=utf-8 # treap(树堆)Python实现 import random def preorder_tree_walk(node): if node: print node.k ...
- 线程使用方法 锁(lock,Rlock),信号了(Semaphore),事件(Event),条件(Ccndition),定时器(timer)
2线程的使用方法 (1)锁机制 递归锁 RLock() 可以有无止尽的锁,但是会有一把万能钥匙 互斥锁: Lock() ...
- Python生态圈
WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framewor ...
- selenium自动化测试遇到的问题积累--持续积累中
引言: 在做UI自动化测试过程中,总是会遇到各种问题,而解决问题总是会花费一些时间和心思,但是解决后对于自己就是一种成长,持续积累,当可能遇到的问题都被你遇到过,并且都知道解决办法,这就是一种经验的价 ...
- django 不同版本 url 及path区别
- leetcode29
class Solution { public int divide(int dividend, int divisor) { if (dividend == Integer.MIN_VALUE &a ...
- bootstrap做的导航
顶部导航:nav-tabs 左边导航:nav-list 响应式布局:div嵌套 ~ container.row.ol-lg-X 效果: 源码: <!DOCTYPE html> <ht ...