首页 > 其他分享 >AT_abc295_d

AT_abc295_d

时间:2024-01-20 18:12:16浏览次数:26  
标签:cnt int long 异或 len abc295

很显然,满足条件的子段的异或和均为 \(0\)(因为每个数都出现了偶数次,而两个相同的数的异或值为 \(0\))。问题转化为求异或和为 \(0\) 的子段的个数。

不难想到,可以从前往后扫一遍,并且计算异或和,可以得出起点为 \(1\) 且满足条件的子段。那么如何计算中间的子段数量?有如下可行的方案:计算异或和并不是直接异或本身 \(a_i\),而是异或 \(2^{a_i}\)(把每个数的状态用二进制表示,不同数字的位置是唯一的,效率高),然后令答案加上当前异或和在前面出现的次数即可(异或和不变,则说明中间一段的异或和为 \(0\),为符合要求的子段)。

具体实现见代码:

#include <iostream>
#include <cstdio>
#define int long long

using namespace std;

int cnt[1000001],len,ans,k,d;

signed main()
{
	cnt[0] = 1;
	string s;
	cin >> s;
	len = s.size();
	for( int i = 0 ; i < len ; i ++ )
	{
		k = s[i] - '0';
		k = 1 << k;//等同于 2^k
		d ^= k;
		ans += cnt[d];
		cnt[d] ++;
	}
	cout << ans;
	return 0;
}

标签:cnt,int,long,异或,len,abc295
From: https://www.cnblogs.com/-lilong-/p/17976895

相关文章

  • AT_abc295_c
    题意\(n\)个袜子,每个袜子有一个颜色,如果有两个袜子的颜色相同,则可以把它们配成一对袜子。求一共能配成多少对袜子。思路看到颜色值域\(1\lea_i\le10^9\),用普通的数组存不下。可以考虑对序列\(a\)排序,求出相同颜色袜子的数量\(k\),则可以产生\(\left\lfloor\dfrac{k}{2......
  • AtCoder ABC295 D - Three Days Ago
    AtCoderABC295D-ThreeDaysAgo题目描述给出一个数字串,问有多少子段满足,可以以某种方式将这个子段重排,将子段分成两个完全相同的部分。样例输入输出202303224\((1,6)(1,8)(2,7)(7,8)\)都可以满足条件分析如果要满足某一个字段可以被分为两个相同的部分,则不......
  • ABC295(D~G)
    Tasks-AtCoderBeginnerContest295这篇是超级抽象的简要tj,看不懂不要骂我这个蒟蒻QWQD-ThreeDaysAgo(atcoder.jp)\(f_i\)表示\([1,i]\)的所有数的奇偶情况,如果\(b\)有奇数个,那么\(f_i|=2^b\),特别的,\(f_0=0\),答案就是\(\sum\limits_{i=1}^n\sum\limits_{j=0}^{i-1}......
  • ABC295 E
    ABC295E给你一个长度为\(N\)的序列\(A\)满足\(\foralli\in[1,N],A_i\in[0,M]\),其中\(M\)是一个给定的常数执行以下两种操作不断把序列中的一个\(0\)换成在\([1,M]\)中均匀随机的一个数,直到序列中没有\(0\)对整个序列升序排序求序列第\(K\)个数的期望值,对......
  • abc295-G
    题目链接:https://atcoder.jp/contests/abc295/tasks/abc295_g题目意思:给你一颗以1为根的有向树,询问有两种情况:    第一种询问是在u,v中加一条边,保证v是可以到u的。......
  • abc295-E
    题目链接:https://atcoder.jp/contests/abc295/tasks/abc295_e一道数学好题,做完后深受启发。思路:设\(A_k\)处的值为\(x\),则答案为:\(E(x)=\Sigma_1^mi*p(x=i)=1*p(x......
  • 【题解】Atcoder ABC295 A-G
    A.ProbablyEnglish题目分析:直接每一个单词判一下就好了。代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn;scanf("%d",&n); bo......
  • [ABC295Ex] E or m 题解
    状压dp,2hd4me/ng。题意开始你有一个全\(0\)矩阵,你可以随意执行如下操作:选择任意一行,将其从最左端开始的连续一段染成\(1\)。选择任意一列,将其从最上端开始的连......
  • AT_abc295_d 题解
    一、题目描述:给你一个由数字0~9组成的字符串,长度为N(1<=N<=500000)。求出满足1<=l<=r<=N且在l~r区间内所有数字都出现了偶数次的整数对l,r有多少对。......
  • ABC295 D题 题解
    题意简述给定一个长度不超过\(5\times10^5\)的,仅有数字构成的字符串,问存在多少段子串,使得子串内字符重新排序后,前半段与后半段相同?做法分析重组后前后两部分相同,其实也......