首页 > 其他分享 >cf1582F2. Korney Korneevich and XOR (hard version)(暴力优化)

cf1582F2. Korney Korneevich and XOR (hard version)(暴力优化)

时间:2023-11-06 19:55:07浏览次数:44  
标签:XOR int hard vis ai version fo include define

cf1582F2

对于每种数可以维护一个列表v[x],表示到当前位置,最后一个数小于等于x,能够取到的值,对于当前的数ai,我们可以用v[ai]中的值x与ai异或,来更新v[ai+1],v[ai+2]后面的值。

然后就是有两个优化,每次我们更新完后,都对v[a[i]]清空,因为只有两个相同数之间的数才对后面可能有贡献,前面的已经由前面一个转移完了。

第二个是一个数x假如转移到了v[y],那么也一定转移到了v[y+1],v[y+2],我们可以记录下来。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<vector>
#include<set>
#include<ctime>
#include<unordered_map>
#include<queue>
#include<bitset>
#define A puts("YES")
#define B puts("NO")
#define fo(i,a,b) for (int (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define eb(x) .emplace_back(x)
#define lc (o<<1)
#define rc (o<<1|1)
using namespace std;
//typedef __int128 i128;
typedef double db;
typedef long long ll;
const ll mo=1e9+7;
const int N=1e6+5;
const int M=1<<13;
vector<int> v[M+5];
int r[M+5],n,x;
int vis[M+5];
int main()
{
//	freopen("data.in","r",stdin);
//	freopen("data.out","w",stdout);

	fo(i,1,M) r[i]=M+1;
	 
	r[0]=0;
	fo(i,1,M) v[i].push_back(0);
	vis[0]=1;
	
	scanf("%d",&n);
	fo(i,1,n) {
		scanf("%d",&x);
		vis[x]=1;
		v[x].emplace_back(x);
		for (int y:v[x]) {
			vis[y^x]=1;
			while (r[y^x]>x) {
				v[r[y^x]].push_back(x^y);
				r[y^x]--;
			}
		}
		v[x].clear();
	}
	
	int ans=0;
	fo(i,0,M) if (vis[i]) ans++;
	printf("%d\n",ans);
	fo(i,0,M) if (vis[i]) printf("%d ",i);
	
	return 0;
}

 
 

标签:XOR,int,hard,vis,ai,version,fo,include,define
From: https://www.cnblogs.com/ganking/p/17813571.html

相关文章

  • cf1709E. XOR Tree(启发式合并入门)
    cf1709E.XORTree贪心是显然的,关键是如何合并两棵子树的信息,可以采用启发式合并。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<vector>#include<set>#include<ctime>#include<unordered_ma......
  • version `GLIBC_2.34' not found (required by ./rmblastn)
     001、问题如下: 002、解决方法:    003、 参考:01、 ......
  • Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction
    题目链接题意给你\(n-1\)个整数\(a_1,a_2,\dots,a_{n-1}\)。你的任务是构造一个数组\(b_1,b_2,\dots,b_n\),使得:从\(0\)到\(n-1\)的每个整数都在\(b\)中出现一次;对于从\(1\)到\(n-1\)的每个\(i\),\(b_i\oplusb_{i+1}=a_i\)(其中\(\oplus\)表示......
  • [ARC122D] XOR Game
    ProblemStatementThereare$2N$integerswrittenonablackboard.The$i$-thintegeris$A_i$.AliceandBobwillplayagameconsistingof$N$rounds.Ineachround,theydothefollowing:First,Alicechoosesanintegerontheblackboardanderasesit.......
  • CF1868B2 Candy Party (Hard Version) 题解
    Problem-1868B2-CodeforcesCandyParty(HardVersion)-洛谷相信大家已经看过SimpleVersion,这题和上题不同之处就在于如果\(b_i=2^x\),他可以被分解成\(2^x\)或\(2^{x+1}-2^x\),我们不妨起初固定一种方案,如果不满足条件后再把一部分换回去。我们强制钦定起......
  • Syntax Error: Error: Node Sass version 8.0.0 is incompatible with ^4.0.0.
    依赖关系如图: 如果报如题这个错误,并且按照上面node-sass官网的依赖关系依赖对了node版本还不行,那么,请删除node-sassnpmuninstallnode-sass然后执行npmisass--save-dev然后运行项目,如果出现类似图片中的错误时,别慌,把所有的/deep/更换成::v-deepSyntaxError:Sa......
  • CF1868B1 Candy Party (Easy Version) 题解
    Problem-1868B1-CodeforcesCandyParty(EasyVersion)-洛谷喵喵题。首先每个数最终肯定变成\(\overlinea\),如果\(\overlinea\)不是整数显然无解。然后记\(b_i=a_i-\overlinea\)表示每个数的偏差量,那\(b_i\)要满足能写成\(2^x-2^y\)的形式然后只需要......
  • nvidia-smi Failed to initialize NVML: Driver/library version mismatch
    nvidia-smiFailedtoinitializeNVML:Driver/libraryversionmismatch原因:NVIDIA内核驱动版本与系统驱动不一致, #sudormmodnvidiarmmod:ERROR:Modulenvidiaisinuseby:nvidia_modesetnvidia_uvm首先要知道现在kernelmod的依赖情况,首先我们从错误信息中知道,nvidi......
  • 《CF1889C2 Doremy's Drying Plan (Hard Version)》 解题报告
    考场上不会做。如果考虑删掉哪些区间实际上不太可做。正难则反,转化贡献,考虑哪些点可以有贡献。显然一个点如果可能有贡献,那么当且仅当覆盖它的区间\(\leK\)个。于是我们记一个状态\(f_{i,j}\)表示前\(i\)个点中,\(i\)是最后一个贡献的点,已经删除了\(j\)段区间了。......
  • Redis通过复制rdb文件方式同步线上数据到本地以及提示:Can't handle RDB format versi
    场景Redis的持久化机制-RDB方式和AOF方式:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105052841Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130237326以上对于redis持久化......