当前位置:网站首页>D - Linear Probing- 并查集
D - Linear Probing- 并查集
2022-08-01 22:42:00 【秦小咩】
D - Linear Probing Editorial

/
Time Limit: 4 sec / Memory Limit: 1024 MB
Score : 400400 points
Problem Statement
There is a sequence A = (A_0, A_1, \dots, A_{N - 1})A=(A0,A1,…,AN−1) with N = 2^{20}N=220 terms. Initially, every term is -1−1.
Process QQ queries in order. The ii-th query (1 \leq i \leq Q)(1≤i≤Q) is described by an integer t_iti such that t_i = 1ti=1 or t_i = 2ti=2, and another integer x_ixi, as follows.
- If t_i = 1ti=1, do the following in order.
- Define an integer hh as h = x_ih=xi.
- While A_{h \bmod N} \neq -1AhmodN=−1, keep adding 11 to hh. We can prove that this process ends after finite iterations under the Constraints of this problem.
- Replace the value of A_{h \bmod N}AhmodN with x_ixi.
- If t_i = 2ti=2, print the value of A_{x_i \bmod N}AximodN at that time.
Here, for integers aa and bb, a \bmod bamodb denotes the remainder when aa is divided by bb.
Constraints
- 1 \leq Q \leq 2 \times 10^51≤Q≤2×105
- t_i \in \{ 1, 2 \} \, (1 \leq i \leq Q)ti∈{1,2}(1≤i≤Q)
- 0 \leq x_i \leq 10^{18} \, (1 \leq i \leq Q)0≤xi≤1018(1≤i≤Q)
- There is at least one ii (1 \leq i \leq Q)(1≤i≤Q) such that t_i = 2ti=2.
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
QQ
t_1t1 x_1x1
\vdots⋮
t_{Q}tQ x_{Q}xQ
Output
For each query with t_i = 2ti=2, print the response in one line. It is guaranteed that there is at least one such query.
Sample Input 1 Copy
Copy
4 1 1048577 1 1 2 2097153 2 3
Sample Output 1 Copy
Copy
1048577 -1
We have x_1 \bmod N = 1x1modN=1, so the first query sets A_1 = 1048577A1=1048577.
In the second query, initially we have h = x_2h=x2, for which A_{h \bmod N} = A_{1} \neq -1AhmodN=A1=−1, so we add 11 to hh. Now we have A_{h \bmod N} = A_{2} = -1AhmodN=A2=−1, so this query sets A_2 = 1A2=1.
In the third query, we print A_{x_3 \bmod N} = A_{1} = 1048577Ax3modN=A1=1048577.
In the fourth query, we print A_{x_4 \bmod N} = A_{3} = -1Ax4modN=A3=−1.
Note that, in this problem, N = 2^{20} = 1048576N=220=1048576 is a constant and not given in input.
=========================================================================非常巧妙的一个题目,直接循环外加优化的话只会TLE一个点,本题正解是并查集,每当修改一个位置,就把这个位置的父亲节点和父亲节点+1位置合并,注意合并顺序,这样我们就完美的定位了下一个位置,十分精巧
# include<iostream>
# include<iomanip>
# include<algorithm>
# include<map>
# include<vector>
# include<set>
# include<cstring>
# pragma optimize(2)
# define mod 1048576
using namespace std;
typedef long long int ll;
int f[(1<<20)+10];
ll ans[(1<<20)+10];
bool book[1048576+10];
ll getf(int x)
{
if(x==f[x])
return x;
else
{
f[x]=getf(f[x]);
return f[x];
}
}
void hebing(int x,int y)
{
int t1=getf(x);
int t2=getf(y);
if(t1!=t2)
f[t1]=t2;
}
int main ()
{
for(int i=0; i<(1<<20); i++)
{
f[i]=i;
}
int t;
cin>>t;
while(t--)
{
ll x,y;
scanf("%lld%lld",&x,&y);
if(x==1)
{
ll pre=y;
y%=1048576;
ll now=getf(y);
ans[now]=pre;
book[now]=1;
hebing(now,(now+1)%1048576);
}
else
{
ll now=y%1048576;
if(!book[now])
{
cout<<-1<<'\n';
}
else
{
cout<<ans[now]<<'\n';
}
}
}
return 0;
}
边栏推荐
- SRv6 L3VPN的工作原理
- 华为无线设备配置双链路冷备份(AP指定配置方式)
- 【SeaTunnel】从一个数据集成组件演化成企业级的服务
- NgRx Selector 的 Memoization 特性学习笔记
- No more rolls!After joining ByteDance for a week, he ran decisively.
- PHP算法之最接近的三数之和
- 企业公众号文章写作方向:如何写出读者认可的优质内容
- User Experience | How to Measure User Experience?
- Deep learning Course2 first week Practical aspects of Deep Learning exercises
- 一种灵活的智能合约协作方式
猜你喜欢

y84. Chapter 4 Prometheus Factory Monitoring System and Actual Combat -- Advanced Prometheus Alarm Mechanism (15)

使用Jenkins做持续集成,这个知识点必须要掌握

小程序毕设作品之微信美食菜谱小程序毕业设计成品(6)开题答辩PPT

小程序容器+自定义插件,可实现混合App快速开发

华为无线设备配置双链路冷备份(AP指定配置方式)

从0到1:图文投票小程序设计与研发笔记

Small application project works WeChat stadium booking applet graduation design of the finished product (1) the development profile

How to prevent governance attacks in DAOs?

Mini Program Graduation Works WeChat Food Recipe Mini Program Graduation Design Finished Product (8) Graduation Design Thesis Template

一种灵活的智能合约协作方式
随机推荐
RxJs SwitchMapTo 操作符之移花接木
visual studio code multiple editing
Yizhou Financial Analysis | The intelligent transformation of bank ATM machines is accelerated; the new Internet loan regulations bring challenges
小程序毕设作品之微信体育馆预约小程序毕业设计成品(4)开题报告
Prufer序列
解决yolov5训练时出现:“AssertionError: train: No labels in VOCData/dataSet_path/train.cache. Can not train ”
How to use pywinauto and pyautogui to link the anime lady and sister please go home
[ASM] Bytecode Operation MethodWriter
long investment career
Create virtual environments with virtualenv and Virtualenvwrapper virtual environment management tools
复现gallerycms字符长度限制短域名绕过
小程序中的多表联合查询
ROS2初级知识(8):Launching启动多节点
How to prevent governance attacks in DAOs?
华为无线设备配置全局双链路冷备份(AC全局配置方式)
2022 edition of MySQL tutorial, top collection good, take your time
小程序毕设作品之微信美食菜谱小程序毕业设计成品(8)毕业设计论文模板
小程序毕设作品之微信美食菜谱小程序毕业设计成品(7)中期检查报告
excel cell contian two words, seperated by a slash
文件查询匹配神器 【glob.js】 实用教程