Codeforces 1054D Changing Array


做法:给定一个序列,每个数可以把在2进制k位下取反,也可以不变,在改变后,这个序列异或和不为0的区间的个数。考虑如何求出尽可能少的异或为0的序列,对序列求前缀之后,就相当与问这个前缀的序列中,有多少对的值相同,注意还有开始的0。那么对于所有数取值为min(a,~a),现在我们需要最小化,更新后同一种数中出现的相同的数对的个数,即\(C(a,2) + C(w-a,2)\),w是这种数的个数,a是取反的数的个数,当\(a = \frac{w}{2}\)时,答案最小,对于每一种都计算即可。

#include <bits/stdc++.h>
typedef long long ll;
const int N = 2e5 + 7;
using namespace std;
int n, k, lim, a[N];
map<int,int> M;
ll C(ll x) { return x*(x-1LL)>>1LL; }
int main() {scanf("%d%d",&n,&k);lim = (1ll<<k) - 1ll;for(int i = 1; i <= n; ++i) scanf("%d",&a[i]);for(int i = 2; i <= n; ++i) a[i] ^= a[i-1];for(int i = 0; i <= n; ++i) a[i] = min(a[i], lim-a[i]), ++M[a[i]];ll ans = C(n+1);for(map<int,int>::iterator it = M.begin(); it != M.end(); ++it) {int w = (*it).second;ans -= C( w>>1 ) + C( w - (w>>1) );}printf("%lld\n", ans);return 0;
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9902824.html

Codeforces 1054D Changing Array相关推荐

  1. CodeForces - 1610B Kalindrome Array

    B. Kalindrome Array time limit per test1 second memory limit per test256 megabytes An array [b1,b2,- ...

  2. codeforces EDU suffix array

    本文以codeforces EDU suffix array为资料 content introdcution suffix array height array lcp problems & ...

  3. [codeforces 1343B] Balanced Array 奇+奇=偶,奇+偶=奇,偶+偶=偶

    Codeforces Round #636 (Div. 3)   比赛人数12253 [codeforces 1343B]   Balanced Array   奇+奇=偶,奇+偶=奇,偶+偶=偶 总 ...

  4. CodeForces - 1593G Changing Brackets(思维)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的括号序列,其中包含了 {(,),[,]}\{(,),[,]\}{(,),[,]} 四种括号,现在可以进行两种操作: 将括号反转,代价为 000, ...

  5. CodeForces - 1539F Strange Array(线段树区间合并)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...

  6. CodeForces - 1534E Lost Array(bfs+交互)

    题目链接:点击查看 题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和 题目分析:因为是异或,我们只关心每个位置被询问的次数 ...

  7. codeforces 1367B - Even Array

    B. Even Array time limit per test2 seconds memory limit per test256 megabytes inputstandard input ou ...

  8. 【Codeforces】808D Array Division(前后两部分和相等)

    http://codeforces.com/contest/808/problem/D 给你一个数组,问:是否可以通过移动一个数字的位置,求只能移动一次,使得这个数组前后部分的和相等,前后部分不一定等 ...

  9. Codeforces 494D Upgrading Array

    http://codeforces.com/contest/494/problem/D 题意:给一个数组,和一个坏质数集合,可以无数次地让1到i这些所有数字除以他们的gcd,然后要求Σf(a[i])的 ...

最新文章

  1. 约瑟夫环(约瑟夫问题)求最后出列的人数
  2. 区块链实践(一) 以太坊网络+geth搭建私有网络实战
  3. python读取文件类型_python准确判断文件类型
  4. linux安装crontab软件包,Linux 服务器 Crontab 的安装及使用
  5. Python3教程Web开发实战梳理-day7(看着不错)
  6. 首届“开悟AI+游戏高校大赛”启动
  7. volecity引入html,HTML5 Velocity.js 从页面下方跳入页面的登录框
  8. gitlab与已安装nginx(tengine)冲突解决方案,使用自己安装的nginx(tengine)
  9. zookeeper中展示所有节点_zookeeper工作原理与节点使用
  10. python将字典写入csv_Python如何把字典写入到CSV文件的方法示例
  11. 超分20220225讨论
  12. 矩阵论7,8,9作业
  13. 2.Zigbee串口发送
  14. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(3)(总分100分)
  15. 萌新扫盲2—双绞线的“一百米诅咒”
  16. AIOT在数字化转型中的机遇和挑战
  17. UE4超过20万个动画角色的优化实战
  18. 【论文精读】Deep Defocus Map Estimation using Domain Adaptation-2019CVPR
  19. 加强化工企业危化品管理的几点建议
  20. Linux服务器Redis 6.x安装、配置

热门文章

  1. 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
  2. Leetcode 数据结构与算法题解大全——目录(推荐收藏,持续更新)
  3. 字符串匹配经典题目——KMP算法(Leetcode题解-Python语言)
  4. [Java基础]函数式接口
  5. [剑指offer]面试题10:二进制中1的个数
  6. 《C++ Primer》2.1.2节练习
  7. Zookeeper理解---ZAB协议
  8. 统计学习方法 pdf_机器学习基础教材-《统计学习与数据分析介绍》免费pdf分享...
  9. 请求分页算法 Python实现
  10. 数据库事务及隔离级别