[ABC282F] Union of Two Sets
Problem Statement
This is an interactive task, where your and the judge's programs interact via Standard Input and Output.
You and the judge will follow the procedure below.
The procedure consists of phases $1$ and $2$; phase $1$ is immediately followed by phase $2$.
(Phase $1$)
- The judge gives you an integer $N$.
- You print an integer $M$ between $1$ and $50000$, inclusive.
- You also print $M$ pairs of integers $(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)$ such that $1 \leq l_i \leq r_i \leq N$ for every $i = 1, 2, \ldots, M$ (the $M$ pairs do not have to be distinct).
(Phase $2$)
- The judge gives you an integer $Q$.
- You and the judge repeats the following $Q$ times.
- The judge gives you two integers $L$ and $R$ as a query.
- You respond with two integers $a$ and $b$ between $1$ and $M$, inclusive (possibly with $a = b$).
Here, $a$ and $b$ must satisfy the condition below. Otherwise, your submission will be judged incorrect.- The union of the set $\lbrace l_a, l_a+1, \ldots, r_a\rbrace$ and the set $\lbrace l_b, l_b+1, \ldots, r_b\rbrace$ equals the set $\lbrace L, L+1, \ldots, R\rbrace$.
After the procedure above, terminate the program immediately to be judged correct.
Constraints
- $1 \leq N \leq 4000$
- $1 \leq Q \leq 10^5$
- $1 \leq L \leq R \leq N$
- All values in the input are integers.
Input and Output
This is an interactive task, where your and the judge's programs interact via Standard Input and Output.
(Phase $1$)
- First, $N$ is given from the input.
- Next, an integer $M$ between $1$ and $50000$, inclusive, should be printed.
- Then, $(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)$ should be printed, one at a time.
Specifically, for each $i = 1, 2, \ldots, M$, the $i$-th output should be $(l_i, r_i)$ in the following format:
$l_i$ $r_i$
(Phase $2$)
- First, $Q$ is given from the input.
- In each query, integers $L$ and $R$ representing the query are given in the following format:
$L$ $R$
- In response to each query, two integers $a$ and $b$ should be printed in the following format:
$a$ $b$
Cautions
- At the end of each output, print a newline and flush Standard Output. Otherwise, you may get the TLE verdict.
- If your program prints a malformed output or quits prematurely, the verdict will be indeterminate. Particularly, note that in case of a runtime error, the verdict may be WA or TLE instead of RE.
- After phase $2$, immediately terminate the program. Otherwise, the verdict will be indeterminate.
- $L$ and $R$ given in phase $2$ will be decided according to $(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)$ you print in phase $1$.
Sample Interaction
Below is a sample interaction with $N = 4$ and $Q = 4$.
=
| Input | Output | Description |
|---|---|---|
4 |
$N$ is given. | |
6 |
You print $M$. | |
3 3 |
You print $(l_1, r_1) = (3, 3)$. | |
4 4 |
You print $(l_2, r_2) = (4, 4)$. | |
1 1 |
You print $(l_3, r_3) = (1, 1)$. | |
2 4 |
You print $(l_4, r_4) = (2, 4)$. | |
1 3 |
You print $(l_5, r_5) = (1, 3)$. | |
2 2 |
You print $(l_6, r_6) = (2, 2)$. | |
4 |
$Q$ is given. | |
1 3 |
As the first query, $L = 1$ and $R = 3$ are given. | |
1 5 |
You respond with $a = 1$ and $b = 5$. | |
3 4 |
As the second query, $L = 3$ and $R = 4$ are given. | |
2 1 |
You respond with $a = 2$ and $b = 1$. | |
2 4 |
As the third query, $L = 2$ and $R = 4$ are given. | |
4 4 |
You respond with $a = 4$ and $b = 4$. | |
1 1 |
As the fourth query, $L = 1$ and $R = 1$ are given. | |
3 3 |
You respond with $a = 3$ and $b = 3$. | |
这个构造和ST表的完全一样。把所有长度为 $1,2,4,8\cdots$ 的区间在一开始给出。然后在求区间合并时也想ST表那样,令 $k=\lfloor\log (r-l+1)\rfloor$,输出 $[l,l+2^k-1]$ 和 $[r-2^k+1,r]$ 对应的编号就行了。
#include<cstdio>
const int N=4005;
int n,st[15][N],lg[N],idx,q,l,r,k;
int main()
{
scanf("%d",&n);
for(int i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
for(int i=0;i<=lg[n];i++)
for(int j=1;j+(1<<i)-1<=n;j++)
st[i][j]=++idx;
printf("%d\n",idx);
for(int i=0;i<=lg[n];i++)
for(int j=1;j+(1<<i)-1<=n;j++)
printf("%d %d\n",j,j+(1<<i)-1);
fflush(stdout);
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&l,&r);
k=lg[r-l+1];
printf("%d %d\n",st[k][l],st[k][r-(1<<k)+1]);
fflush(stdout);
}
}
[ABC282F] Union of Two Sets的更多相关文章
- TSQL 分组集(Grouping Sets)
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...
- 转:GROUPING SETS、ROLLUP、CUBE
转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...
- GROUPING SETS、ROLLUP、CUBE
大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你.还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY ...
- Group By Grouping Sets
Group by分组函数的自定义,与group by配合使用可更加灵活的对结果集进行分组,Grouping sets会对各个层级进行汇总,然后将各个层级的汇总值union all在一起,但却比单纯的g ...
- PHP Redis 全部操作方法
Classes and methods Usage Class Redis Class RedisException Predefined constants Class Redis Descript ...
- [转]LUA元表
lua元表和元方法 <lua程序设计> 13章 读书笔记 lua中每个值都有一个元表,talble和userdata可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表.lua在 ...
- 使用guava带来的方便
guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... 这 ...
- MST(Kruskal’s Minimum Spanning Tree Algorithm)
You may refer to the main idea of MST in graph theory. http://en.wikipedia.org/wiki/Minimum_spanning ...
- java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨
java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...
- redis 有序集合(zset)函数
redis 有序集合(zset)函数 zAdd 命令/方法/函数 Adds the specified member with a given score to the sorted set stor ...
随机推荐
- 为什么NoSQL不支持事务
为什么NoSQL不支持事务 1. 背景 看书<Neo4j权威指南>的时候,发现个问题:日常的NoSQL都不支持事务(ACID). 2. 问题 事务对数据的存储过程是有利的,既然事情是有利的 ...
- LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...
- Java 配置 HTTP/Socks 代理竟能如此简单
在网络请求过程中,使用代理是一种常见的需求.代理服务器可以帮助我们隐藏真实的 IP 地址.加速访问速度.访问公司特定内网等等要求.在 Java 中,我们可以通过一些库或框架来实现代理的设置和使用. 但 ...
- css面试题一
1.继承 css的继承:就是给父级设置一些属性,子级继承了父级的该属性,这就是我们css中的继承.官方的解释,继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素. a.有 ...
- 代码随想录算法训练营第二十九天| 491.递增子序列 46.全排列 47.全排列 II
491.递增子序列 卡哥建议:本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里. https://programmercarl.com/0491.%E9%80%92%E5% ...
- iOS证书的使用
在iOS开发中,证书分两种,一种是对应于应用的证书,一种是通用证书
- 【Python爬虫实战】爬虫封你ip就不会了?ip代理池安排上
前言 在进行网络爬取时,使用代理是经常遇到的问题.由于某些网站的限制,我们可能会被封禁或者频繁访问时会遇到访问速度变慢等问题.因此,我们需要使用代理池来避免这些问题.本文将为大家介绍如何使用IP代理池 ...
- MapReduce和Spark读取HBase快照表
1.概述 随着大数据技术的不断发展,处理海量数据的需求变得愈发迫切.MapReduce作为一种分布式计算模型,为处理大规模数据提供了有效的解决方案.在这篇博客中,我们将探讨如何使用MapReduce框 ...
- Webpack DevServer 代理本地静态目录
前言 项目里需要离线切片地图,但切片地图文件很多,需求上有时无法单独提供一个独立的文件服务器或者切片服务器,放在 public 难免会在调试运行时被复制到 DevServer 上,而这个操作在低层级少 ...
- 我们又组织了一次欧洲最大开源社区活动,Hugging Face 博客欢迎社区成员发帖、Hugging Chat 功能更新!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...