首页 > 其他分享 >一个出的题

一个出的题

时间:2023-09-05 20:35:45浏览次数:25  
标签:wedge val 一个 sum int l2 mp

T20
题意:在\(2^{k+1}\) 个\([0,4^{k})\)内的整数,请求出任意两个不交非空区间使得其异或和相等,无解输出\(-1\)
考虑生日悖论,每次随机一个区间,给他插进 map 里面,
期望随机根号值域级别(也就是 \(2^{k}\)),就会出现相同的异或和
部分小数据随机化效果不好,考虑暴力
code

#include<bits/stdc++.h>
#include<random>
#define endl "\n"
#define pii pair<int,int>
#define mk make_pair
#define int long long
using namespace std;
int inline read() {
	int ans=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-')
		f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		ans=ans*10+ch-'0';
		ch=getchar();
	}
	return ans*f;
}
mt19937 rnd(19260817);
int rad(int x,int y){
	return rnd()%(y-x+1)+x;
}
int n,m,k;
const int N=1e6+5;
int a[N],sum[N];
map<int,pii > mp;
int main() {
	int T;
	cin>>T;
	srand(19260817);
	while(T--)
	{
		cin>>k;
		for(int i=1;i<=(1<<(k+1));i++)
		a[i]=read();
		for(int i=1;i<=(1<<(k+1));i++)
		sum[i]=sum[i-1]^a[i];
		if(k==0)
		{
			cout<<"1 1 2 2\n";
			continue;
		}
		if(k==1)
		{
			for(int l1=1;l1<=3;l1++)
			for(int r1=l1;r1<=3;r1++)
			for(int l2=r1+1;l2<=4;l2++)
			for(int r2=l2;r2<=4;r2++)
			if( ① )
			{
				cout<<l1<<" "<<r1<<" "<<l2<<' '<<r2<<endl;
				goto q123;
			}
			q123:
				continue;
		}
		mp.clear();
		int flg=0;
		while(1)
		{
			int l=rad(0,(1<<(k+1))),r=rad(0,(1<<(k+1)));
			if(l==r) continue;
		        if(l>r) swap(l,r);
                        int val= ② ;
			if(mp.find(val)==mp.end()) mp[val]=③;
			else if(mp.find(val)!=mp.end()&&mp[val].first!=l&&mp[val].second!=r)
			{
				int l1=l+1,r1=r;
                                int ④
				if(l1>l2) swap(l1,l2),swap(r1,r2);
				if(l2>r1) cout<<l1<<" "<<r1<<" "<<l2<<' '<<r2<<endl;
				else if(r2<r1) ⑤
				else cout<<l1<<' '<<l2-1<<' '<<r1+1<<" "<<r2<<endl;
				break;
			}
			flg++;
			if(flg>=(1<<(k+5)))
			{
				puts("-1");
				break;
			}
		}
	}
	return 0;
}

程序中①~⑤应该填写:
1.
\(A.(sum[l1]\wedge sum[r1])==(sum[l2]\wedge sum[r2])\)

\(B.(sum[l1]\wedge sum[r1+1])==(sum[l2]\wedge sum[r2+1])\)

\(C.(sum[l1-1]\wedge sum[r1])==(sum[l2-1]\wedge sum[r2])\)

\(D.(sum[l1-1]\wedge sum[r1+1])==(sum[l2-1]\wedge sum[r2+1])\)

\(A.mp.find(sum[r]\wedge sum[l]) == mp.end()\)

\(B.mp.find(sum[r]\wedge sum[l-1]) == mp.end()\)

\(C.mp.find(sum[r+1]\wedge sum[l]) == mp.end()\)

\(D.mp.find(sum[r+1]\wedge sum[l-1]) == mp.end()\)

\(A.mk(l,r)\)

\(B.mk(l-1,r)\)

\(C.mk(l,r+1)\)

\(D.mk(l-1,r+1)\)

\(A.l2=mp[val].first,r2=mp[val].second;\)

\(B.l2=mp[val].first,r2=mp[val].second-1;\)

\(C.l2=mp[val].first+1,r2=mp[val].second-1;\)

\(D.l2=mp[val].first+1,r2=mp[val].second;\)

\(A.cout<<l1<<" "<<l2-1<<" "<<r1+1<<" "<<r2<<endl;\)

\(B.cout<<l1<<" "<<l2-1<<" "<<r2+1<<" "<<r1<<endl;\)

\(C.cout<<l1<<" "<<r1-1<<" "<<l2+1<<" "<<r2<<endl;\)

\(D.cout<<l1<<" "<<r1-1<<" "<<l2<<" "<<r2<<endl;\)

标签:wedge,val,一个,sum,int,l2,mp
From: https://www.cnblogs.com/Diamondan/p/17680712.html

相关文章

  • Element UI实现每次只弹出一个Message消息提示
    前言在开发Web应用程序时,我们经常需要使用消息提示来向用户展示重要信息。ElementUI提供了一个方便易用的组件——Message,可以用于显示各种类型的消息提示。然而,默认情况下,当多个消息提示同时触发时,它们会依次累积在页面上,导致界面上出现多个消息提示。本篇博客将介绍如何通过对......
  • 枚举类和常量类还有一个枚举类型
    今天看源码,有个项目他把很多数据放在产量类里边,后来想想为啥不放到枚举里边呢?这就有了上面这个题目找了很多资料,这里有一篇资料让我明晰:这是地址:学习笔记——枚举(枚举类、Enum类、枚举结构(接口、抽象类))_枚举和枚举类_微凉归期的博客-CSDN博客下面摘抄一下上面的文章定义枚举类......
  • 一个小小的逻辑判断,解决根据类别插入行的问题!
    1职场实例小伙伴们大家好,今天我们来讲解一个在使用Excel中非常常见且基础的问题:如何根据类别插入行的问题。没想到运用一个小小的逻辑判断,即可以轻而易举的解决它。下面我们来看一下具体的工作场景。如下图所示:B1:D12区域为每日的水果销量记录表。我们想要依据C列的水果名称,根据不......
  • Python开发实例(十一)单词记忆游戏:编写一个简单的游戏,测试用户对一组随机单词的记忆能力
    在这个实例中,我们将创建一个简单的单词记忆游戏。游戏的规则是随机展示一组单词,然后要求用户在一定时间内尽可能多地记住这些单词。时间到后,再询问用户输入这些单词。最后,计算并显示用户正确记住的单词数量。下面是单词记忆游戏的Python程序:pythonCopycodeimportrandomimport......
  • sqlserver中怎么将一列数据拼接成一个字符串
     SELECTb.name+','FROM dbo.TechnologyColorajoin[dbo].[CustomColor]b ona.customcolorid=b.id WHEREProductId=345882800324677FORxmlPATH('')SELECT需要合并的字段+','FROM表名FORXMLPATH(''......
  • 如何成为一个数字极简主义者
    这篇读后感其实也是拖了很久,最早是在今年二月份疫情最严重的时候开始读CalNewport的DigitalMinimalisim.因为那时候在最大限度的推行社交隔离制度,大家都呆在家里,与之而来的就是,二十四小时高强度的使用手机和一切电子产品。每天醒来第一件事情就是看微博上最新的坏消息,在真真假......
  • dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现
    本文来记录一个我自己在使用的NTP时间校准客户端的实现核心方法是在国内使用腾讯和阿里提供的NTP时间服务器来获取网络时间,如果连接不上,再依次换成国家服务器和中国授时服务,如果再连不上,那就换成微软自带的time.windows.com服务从NTP服务上获取当前的网络时间,可......
  • 从零开始一个vue3前端项目day04-头部导航篇
    在实际开发项目中通常会把头部导航栏写成一个通用组件,这里来具体说一下实现思路1:front-header组件就是我们的头部导航栏,路由我们已经配置好了,把每个导航的首页路径,配置成navList(包含name,path),这样就通过遍历navList就能写出一个首页导航组件 2:导航的选中状态实现,不仅仅是切......
  • unity圆内随机一个点
    ///<summary>///根据半径随机出园内的点///</summary>///<paramname="vRadius"></param>///<returns></returns>publicstaticVector2GetRandomInCircle(floatvRadius){......
  • python用tkinter写一个文件对比的小工具,将两个excel文件进行对比,将两个列表差异保存到
    先写文件对比的逻辑代码,包括读取文件,对比文件,将对比出来的差异写入另一个excel文件1.读取文件,我这里是选取自己需要的不同的列,选定了指定的sheet列表,读者可根据需求更改defreadexcel(file):#打开Excel文件workbook=openpyxl.load_workbook(file)#选择指定......