题目链接:点击查看

题目大意:给出一个由n个数字构成的数列,现在已知其累加和为sum,异或和为xor,现在允许我们向数列中添加0~3个数,以满足sum=2*xor,构造出任意一种方案

题目分析:一开始我想分情况讨论的,就是在求出sum和xor之后,讨论一下其大小关系,如果sum小于2*xor的话,直接补齐两个其差值的一半就好了,因为新补的两个数对xor不做贡献,而对sum的贡献就是差值,可以满足条件了,不过需要对奇偶讨论一下,因为奇数的一半会出现小数,这个时候我们就可以用第三个数来补齐一下了,也就是先让sum加一,再让xor异或1,这个时候其差值就是偶数了,剩下的就是当sum大于2*xor的时候,这个时候我考虑到首先加上一个数,让其回到第一种情况即可,不过这样想下来构造所需要处理的细节就太多太多了。。很不可取,即使勉强写出来了也耗费了不少时间,而且应该很难1A

这个时候我们就可以直接从公式出发,先将数字抽象出来,在输入完成后我们只有sum和xor两个数值,若想满足sum=xor*2,因为不可控因素较多,我们不妨先把xor给消掉,也就是添加一个数,令其权值等于xor,这样等式就变成了sum+xor=2*(xor^xor),也就是sum+xor=0,这有个什么好处呢,这个公式的等式右边,也就是需要异或的地方变成了零,接下来我们无论添加的数为多少,会造成的贡献就是等式两边都加上相同的数值,因为我们需要维持两倍的关系,所以完全可以添加一个sum+xor,这样等式两边就可以符合题意了

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;scanf("%d",&n);LL sum=0,_xor=0;for(int i=1;i<=n;i++){LL num;scanf("%lld",&num);sum+=num;_xor^=num;}printf("2\n");printf("%lld %lld\n",_xor,_xor+sum);}return 0;
}

CodeForces - 1270C Make Good(思维+构造)相关推荐

  1. CodeForces - 1291D Irreducible Anagrams(思维+构造)

    题目链接:点击查看 题目大意:首先规定两个字符串 s 和 t 为 Anagrams ,当且仅当字符串 t 可以通过字母重新排列后得到 s ,也就是每个字符出现的次数相同,但位置不做要求,紧接着规定另一 ...

  2. CodeForces - 125C Hobbits' Party(思维+构造)

    题目链接:点击查看 题目大意:有一个派对,现在有 n 个人参加,题目要求我们构造出一种参加方式,满足条件且可以维持的天数最大: 任意两天中至少有一个相同的人参加 任意三天中不能有一个相同的人参加 输出 ...

  3. CodeForces - 1270D Strange Device(思维+构造)

    题目链接:点击查看 题目大意:规定一个含有n个元素的数组a,每个元素互不相等,但是全部未知,现在给出一台机器,这台机器有两个参数,分别是k和m,其意义是每次可以询问k个下标,机器将给出k个下标中第m大 ...

  4. CodeForces - 1504C Balance the Bits(思维+构造)

    题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...

  5. Codeforces Round #624 (Div. 3) E. Construct the Binary Tree 思维 + 构造

    传送门 文章目录 题意: 思路: 题意: 给你n,dn,dn,d,让你构造有nnn个点的二叉树,他们每个节点深度和为ddd. n,d≤3000n,d\le 3000n,d≤3000. 思路: 先考虑不 ...

  6. 【CodeForces - 798D】Mike and distribution (思维构造,贪心,黑科技)

    题干: Mike has always been thinking about the harshness of social inequality. He's so obsessed with it ...

  7. CodeForces - 1265D Beautiful Sequence(贪心+构造+思维)

    题目链接:点击查看 题目大意:给出a个0,b个1,c个2,d个3,要求构造一种序列,使得数列两两之间绝对值之差等于1,若不能构造输出NO 题目分析:首先我们需要稍微讨论一下特殊情况,那就是对于两端的数 ...

  8. CodeForces - 618B Guess the Permutation(思维+构造)

    题目链接:点击查看 题目大意:先给出一个长度为n的序列ai,这个序列是1~n全排列中的其中一种,再给出一个n*n的矩阵,maze[i][j]=val代表min(ai,aj)=val,要求我们构造出原始 ...

  9. CodeForces - 715A Plus and Square Root(思维+构造)

    题目链接:点击查看 题目大意:我们在玩一个游戏,屏幕上有一个数字,我们设这个数字为x,初始值为2,我们一开始的等级是k,我们每一次可以有两种操作: 加法:可以让x加上k 开根号:可以让x开根号,并且等 ...

最新文章

  1. oracle 9i sql_id,Oracle9i增添 wm_concat函数(转)
  2. 函数式编程语言天生就慢吗?
  3. 21. Function 对象
  4. 活代码LINQ——08
  5. 连接mysql_spring boot连接mysql提示The server time zone value xxx错误
  6. ubuntu下安装tftp
  7. [网安实践II] 实验2. 密码学实验
  8. centos linux远程桌面连接工具,VNC Viewer轻松连接远程CentOS6.8桌面
  9. Android事件机制深入探讨(一)
  10. 针孔相机畸变成像详解
  11. Java基础学习总结(98)——阿里巴巴Java开发手册
  12. 2023 简单在线画板HTML源码
  13. 金蝶云苍穹笔记(三)
  14. 【机器学习】决策树(实战)
  15. 与黑客讨价还价,勒索攻击企业数据是关键
  16. Echarts CPU监控 (折线仪表盘,图例混搭)
  17. 老闪创业那些事儿(50)——校园招聘(下)
  18. Python文本爬虫实战
  19. 学会VBA,菜鸟也高飞!
  20. div id与div class用法讲解

热门文章

  1. Condition.doSignal
  2. 基于Xml 的IOC 容器-分配解析策略
  3. 单点登录Redis存储Session及SessionId问题说明与集群实战-2
  4. zookeeper分布式锁避免羊群效应(Herd Effect)
  5. python中的set和dict_Python中dict和set的用法讲解
  6. yii2 关掉php notice,yii2关闭错误提示
  7. 用中文传话游戏理解 RNN
  8. 阿里云云客服平台正式商业化
  9. SaaS服务创投:场景多元化 平台建设稳中有序
  10. ALV打印不显示打印界面的问题