
CF C. Mahmoud and Ehab and the xor
发布日期:2021-05-06 23:47:59
浏览次数:24
分类:技术文章
本文共 1753 字,大约阅读时间需要 5 分钟。
大致题意
给你一个n,m
要你构造出一个有n个数的方案使得这n个数的异或和为m 要是不可以就输出0 这个n个数不能大于10^6 n,m都在10^5题解
刘智嘎的做法
先“随便确定n个数” ,然后再进行选学的调整。。
但这个做法很有问题。。 你要是真的“随便”确定的话,会WA掉。。 对确定数的要求比较高。。十分玄学#include#include const int N=1000005;bool bo[N];int a[N];//最后的东西 int n,m;int main(){ memset(bo,false,sizeof(bo)); scanf("%d%d",&n,&m); for (int u=1;u<=n;u++) { a[u]=(1<<18)-u+1; bo[a[u]]=true; m=m^a[u]; } for (int u=1;u<=n;u++) { if (m==0) break; if (bo[m^a[u]]==false) { a[u]=a[u]^m; m=0; break; } else { int t=m|a[u]; int last=m; if (bo[t]==false) { bo[a[u]]=false; m=m^a[u]; a[u]=a[u]|last; bo[t]=true; m=m^a[u]; } } } if (m!=0) printf("NO\n"); else { printf("YES\n"); for (int u=1;u<=n;u++) { printf("%d ",a[u]); } } return 0;}
标解
还是标解的构造靠谱。。
我们这次真的可以随便地构造n-3个数,只要不重复就行。。当然,这n-3个数不要超过n 然后我们设PW=1<<17 我们看一下这个n-3个数的异或和y 要是刚好和m相等,那么我们就把剩下的数弄到0就好了 PW*2,PW,PW+PW*2就是可行的方案 要是不相等 那么我们就弄PW,0,PW^m^y就好了但感觉这种题还是很妙啊。。
你会了一题不一定可以会第二题。。比如说你把n开到10^6我可能就不会了。。#include#include const int PW=1<<17;int n,x;int main(){ scanf("%d%d",&n,&x); if (n==2&&x==0) { printf("No\n"); return 0; } printf("YES\n"); if (n==1) printf("%d\n",x); else if (n==2) printf("%d %d\n",0,x); else { int y=0; for (int u=1;u<=n-3;u++) { printf("%d ",u); y^=u; } if (x==y) printf("%d %d %d\n",PW,PW*2,PW*2+PW); else printf("%d %d %d\n",0,PW,PW^x^y); } return 0;}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月17日 01时59分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VTK:隐式函数之ImplicitQuadric
2019-03-03
VTK:隐式函数之ImplicitSphere
2019-03-03
VTK:InfoVis之DelimitedTextReader
2019-03-03
数据结构与算法学习1-----稀疏数组
2019-03-03
Java转换xml格式时间 (yyyy-MM-ddTHH:mm:ss.SSSZ)
2019-03-03
关于json
2019-03-03
焦点事件
2019-03-03
webpack打包常见报错
2019-03-03
vuex—1vuex初始
2019-03-03
web前端面试一从输入url到看到页面发生了什么
2019-03-03
智慧水利的泵站自动化监控系统解决方案
2019-03-03
C getopt.h
2019-03-03
CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄
2019-03-03
H5页面授权获取微信授权(openId,微信nickname等信息)
2019-03-03
SpringBoot的URL是如何拼接的
2019-03-03
2018年年终总结
2019-03-03
解决checkbox未选中不传递value的多种方法
2019-03-03