首页 > 其他分享 >IOI 2015 中国国家队清华集训 Day 1 (CTT 2014) 玛里苟斯

IOI 2015 中国国家队清华集训 Day 1 (CTT 2014) 玛里苟斯

时间:2024-12-22 16:52:44浏览次数:3  
标签:CTT int ll 中国国家队 llu 苟斯 printf using void

题意

给定可重集,求其子集的异或的 \(k\) 次方和的期望。

$ |s| <= 10^5 , k \le 5 , 保证答案小于 2^{63} $。

分析

当 \(k=1\) 时,拆位算贡献即可。

当 \(k=2\) 时,同时考虑两位即可。

当 \(k \ge 3\),拆位不好计算,因为答案有上界 \(2^{63}\),所以 \(a_i<2^{21}\)。

断言:每种异或和出现次数相等。

考虑 \(A=\oplus a,B=\oplus b\) 其出现次数,设 \(C=A \oplus B\),对于每一个 \(X=A\) 都有与之对应的 \(Y=C^X\) 对应,得证。

构造线性基,暴力枚举子集计算答案即可,\(O(2^size)\)。

代码

#include <bits/stdc++.h>
#define lb(x) (x&-x)
using namespace std;
using ll=unsigned long long;
using LL=__int128;
using pii=pair<int,int>;
const int N=1e5+5;
ll n,k,v,a[N],p[21],c,t[21];
inline LL P(LL s,ll k){ return s*s*s*(k&4?k&1?s*s:s:1); }
void solve0(){
	for(int i=1;i<=n;i++)
		for(int j=20;~j;j--)
			if(a[i]>>j&1)
				if(!p[j]){ p[j]=a[i]; break; }
				else a[i]^=p[j];
	for(int i=20;~i;i--) p[i]?t[c++]=p[i]:0;
	__int128 w=0;
	for(int i=0;i<(1<<c);i++){
		ll s=0; for(int j=0;j<c;j++)
			if(i>>j&1) s^=t[j]; w+=P(s,k);
	} (w>>=c-1)&1?printf("%llu.5",w>>1):printf("%llu",w>>1);
}
void solve1(){ v&1?printf("%llu.5",v>>1):printf("%llu",v>>1); }
void solve2(){ ll s=0;
	for(int i=0;i<32;i++)
		for(int j=i+1;j<32;j++)
			if((v>>i&1)&&(v>>j&1))
				s+=1ll<<i+j;
	v&1?printf("%llu.5",(v>>1)+s):printf("%llu",(v>>1)+s);
}
int main(){
	scanf("%llu%llu",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%llu",a+i),v|=a[i];
	if(k==1) solve1();
	else if(k==2) solve2();
	else solve0(); return 0;
}

标签:CTT,int,ll,中国国家队,llu,苟斯,printf,using,void
From: https://www.cnblogs.com/Yui-Hirasawa/p/18622259

相关文章

  • [BZOJ3811] 玛里苟斯 题解
    不得不说这题的确挺苟的。注:下述“引理”表示:对于长度为\(n\)的数组\(V\),其线性基为\(B\),定义\(c_v=\bigoplus\limits_{a\inv}a\),\(num_k=\sum\limits_{v\subseteqV}[c_v=k]\),则\(\forallk\in\mathbb{N},num_k\in\{0,2^{n-|B|}\}\)。对于\(k=1\)的情况,容易想到按......
  • Public CTT Round #2 Day 1
    赤橙黄绿不妨假设\(n\leqm\)。不妨先考虑\(n\not=m\)的情况,此时\(X\in[1,n+m-1]\)。对于\(X\leqm\),下界为\(X\),上界为\((X-1)n+1\),下界的取到的构造是在一行填\(X\)个,上界的取到的构造是对于每个数\(i<X\),选择一个之前没有出现过的\(k\),填\((j,j+k)\)对于所有......
  • ORB-SLAM2 ---- ORBextractor::ComputeKeyPointsOctTree
    文章目录一、函数作用二、源码及注释三、函数的讲解1.遍历金字塔的每一层,将其分成30*30的网格单元,并给每一层添加图像边界2.遍历每个单元格,提取特征点3.调用DistributeOctTree()函数分配特征点4.计算所有保留下来的特征点的方向信息一、函数作用ORB-SLAM2----......
  • uni-app中 navigateTo、reLaunch、redirectTo、switchTab几种页面路由方式的区别
    navigateTo作用:用于在当前页面内跳转到应用内的某个页面,使用wx.navigateTo跳转时,会把当前页面压入栈中,用户可以通过返回按钮或navigateBack 回到上一个页面。限制:不能跳转到tabBar页面。如果尝试跳转到tabBar页面,会没有反应或报错(具体取决于框架的实现)。使用场景:通常用......
  • Camstar电子套件CTT导入基础资料
    1、安装CTT 2、双击打开,并打开执行的文件OpentheOpcenterExecutionCoreTransactionTester.SelectFile>OpenandnavigatetothelocationoftheES_InitialConfigurationLoad.cfgscriptfile,locatedbydefaultin:\AdministrationTools\Scripts\Common.......
  • 【已解决】Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.
    一、问题描述Invalidvaluetypeforattribute‘factoryBeanObjectType‘:java.lang.String二、解决方案更新本地的Mybatisplus版本<dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-spring-boot3-starter</artifactId> ......
  • CTT2021
    D1T1末日魔法少女计划知识点:DP求构造,\(B\)叉树。感觉最近见到好多用DP来求最优构造的题目。可以将\(A_{i,j}=1\)看作拥有区间信息\([i,j)\),要求构造最少的区间信息,使得任何区间\([l,r)\)都可以被最多\(k\)个已知区间的加和表示。考虑\(k=2\)的时候,就是要构建猫......
  • 2024年6G通信与太赫兹技术世界研讨会(6GCTT 2024) 2024 World Symposium on 6G Communic
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年8月23-25日,西安三、大会介绍随着互联网和物联网科技的高速发展,6G通......
  • LLM-文心一言:connectTimeout , readTimeout
    在网络编程和HTTP客户端库(如ApacheHttpClient、OkHttp、Retrofit等)中,connectTimeout和readTimeout是两个重要的超时设置,它们用于控制网络请求的行为,以提高应用的健壮性和用户体验。connectTimeout(连接超时)connectTimeout指的是客户端尝试与服务器建立TCP连接时等待的最长时......
  • SelectToken的使用
    SelectToken是Json.NET(现在通常称为Newtonsoft.Json)库中的一个非常有用的方法,它允许你以JSONPath的形式查询JSON对象或数组,从而获取到你感兴趣的部分。JSONPath是一种类似于XPath的查询语言,用于从JSON文档中抽取信息。使用方法当你有一个JObject或JArray(或任何实......