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的更多相关文章

  1. TSQL 分组集(Grouping Sets)

    分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...

  2. 转:GROUPING SETS、ROLLUP、CUBE

    转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...

  3. GROUPING SETS、ROLLUP、CUBE

    大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你.还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY ...

  4. Group By Grouping Sets

    Group by分组函数的自定义,与group by配合使用可更加灵活的对结果集进行分组,Grouping sets会对各个层级进行汇总,然后将各个层级的汇总值union all在一起,但却比单纯的g ...

  5. PHP Redis 全部操作方法

    Classes and methods Usage Class Redis Class RedisException Predefined constants Class Redis Descript ...

  6. [转]LUA元表

    lua元表和元方法 <lua程序设计> 13章 读书笔记 lua中每个值都有一个元表,talble和userdata可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表.lua在 ...

  7. 使用guava带来的方便

    ​    ​guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点.刚刚接触就被guava吸引了... ​    ​这 ...

  8. 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 ...

  9. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  10. redis 有序集合(zset)函数

    redis 有序集合(zset)函数 zAdd 命令/方法/函数 Adds the specified member with a given score to the sorted set stor ...

随机推荐

  1. k8s发布应用

    前言 首先以SpringBoot应用为例介绍一下k8s的发布步骤. 1.从代码仓库下载代码,比如GitLab: 2.接着是进行打包,比如使用Maven: 3.编写Dockerfile文件,把步骤2产生 ...

  2. 网络请求-Android篇(Okhttp和Retrofit)

    一.OkHttp的介绍和基本用法 OkHttp是一个流行的开源Java和Android应用程序的HTTP客户端.它由Square Inc.开发,提供了一种简单高效的方式来进行应用程序中的HTTP请求. ...

  3. Vue【原创】整合el-dialog,可拖动可全屏最大化弹出框

    项目中很多时候需要弹出框可以拖动并且可最大化,el-dialog是不满足的,这边采用指令的方式进行拓展. 先来个效果图: 首先来个v-darg指令: 1 import Vue from 'vue' 2 ...

  4. 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析

    开心一刻 昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 问题背景 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有 ...

  5. MySQL实战实战系列 02 日志系统:一条SQL更新语句是如何执行的?

    前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块.相信你还记得,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 那么,一条更新语 ...

  6. To_Heart—题解——好多好多!

    1.CF1860D link && submission 发现自己并不会处理纯纯的 dp 甚至自己根本不会dp! 定义 dp_{i,j,k} 状态表示前 i 个字符有 j 个 0, 0 ...

  7. mpi转以太网连接200plc通信不上实际问题和解决方法

    西门子S7200plc通信不上实际问题和解决方法 现场通信的同学在现场调试的时候,现在特别是做项目改造的项目,西门子S7200plc通信面临淘汰,但是在改造的项目中还能经常看到他们的身影,下面我们就来 ...

  8. Vue3中的Ref与Reactive:深入理解响应式编程

    前言 Vue 3是一个功能强大的前端框架,它引入了一些令人兴奋的新特性,其中最引人注目的是ref和reactive.这两个API是Vue 3中响应式编程的核心,本文将深入探讨它们的用法和差异. 什么是 ...

  9. git 设置记住密码和清除密码

    git 设置记住密码和清除密码   1. 永久记住密码 该命令会记住密码,执行一次 git pull 或 git push 等需要输入密码的命令,输入一次密码, 之后就都不必再输入了 git conf ...

  10. css中的字体样式

    一.字体的样式 font-style:"normal" 正常 font-style:"italic"斜体 二.字体的粗细 font-weight:"b ...