[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 ...
随机推荐
- Pytest 框架执行用例流程浅谈
背景: 根据以下简单的代码示例,我们将从源码的角度分析其中的关键加载执行步骤,对pytest整体流程架构有个初步学习. 代码示例: import pytest def test_add(): asse ...
- SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)
背景 一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志. 比如: XX人创建了一条订单,订单号:XXXXXXXXX 因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日 ...
- GORM自定义Gorm.Model实现自动添加时间戳
废话不说直接开始 官网(http://gorm.io)有给出一套默认的gorm.Model模型,定义如下 package gorm import "time" // Model b ...
- Spring Bean 的作用域(Bean Scope)
前言 大家好,我是 god23bin,今天我们来聊一聊 Spring 框架中的 Bean 作用域(Scope). 什么是 Bean 的作用域? 我们在以 XML 作为配置元数据的情况下,进行 Bean ...
- react18-webchat网页聊天实例|React Hooks+Arco Design仿微信桌面端
React18 Hooks+Arco-Design+Zustand仿微信客户端聊天ReactWebchat. react18-webchat基于react18+vite4.x+arco-design+ ...
- Record - Nov. 21st, 2020 - Exam. REC & SOL
Craft Prob. 1 Desc. & Link. 有想法. printf( "nan" ); Prob.2 Desc. & Link. 没读懂 Prob. 3 ...
- 前端三件套系例之JS——JavaScript内置方法
文章目录 1.Number 1-1 属性 1-2 方法 2.String 2-1 属性 2-2 方法 2-3 代码 3Array 3-1 创建数组 3-2 数组特点 3-3 数组的遍历(迭代) 34 ...
- PostgreSQL学习笔记-6.基础知识:ALTER、TRUNCATE 、View(视图)、TRANSACTION 事务、LOCK 锁
ALTER TABLE 命令 在 PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列. 另外你也可以用 ALTER TABLE 命令添加和删除约束. 语法 用 ...
- 记一次Redis Cluster Pipeline导致的死锁问题
作者:vivo 互联网服务器团队- Li Gang 本文介绍了一次排查Dubbo线程池耗尽问题的过程.通过查看Dubbo线程状态.分析Jedis连接池获取连接的源码.排查死锁条件等方面,最终确认是因为 ...
- XCODE9.1的一些新问题
自从XCODE7苹果就允许用免费的开发者账号进行真机测试了,但是还是有很多限制的. 在用的过程中发现限制如下: 1.只能生成*.app文件,不能打包成ipa.官方这么说的,但是奇诡的是,我archiv ...