摘要:有n根(n为奇数)长短不一的筷子,里面可以凑成(n-1)/2双筷子,只剩下一根不能凑对,问那根不能凑对的筷子有多长。

乍听起来好像不难,桶是一个好东西,可是一看数据:对于100%的数据,N<=10000001,筷子长度不大于 10^9。

桶直接就淘汰掉了。

但是其实我第一次A用的却是桶,直接上代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,t,a[];
int main(){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&t);
a[t]++;//桶计算
if(a[t]==){
a[t]-=;//如果凑成一对了就把他减去
}
}
for(long long i=;i<=;i++){
if(a[i]>){
printf("%d\n",i);//如果在遍历桶的时候找到了那根落单的筷子就直接输出。
break;
}
}
return ;
}

靠的是一股巧劲儿。

直到我做完这题不久后,我得知了一个神奇的东西:^异或符号

0^0=0,0^1=1 0异或任何数=任何数

1^0=1,1^1=0 1异或任何数-任何数取反

任何数异或自己=把自己置0

异或运算符的特点是:数a偶数次异或同一个数b(例如:a=a^b^b)仍然为原值a。

所以我们只要在输入的时候一直异或,就可以得到落单的那跟筷子的长度(我刚知道的时候像发现了新大陆一样)。

代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,ans=;
int main(){
scanf("%d",&n);//输入一共有几根筷子
for(int i=;i<n;i++){
scanf("%d",&m);//输入每根筷子的长度
ans^=m;//异或大法好,只要一直这样最后得出来的结果肯定是落单的那根筷子的长度。
}
cout<<ans<<endl;
return ;
}

这样写简单明了,比起我那个桶强多了,然后感谢这道题让我知道了^,以后在做别的题的时候也可以用到。

以上为我这道题的全部思路与解法,如果有什么不对的地方,还请各位大佬及时向我纠正。

P1469 找筷子的更多相关文章

  1. 洛谷——P1469 找筷子

    P1469 找筷子 题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘 ...

  2. 洛谷P1469找筷子

    题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX ...

  3. 洛谷 P1469 找筷子

    题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX ...

  4. 集训作业 洛谷P1469 找筷子

    这个题的代码真的是短的不得了呢. 有个神奇的东西叫异或,写起来是这个样子的^. 这个东西可以查看2个数的二进制某位是否相同,相同取0,不同取1.虽然我用的不熟,但我可以想出来,如果2个相同的数异或,答 ...

  5. 洛谷 P1469 找筷子 题解

    题目传送门 先排序一遍,再一个一个判断是否有偶数个.注意for循环要i+=2. #include<bits/stdc++.h> using namespace std; ]; int ma ...

  6. 洛谷-P1469 找筷子 (位运算)

    题意:给你一组数,求数组中唯一的出现次数为奇数的那个数. 题解:这题其实直接桶排一下就行了,但是最后一个点会TLE. ​ 后来了解到这题可以用位运算来解决: ​ ^(异或)运算符:用于比较两个二进制数 ...

  7. 题解 P1469 【找筷子】

    这题真是水 咳咳.. 基本思路:桶排 但是可以剪枝. 剪枝方法: 好几种,可以用set(集合),可以用stack(栈), 也可以像我一样的蒟蒻最大最小值...... 但是作者的毒瘤数据应该不会放过我们 ...

  8. Operating System-进程/线程内部通信-管程(Monitor)介绍,实现以及应用

    本文主要内容: 管程(Monitor)介绍 管程实现 管程应用 一.管程(Monitor)介绍 1.1 管程 前一篇文章介绍了信号量以及使用,信号量已经提供了一个方便且高效的进程同步机制,但是信号量有 ...

  9. caioj 1077 动态规划入门(非常规DP1:筷子)

    首先可以看出排序之后,最优解肯定是每一对都相邻才是最优的 那么我们就要找构成最优解的相邻组 设f[i][j]是前i个字符,k对的最小值 如果当前这个筷子不取的话,f[i][j] = f[i-1][j] ...

随机推荐

  1. 浅谈typeof 和instanceof

    typeof vs instanceof 涉及面试题:typeof 是否能正确判断类型?instanceof 能正确判断对象的原理是什么? typeof 对于原始类型来说,除了 null 都可以显示正 ...

  2. rust 编译器工作流

    将源代码转为高级中间表示,在将其转为中级中间表示,在将其转为LLVM IR, 最终输出机器码. rust 租借检查 选项优化,代码生成(宏, 范型) , 都是在MIR层.

  3. Linux性能优化思路

    性能测试的核心,就是找出性能瓶颈并进行性能优化,解决"慢"的问题,最终满足客户业务需求. [性能需求来源及性能问题现象] 性能需求的来源,主要分为以下几类: 项目组提出性能需求: ...

  4. Redis面试专题

    Redis面试专题 1. 什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) 2. Reids的特点 Redis本质上是一个Ke ...

  5. 线程基础9-quene讲解

    在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走. ...

  6. SpringMVC和Spring

    SpringMVC和Spring汇总 转载:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1. 为什么使用Spring ? 1). 方便解耦, ...

  7. python+opencv检测图像清晰度

    直接上代码,list_jian.txt为待检测图像路径列表 import cv2 import numpy as np import os for path in open("list_ji ...

  8. AcWing 走廊泼水节 题解

    这道题大致题意就是让一棵树任意两点有连边(也就是完全图),但是补完后最小生成树是一开始的那棵树,问最小加的边权之和是多少. 了解题意后,我们可以想到用Kruskal(废话),当每两个集合合并的时候,除 ...

  9. 2020阿里巴巴官方最新Redis开发规范!

    本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通过本文的介绍可以减少使用Redis过程带来的问题. 一.键值设计 1.key名设计 ...

  10. 设置overflow:hiden行内元素会发生偏移的现象

    父级元素包含几个行内元素 <div id="box"> <p> <span>按钮</span> <span>测试文字文字 ...