CF1054D-Changing Array【贪心】
正题
题目链接: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(nlogn)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【贪心】相关推荐
- Codeforces 1054D Changing Array
Codeforces 1054D Changing Array 做法:给定一个序列,每个数可以把在2进制k位下取反,也可以不变,在改变后,这个序列异或和不为0的区间的个数.考虑如何求出尽可能少的异或为 ...
- CF1155D Beautiful Array 贪心,dp
CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...
- 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 ...
- CodeForces 596B Wilbur and Array 贪心
给出原始{ai}={0},{bi}.每次修改{ai..n}+1或-1,求最小操作次数使{ai}=={bi}. 累计相邻两数差即可. 因为差最大10^9,数字有2*10^5,要long long. #i ...
- LeetCode Maximum XOR of Two Numbers in an Array(贪心、字典树)
问题:给出一个非空的整数数组,找到最大的两个数的异或值.要求时间复杂度为O(n) 思路:根据二进制表示的前缀. 先求出最大数的位数,然后根据位数作位操作异或判断最大值.由于要求时间复杂度为O(n),在 ...
- 【Numpy】array操作总结
官方Document: https://www.numpy.org/devdocs/reference/routines.array-manipulation.html 开发测试环境 Win10 Py ...
- 区域赛铜牌专题(一)
区域赛铜牌专题 题号 题目 知识点 HDU 5532 Almost Sorted Array 贪心,LIS HDU 5533 Dancing Stars on Me HDU 5536 Chip Fac ...
- Codeforces Round #702 (Div. 3)全部题解
题目链接:https://codeforces.com/contest/1490 文章目录 A. Dense Array B. Balanced Remainders C. Sum of Cubes ...
- 老男孩上海校区Python面试题
python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={'a':24,'g':52,'i':12,'k':33}请按字典中的 value 值进行排序? 1. ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
最新文章
- 机器学习性能优化全解
- 利用配置编辑器改变Ubuntu10按钮位置
- 高二下学期计算机考试试题及答案,福建省泉州市第五高级中学校2020-2021学年高二下学期期中考试数学试题含答案.docx...
- 用redis解决超卖
- Spring bean三种创建方式
- linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!
- openMP的简单使用
- np.concatenate 函数的使用
- 【BZOJ1923】[Sdoi2010]外星千足虫 高斯消元
- 511遇见易语言大漠多线程模块教程(1-12课)
- android 壁纸存储位置,手机图片去了哪?教你理清照片存放路径(全文)
- 【Asan】工欲善其事必先利其器——AddressSanitizer
- (2010计本3班-杨蒙)面向对象的C--实现链表操作
- 局域网电脑设置固定ip
- 软件包 jdk1.8-2000:1.8.0_281-fcs.aarch64 是针对 different 构架的
- 最小割与最大流(mincut amp; maxflow)
- AFNetworking
- 函数式编程-纯函数篇
- android框架服务 恶意软件,Android平台各类恶意软件及病毒概览
- 【rmzt:火影忍者佩恩动漫主题】
热门文章
- 程序员(工作2年)立flag,面四家,成三家,最后进了蚂蚁.....
- java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
- 用gradle启动java项目_构建Java项目
- fb静态区域_fb 静态数据
- html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径
- java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
- 39. 组合总和020(思路+详解)
- vector的求和用法accumulate
- mysql脚本的制作_制作脚本实现mysql自动备份
- C++ 多态实现的三个条件