正题

题目链接:https://www.luogu.com.cn/problem/CF1054D


题目大意

一个长度为nnn的序列,每个数小于2k2^k2k,可以选择一些数xorxorxor上2k−12^k-12k−1。要求使得满足alxoral+1xor...xorar=0a_l\ xor\ a_{l+1}\ xor...xor\ a_r=0al​ xor al+1​ xor...xor ar​=0的区间个数最少。


解题思路

首先做前缀xorxorxor,这样就变成了al−1xorar=0a_{l-1}\ xor\ a_r=0al−1​ xor ar​=0的数量最少,也就算相同的对数最少。
若axor(2k−1)=ba\ xor\ (2^k-1)=ba xor (2k−1)=b或者a=ba=ba=b我们将它们视为同一类,它们可以相互转换,对于每一类我们一半取大的,一半取小的即可。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
const int N=2e5+10;
int n,k,a[N];long long ans;
map<int,int> v;
long long p(int x)
{return 1ll*x*(x-1)/2;}
int main()
{scanf("%d%d",&n,&k);int ms=(1<<k)-1;v[0]++;for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]^=a[i-1];if(ms-a[i]>a[i])v[a[i]]++;else v[ms-a[i]]++;}map<int,int>::iterator it=v.begin();ans=1ll*n*(n+1)/2;for(;it!=v.end();it++){int x=it->second;ans-=p(x/2)+p(x-x/2);}printf("%lld\n",ans);return 0;
}

CF1054D-Changing Array【贪心】相关推荐

  1. Codeforces 1054D Changing Array

    Codeforces 1054D Changing Array 做法:给定一个序列,每个数可以把在2进制k位下取反,也可以不变,在改变后,这个序列异或和不为0的区间的个数.考虑如何求出尽可能少的异或为 ...

  2. CF1155D Beautiful Array 贪心,dp

    CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...

  3. Max Sum Array 贪心(2500)

    题意 : 给一数组c=[c1,c2,...,cm]c=[c_1,c_2,...,c_m]c=[c1​,c2​,...,cm​],求构造一个长度为n的数组a=[a1,a2,...,an]a=[a_1,a ...

  4. CodeForces 596B Wilbur and Array 贪心

    给出原始{ai}={0},{bi}.每次修改{ai..n}+1或-1,求最小操作次数使{ai}=={bi}. 累计相邻两数差即可. 因为差最大10^9,数字有2*10^5,要long long. #i ...

  5. LeetCode Maximum XOR of Two Numbers in an Array(贪心、字典树)

    问题:给出一个非空的整数数组,找到最大的两个数的异或值.要求时间复杂度为O(n) 思路:根据二进制表示的前缀. 先求出最大数的位数,然后根据位数作位操作异或判断最大值.由于要求时间复杂度为O(n),在 ...

  6. 【Numpy】array操作总结

    官方Document: https://www.numpy.org/devdocs/reference/routines.array-manipulation.html 开发测试环境 Win10 Py ...

  7. 区域赛铜牌专题(一)

    区域赛铜牌专题 题号 题目 知识点 HDU 5532 Almost Sorted Array 贪心,LIS HDU 5533 Dancing Stars on Me HDU 5536 Chip Fac ...

  8. Codeforces Round #702 (Div. 3)全部题解

    题目链接:https://codeforces.com/contest/1490 文章目录 A. Dense Array B. Balanced Remainders C. Sum of Cubes ...

  9. 老男孩上海校区Python面试题

    python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={'a':24,'g':52,'i':12,'k':33}请按字典中的 value 值进行排序? 1. ...

  10. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

最新文章

  1. 机器学习性能优化全解
  2. 利用配置编辑器改变Ubuntu10按钮位置
  3. 高二下学期计算机考试试题及答案,福建省泉州市第五高级中学校2020-2021学年高二下学期期中考试数学试题含答案.docx...
  4. 用redis解决超卖
  5. Spring bean三种创建方式
  6. linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!
  7. openMP的简单使用
  8. np.concatenate 函数的使用
  9. 【BZOJ1923】[Sdoi2010]外星千足虫 高斯消元
  10. 511遇见易语言大漠多线程模块教程(1-12课)
  11. android 壁纸存储位置,手机图片去了哪?教你理清照片存放路径(全文)
  12. 【Asan】工欲善其事必先利其器——AddressSanitizer
  13. (2010计本3班-杨蒙)面向对象的C--实现链表操作
  14. 局域网电脑设置固定ip
  15. 软件包 jdk1.8-2000:1.8.0_281-fcs.aarch64 是针对 different 构架的
  16. 最小割与最大流(mincut amp; maxflow)
  17. AFNetworking
  18. 函数式编程-纯函数篇
  19. android框架服务 恶意软件,Android平台各类恶意软件及病毒概览
  20. 【rmzt:火影忍者佩恩动漫主题】

热门文章

  1. 程序员(工作2年)立flag,面四家,成三家,最后进了蚂蚁.....
  2. java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
  3. 用gradle启动java项目_构建Java项目
  4. fb静态区域_fb 静态数据
  5. html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径
  6. java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
  7. 39. 组合总和020(思路+详解)
  8. vector的求和用法accumulate
  9. mysql脚本的制作_制作脚本实现mysql自动备份
  10. C++ 多态实现的三个条件