首页 > 其他分享 >杂题记 2

杂题记 2

时间:2023-10-18 23:12:30浏览次数:48  
标签:倍增 xor int text texttt 题记 gets

写在前面:题目难度高,大部分题个人认为的实际难度不低于洛谷的紫题。

\(\color{lightblue}{\texttt{CF1848F. Vika and Wiki}}\)

\(\text{link}\) 。提示:考虑第 \(i\) 次会变成啥。

$\texttt{solution}$

下边设 \(a_k\) 为实际中的 \(a_{k\bmod n}\)。首先根据样例猜测一定有解。

按照提示,注意到第 \(1\) 次 \(a_i\gets a_i\ \text{xor}\ a_{i+1}\),第二次 \(a_i\gets a_i\ \text{xor}\ a_{i+1}\ \text{xor}\ a_{i+1}\ \text{xor}\ a_{i+2}=a_i\ \text{xor}\ a_{i+2}\)。

但是第三次似乎没啥规律?这时注意到可以倍增,第 \(2^k\) 次 \(a_i\gets a_i\ \text{xor}\ a_{i+2^k}\)。于是 \(k=\log_2n\) 一定是一个解。但是要求最小解。

由于我们可以快速求每 \(2^k\) 次操作数组会变成啥,直接倍增即可,类似倍增 \(\text{lca}\) 求出最大的不变为全 \(0\) 的操作数,最后 \(+1\) 即可。

$\texttt{code}$
#include<bits/stdc++.h>
#define LL long long
#define fr(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=1<<20|5;
int n,a[N],b[N],ans;
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	if(!*max_element(a,a+n)) return cout<<0,0;
	for(int i=n/2;i;i>>=1)
	{
		for(int j=0;j<n;j++) b[j]=a[j];
		for(int j=0;j<n;j++) b[j]^=a[(j+i)&(n-1)];
		if(*max_element(b,b+n)){ans+=i;for(int j=0;j<n;j++) a[j]=b[j];}
	}
	return cout<<ans+1,0;
}

标签:倍增,xor,int,text,texttt,题记,gets
From: https://www.cnblogs.com/HaHeHyt/p/17773631.html

相关文章

  • 【问题记录】自定义注解处理程序 AbstractProcessor,总是提示版本不匹配
    1  前言最近在看注解处理程序,自己写一个 AbstractProcessor,发现有个莫名的提示:2 解决加上支持的版本即可,唉,折腾人。......
  • react native app 图标在安卓上内容被切割问题记录
    问题背景:reactnative开发app,设置的app图标在安卓中会被切割,导致周围的留白被切掉,看起来很奇怪。甚至有些文字内容被切割掉,显示不全。在不同手机上,icon可能会被切割成各种圆角,如果留白不够,内容可能会被切割。在iOS上icon也有相应的规范,比如需要1024尺寸等。解决方法:在查找......
  • 做题记录
    TwoMissingNumbersSourceThe2ndUniversalCup.Stage5:Northern-ProblemDStatement通信题。有一个长度为\(n\)的序列\(a\(0\lea_i<2^{64})\),满足其中恰好两种数出现次数为\(1\),其余数字出现次数为\(2\)。该序列被任意分成两半,分两次喂给你的程序。第一次运......
  • 造题记录:如何出强制在线题
    今天造了一个数据结构题,具体题面是什么就不说了,题目名称是sosomst。输入格式是,第一行\(n,typ\),接下来两行的点权,然后是一棵树。输出\(n-1\)行的数字,树边强制在线。以下是我生成这题数据的方法。std.cpp肯定是自己写了,但是先不要实现强制在线。将std.cpp编译为可执行文件......
  • 2023.10.14 做题记录
    2023.10.14做题记录P5595歌唱比赛一个非常简单的贪心。先判断什么时候是-1,将字符串从头开始往后遍历,Z的右边不能有X,Y,如果有则直接输出-1。因为是SPJ,如果该字符串有答案的话,倒着看,字母是谁的就随便给一个大的数,如果是\(X\),则小\(X\)的数为\(5\),小\(Y\)的数为\(4\),......
  • Huawei模拟器的一些问题记录
    1.每次更改配置弹出的命令,使用该命令进行屏蔽。2.进入系统模式system-view命令:<Huawei>--->[Huawei]3.ctrl+z后退出后才能进行save命令4.展示命令:displayportvlandisplayvlan......
  • 2020,2021 年 CF 简单题精选 做题记录
    2023.10.12开坑,打了几场div.2之后一直觉得这方面水平差太多,今天刚好在洛谷看到这个题单就准备开始做了,里面从黄到黑都有,我会尽量都做,并在这里记录。总共49题,我可能平时有时间就做一两题,估计是个长期坑了((。题单链接[Y]表示独立完成,[N]表示看题解之后完成。......
  • 20230921 做题记录
    20230921做题记录目录20230921做题记录总结1P2863[USACO06JAN]TheCowPromS2P2746[USACO5.3]校园网NetworkofSchools3P1407[国家集训队]稳定婚姻4P1072[NOIP2009提高组]Hankson的趣味题总结总计完成\(3+4\)题上午校内练习赛,下午改了上午的题,晚上继续......
  • 问题记录:Unity部分Sprite跳跃移动
    问题展示这个图片中,可以发现巴郡两个字的移动和其他图片不一致。表面原因是因为这个两个图片资产的filtermode为point导致的,其他图片资产为bilinear。解决方案未知。......
  • 问题记录贴:vue-i18n在弹出框中$t()报错:TypeError: Cannot read property '_t' of unde
    网上有用的解决方法:vue国际化在弹出框中$t()报错:TypeError:Cannotreadproperty'_t'ofundefined大佬给出的解决方法:弹窗是一个新的Vue对象,只需要单独给弹窗重新绑定i18n即可。代码://dialog/main.jsimportcustomDialogfrom'./dialog.vue'importi18nfrom'@/i18n'......