牛客小白月赛17 A 小sun的假期
题意已经很明显了,但是我首先是用暴力方法先把数字离散,再用离散后的值当下标来存这个数字出现了几次
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<map> 6 using namespace std; 7 const int maxn=10000000; 8 map<int,int>r; 9 int main() 10 { 11 //printf("%d\n",0^1^2^3); 12 int n,sum,a; 13 sum=0; 14 scanf("%d",&n); 15 for(int i=1;i<=n;++i) 16 { 17 scanf("%d",&a); 18 r[a]++; 19 //printf("%d\n",r[a]); 20 if(r[a]%2) 21 sum^=a; 22 else if((r[a]-1)!=0) 23 sum^=a; 24 } 25 printf("%d\n",sum); 26 return 0; 27 }
View Code
但是却内存超限
然后我又对所有数字排序,这样就不用存起来,因为排完序后,一样的数字在一起
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<map> 6 using namespace std; 7 typedef long long ll; 8 const int maxn=10000005; 9 int v[maxn]; 10 int main() 11 { 12 int n,sum=0; 13 scanf("%d",&n); 14 for(int i=1; i<=n; ++i) 15 { 16 scanf("%d",&v[i]); 17 } 18 //sort(v+1,v+1+n); 19 int ci=0; 20 v[0]=0; 21 for(int i=1; i<=n; ++i) 22 { 23 if(v[i]!=v[i-1]) 24 { 25 if(ci!=0 && ci%2) 26 sum^=v[i-1]; 27 ci=1; 28 } 29 else ci++; 30 } 31 //printf("%d\n",ci); 32 if(ci!=0 && ci%2) 33 sum^=v[n]; 34 printf("%d\n",sum); 35 return 0; 36 }
View Code
但是又内存超限
我又把sort排序去掉,试着试了一把结果还过了(一脸懵!)
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<map> 6 using namespace std; 7 typedef long long ll; 8 const int maxn=10000005; 9 int main() 10 { 11 int n,sum=0,a1,a2,b; 12 scanf("%d",&n); 13 scanf("%d",&a1); 14 b=1; 15 for(int i=2; i<=n; ++i) 16 { 17 scanf("%d",&a2); 18 if(a1==a2) ++b; 19 else 20 { 21 if(b!=0 && b%2) sum^=a1; 22 b=1; 23 a1=a2; 24 } 25 } 26 if(b!=0 && b%2) sum^=a1; 27 printf("%d\n",sum); 28 return 0; 29 }
View Code
比赛完之后,听他们说这一道题只需要把全部输入的数据都异或一遍就可以了,因为如果某个数字出现偶数次,那么也会异或偶数次,我们知道一个数字异或偶数次相当于没有异或。那么正好符合题意!
这个代码就不给了
这个时候我就在想了,为什么我那个不加sort就可以过,也是同样的原理
像这样的数据1 2 3 3 2 4 6 4
我的代码没有异或3,但是异或了2,但是却异或了两遍2.所以还是相当于没有异或
转载于:https://www.cnblogs.com/kongbursi-2292702937/p/11518877.html
牛客小白月赛17 A 小sun的假期相关推荐
- 牛客小白月赛17 F小黄鸭(计算几何+积分+二分)
链接:https://ac.nowcoder.com/acm/contest/1085/F 来源:牛客网 题目描述 小sun的寝室有一只小黄鸭,小黄鸭浮在水面上的样子特别可爱,现在小sun有一个问题: ...
- 牛客小白月赛17 F小黄鸭(计算几何+积分+二分)
题目链接:https://ac.nowcoder.com/acm/contest/1085/F 题解: 根据,,可得① 球的正视图是个圆心为(0,r),半径为r的圆,方程为② 侵入水中的体积: 体积公 ...
- 牛客小白月赛2 B.小马过河
牛客小白月赛2 B.小马过河 题目链接 题目描述 E t e ˊ r e o \mathrm{Et\acute{e}reo} Eteˊreo 开始涉猎几何领域了.他现在正在研究小马喝水问题. 众所周知 ...
- 牛客小白月赛16——D 小阳买水果
链接:https://ac.nowcoder.com/acm/contest/949/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛65个人题解A-E
1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...
- 牛客小白月赛60(A~C)题解
原题地址:牛客小白月赛60_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 题目A:小竹与妈妈 题意:输出(x-b)/a即可,没什么好说 代码: #include< ...
- 牛客小白月赛27 B.乐团派对
牛客小白月赛27 B.乐团派对 题目链接 题目描述 音乐是带给大家快乐的存在,而你的目标就是组建若干支乐队,让世界听到你们的演奏! 你目前有 nnn 位乐手,每位乐手只能进入一个乐队,但并不是每位乐手 ...
最新文章
- git-fork下来的项目(拷贝到本地 根据原来的库更新)
- Python_sqlalchemy——创建、查询、删除、更新一对多的表
- Go进阶(8): map嵌套的两轮初始化
- 印度孟买机器人餐厅_宝莱坞机器人2.0:重生归来一起来看印度神片!
- java 继承 extends_java中的继承 (extends) 详解
- IDEA下查看Java字节码(插件ByteCode Viewer)
- 鸿蒙2秒开机官方,两款荣耀智慧屏发布:鸿蒙OS首秀2秒开机,安卓应用迁移不难...
- java比较三个数的编程_java编程题,输入3个数abc按大小顺序输出
- 【读书笔记】金字塔原理-构建金字塔的层级关系
- 火狐浏览器代理设置:
- Linux虚拟用户怎么建立,linux下ftp虚拟用户的创建方法
- 准确率、精确率、召回率、F1-score
- CPU个数、内核数、线程数
- [SDOI2012]拯救小云公主
- supervisor启动进程时报错“gave up: monitor entered FATAL state, too many start retries too quickly”
- 华为发布21年财报 孟晚舟出席
- java 1.7 找不到 javaxmail_无法找到Org.springframework.mail.javamail.JavaMailSender类型的Bean?...
- Android图表库hellocharts详解
- OpenCV-Python相机标定
- 对计算机硬件的认识的论文,正确认识计算机硬件的安全维护措施有哪些