前言:

这个方法挺慢的,不如其他大佬们的方法(但是我看不懂他们写的),所以自己来搞个.最坏的情况是n^2的复杂度,但是基本到不了最坏的情况.而且可以D1,D2两题通用!

核心思想:

假设 l^x=a1,(l+1)^x=a2...r^x=ar-l+1.这里的a1不是题目里的a1,是a数组中的某个数.

当我们将等式左端都异或起来 就得到以下的等式 l^x^(l+1)^x...^r^x=a1^a2^a3...^ar-l+1,又因为异或运算满足交换律,所以可以变成 (l^(l+1)^...^r)^(x^x^x...^x)=a1^a2^...^ar-l+1,所以x^x^...^x就可以求出来.

但是!由于一共有r-l+1个x进行异或,若奇数个x异或,则结果为x,若偶数个x异或,则结果为0.

所以若r-l+1为奇数,则x可直接得出,

r-l+1为偶数,则还需要进行一些变化:将其拆分成最后一个和前面r-l个,这样拆成的两个都是奇数.但由于不知道最后一个r是和a数组中的哪一个进行配对,所以进行枚举,枚举r和a[i]配对.当找到正确的r和a[i]配对时,这样前r-l个和其对应的a进行异或的结果是x,r和a[i]进行异或,结果也是x.

Tips:虽然概率很小,但是,非正确的r和a[i]配对后,其余的r-l个数和其余的a数组配对,两个非正确的答案也可能是相等的!所以还要再添一个判断这时的匹配是否是正确答案的函数.

AC代码

#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> pi;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const int N = 1e6 + 10;
template<class T>inline void read(T & res)   //快读模板
{char c; T flag = 1;while ((c = getchar()) < '0' || c > '9')if (c == '-')flag = -1; res = c - '0';while ((c = getchar()) >= '0' && c <= '9')res = res * 10 + c - '0'; res *= flag;
}int n, t;
int l, r;
string s;
int a[N];
bool func(int ans,int l,int r) {   //判断此时的ans是否是正确答案for (int i = 0; i < r - l + 1; i++) {if ((ans ^ a[i]) > r || (ans^a[i]) < l) return false;}return true;
}
int main() {read(t);while (t--) {read(l); read(r); for (int i = 0; i < r - l + 1; i++) {read(a[i]);}int ans = 0;if (((r - l + 1)%2) == 1) {for (int i = l; i <= r; i++) {ans ^= i;}for (int i = 0; i < r - l + 1; i++) {ans ^= a[i];}}else {   //若为偶数,则前面相互异或和等于最后一个int num1 = 0; int num2 = 0;for (int i = l; i < r; i++) num1 ^= i;   //num1是l~(r-1)异或的结果for (int i = 0; i < r - l + 1; i++) num2 ^= a[i];   //num2为a数组所有数异或的结果//先枚举最后一个跟哪个a对应for (int i = 0; i < r - l + 1; i++) {if ((a[i] ^ r) == (num2 ^ a[i] ^ num1)) {   if (func(a[i] ^ r, l,r)) {ans = a[i] ^ r;break;}}}}//for (int i = 0; i < r - l + 1; i++) cout << (ans ^ a[i]) << ' ';cout << ans << endl;}}

后话(牢骚):

本人只是cf灰名的菜鸡,以上想法可能会有问题或者优化空间,勿喷.

我要时时称颂你,yxh。赞美他的话必常在我口中.      --改自《圣经》

cf Round#779 D 388535相关推荐

  1. 【codeforces】【比赛题解】#915 Educational CF Round 36

    虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题--悲伤. 这次的Education ...

  2. 【codeforces】【比赛题解】#849 CF Round #431 (Div.2)

    cf的比赛越来越有难度了--至少我做起来是这样. 先看看题目吧:点我. 这次比赛是北京时间21:35开始的,算是比较良心. [A]奇数与结束 "奇数从哪里开始,又在哪里结束?梦想从何处起航, ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积. 保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这 ...

  4. 【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)

    没有参加,但是之后几天打了哦,第三场AK的CF比赛. CF大扫荡计划正在稳步进行. [A]Olympiad 题意: 给\(n\)个人颁奖,要满足: 至少有一个人拿奖. 如果得分为\(x\)的有奖,那么 ...

  5. 【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)

    终于打了一场CF,不知道为什么我会去打00:05的CF比赛-- 不管怎么样,这次打的很好!拿到了Div. 2选手中的第一名,成功上紫! 以后还要再接再厉! [A]Check the string 题意 ...

  6. 【codeforces】【比赛题解】#851 CF Round #432 (Div.2)

    cf真的难-- 点我浏览丧题. [A]Arpa和她对墨西哥人浪的研究 Arpa正在对墨西哥人浪进行研究. 有n个人站成一排,从1到n编号,他们从时刻0开始墨西哥人浪. 在时刻1,第一个人站起来. 在时 ...

  7. CF Round#240题解

    第一次参加CF的比赛,MSK19.30,四个小时的时差真心累,第一次CODE到这么夜-- 一开始做了A,C两题,后来做B题的时候我体力和精神集中度就很低了,导致一直WA在4-- 今天起床后再刷B,终于 ...

  8. CF Round #426 (Div. 2) The Useless Toy 思维 水题

    题目链接: http://codeforces.com/contest/834/problem/A 题目描述: 输入起始状态和结束状态和数列长度, 判断旋转方向是顺时针逆时针还是不合理 解题思路: 长 ...

  9. cf round #421 div2 D. Mister B and PR Shifts

    链接:http://codeforces.com/contest/820/problem/D 分析:|p[i]-i|每次只会变化1,先不考虑端点情况,就只有p[i]==i的时候变化,每次k+1的时候, ...

最新文章

  1. 机器学习的第一个难点,是数据探索性分析
  2. oracle-sql汇总
  3. 根据key删除Map集合中的key-value映射
  4. 已经搭载华为鸿蒙,阿尔法S或将搭载华为鸿蒙OS , 4月17极狐带来真相!
  5. 机器学习-k均值聚类算法-k_means原理14
  6. insert返回主键 — mybatis selectKey
  7. Mongo 安装、配置、启动 Windows
  8. 2019.7.17东湖大数据页面三
  9. (可行方案)mysql5.7.9安装教程
  10. 还款压力大要不要买房?
  11. shell中的正则表达式
  12. 第二十一讲 ASP.NET页面框架
  13. Vue上传文件之后显示文件内容
  14. 米字格图片可打印_练字本米字格模板可打印行楷书
  15. 从实战思路学习前端的设计模式
  16. rpg存档修改网站_Switch上国宝级欧美版RPG游戏推荐
  17. PL2303GT USB to RS232 Serial Bridge Controller (Built in RS232 XCVR)驱动地址
  18. 向量的2-范数、矩阵的2-范数
  19. python电影情感评论分析_python--电影评论文本情感分类
  20. Math 函数-- cos()和acos()

热门文章

  1. FPGA实现SD卡音乐播放
  2. MIPS DMIPS MFLOPS名词解释
  3. 201771010137 赵栋《面向对象程序设计(java)》第十五周学习总结
  4. docker 创建etcd集群
  5. qpython3:安卓上运行Python
  6. matlab调用maple数据画图,Matlab调用Maple
  7. 2020年数二真题(重点题讲解)
  8. 大学计算机数学基础2,计算机数学基础-中国大学mooc-题库零氪
  9. HEVC/H.265编码原理
  10. Excel公式提取数据