首页 > 其他分享 >2024.2.27模拟赛T2题解

2024.2.27模拟赛T2题解

时间:2024-02-27 22:02:01浏览次数:25  
标签:2024.2 27 int 题解 sum tot ch ans c1

题目

有一个神奇的结论 \(\forall a<b<c , a \oplus c > min(a \oplus b,b \oplus c)\)

然后就可以写出 \(n^2\) dp,再用TRIE树优化即可

code

#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define int long long
int n,k1,k2;
int a[N],fl[2];
const int mod=1e9+7;
void mo(int &x){
	if(x>=mod) x-=mod;
}
struct TRIE{
	int tot;
	int ch[N*60][2],sum[N*60];
	TRIE(){tot=1;memset(ch,0,sizeof(ch));}
	void clear(){
		while(tot) ch[tot][0]=ch[tot][1]=sum[tot]=0,tot--;
		tot=1;
	}
	void ins(int x,int y){
		int p=1;sum[1]+=y;
		for(int i=59;i>=0;i--){
			int c=(x>>i)&1;
			if(!ch[p][c]) ch[p][c]=++tot;
			p=ch[p][c],sum[p]+=y,mo(sum[p]);
		}
	}
	int find(int x,int y){
		int p=1,ans=0;
		for(int i=59;i>=0;i--){
			int c1=(x>>i)&1,c2=(y>>i)&1;
			if(!c2) ans+=sum[ch[p][c1^1]],mo(ans),p=ch[p][c1];
			else p=ch[p][c1^1];
		}
		return ans+sum[p];
	}
}T[2];
signed main(){
	//freopen("sabzeruz5.in","r",stdin);
	scanf("%lld%lld%lld",&n,&k1,&k2);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	sort(a+1,a+1+n);
	fl[0]=fl[1]=1;
	for(int i=2;i<=n;i++){
		int cnt0=T[1].find(a[i],k1);
		int cnt1=T[0].find(a[i],k2);
		//printf("%lld %lld\n",cnt0,cnt1);
		if((a[i]^a[i-1])<k1) T[0].clear();
		if((a[i]^a[i-1])<k2) T[1].clear();
		T[0].ins(a[i-1],cnt0),T[1].ins(a[i-1],cnt1);
		T[0].ins(a[i-1],fl[1]);T[1].ins(a[i-1],fl[0]);
		if((a[i]^a[i-1])<k1) fl[0]=0;
		if((a[i]^a[i-1])<k2) fl[1]=0;
	}
	printf("%lld\n",(T[0].sum[1]+T[1].sum[1])%mod);
	return 0;
}

标签:2024.2,27,int,题解,sum,tot,ch,ans,c1
From: https://www.cnblogs.com/hubingshan/p/18038500

相关文章

  • CF1392I Kevin and Grid 题解
    题目传送门\(\large\textbf{Statement.}\)给定两个序列\(a,b\),有一个\(n\timesm\)的网格图,每个点\((i,j)\)上有个权值\(a_i+b_j\),每个点和其上、下、左、右方相邻的点有连边。多次询问,每次给一个阈值\(x\),将图分为权值\(<x\)(蓝色)和\(\gex\)(红色)的两种连通块。一......
  • test2024.2.23
    圣诞树题意:用\(m\)种颜色的彩球装点\(n\)层的圣诞树。圣诞树的第\(i\)层恰由\(l_{i}\)个彩球串成一行,且同一层内的相邻彩球颜色不同,同时相邻两层所使用彩球的颜色集合不同。求有多少种装点方案。\(n,m\le10^6,1\lel_{i}\le3\times10^3,\suml_{i}\le10^7\)。......
  • P10084 [GDKOI2024 提高组] 计算 题解
    题目传送门前置知识:单位根反演先考虑怎么求\(F(x,a,b)\),易得\(\gcd(x^a-1,x^b-1)=x^{\gcd(a,b)}-1\)。所以\(L=m^{\gcd(a,b)}+1,R=m^{\gcd(c,d)}\),然后发现\([L,R]\)中的数模\(m\)后每种余数出现次数相同,下面记其为\(n=\frac{R-L}{m}\)。考虑用生成函数做,易得答案为......
  • [ABC331G] Collect Them All 题解
    洛谷传送门AT传送门\(\textbf{Statement.}\)有\(M\)种颜色,用\(1\simM\)编号,每次抽奖抽中第\(i\)种颜色的概率为\(\frac{c_i}{N}\),其中\(\sumc_i=N\),求抽中每种颜色至少一次的期望次数。\(1\leM\leN\le2\times10^5\)。\(\textbf{Solution.}\)发现直接求不好......
  • [ARC087F] Squirrel Migration 题解
    洛谷题面AT题面如果两条路径不存在交点,则两条路径各选一个端点交换后两路径相交,答案不会变劣。考虑所有路径两两相交的情况,因为图是一棵树,所以这些路径会交于一点。以这个点为根,那么最大的子树大小一定不超过\(\fracn2\),所以这个点是树的重心,每条路径的端点一定在两个不......
  • 个人题解:2024 年湖北省省队选拔集训暨能力测试 第一试
    时与风对每条边进行BFS。二维偏序部分用vector存一下就行了。花神诞日引理:对于\(a<b<c\),\(\min(a\text{XOR}b,b\text{XOR}c)\leqa\text{XOR}c\)。证明:考虑比较\(a,c\)二进制下第一位不同,也就是\(a=(X0\dots)_{(2)},c=(X1\dots)_{2}\)。因为\(b\in(a,c)\)所以......
  • 2.27
    文化课考的最烂的一次。直升应该是选不上了,省选也打不了体验名额,所以我初三下学期直接奥赛摆了,一周来一两次就行了,还是中考更重要一些。来的时候遇到了喵喵,向他问了一些问题,他说我想停课也没问题,大概是指像直升的人一样的安排?但是我有那个资本吗?我文化课也不是很强足以支持我在......
  • 2.27 闲话 & solution 『你是太阳神倾倒而下美酒的甜香/是最高的永恒破碎之后的希望』
    考完试了,我想听歌写了几道LCT,但是都是板子我想听歌Cave洞穴勘测LCT板子啊,直接乱搞就行对于Connect操作和Destroy操作其实是Link和Cut的板子至于Query操作么...阿拉阿拉,直接对(u,v)都进行一次Find,然后判断是否相等即可核心代码就那么几行intn,m;FastI>>n>>m;while(m--......
  • CSP-S 2023 题解
    T1一开始所有密码都没被标记。对于每个输入的状态枚举一遍所有没标记的密码,判断是否可能是正确密码,如果不行就标记一下。最后输出没被标记的密码个数。总共只有\(10^5\)个密码,可以轻松通过。难度:橙。T2见CF1223FStackExterminableArrays题解。难度:蓝。T3大模拟,直......
  • 2.27
    今天上课进行了计算机网络和软件工程的课程.在上午的计算机网络的课程中我们学习了关于网络的历史和一些基本知识.像互联网之父,万维网,还有就是观看了一个关于万维网之父的在伦敦奥运会开幕式上的视频.知道了中国接入互联网的时间.1994年.在那之后一些互联网企业开始出现,像小米......