CF 1138F 超级有意思的一道交互题QVQ
题意
有一张有向图,由一条长度为 T 的链和一个长度为 C 环组成,但是你并不知道 T 和 C 是多少
图的出发点在链的一段,终点在链的另一端,同时终点与一个环相连,大概有点内向树感觉
现在有 10 个人,你可以每次操作让一些人沿着路径前进一步,然后交互库会返回你多少个点上有人以及上面的人分别是谁(其实是谁可能不重要?)
你的目标就是在 \(3*(T+C)\) 次操作内让所有人同时到达终点,然后输出 done
分析
其实很好做?
我们只要首先 重复让 0 号走一步,然后 0 号 1 号一起走一步,直到 0 1 相遇(也就是返回有 2 个点上有人)
不难看出此时 0 1 一定在环上,然后我们让 10 个人一起走,等他们所有人相遇,就是走到终点了
什么?为什么这么做是对的?
我们设 1 走了 \(T + x\) 步后和 0 相遇 ,那么 0 就走了 \(2*(T + x)\) (T 就是链长)
那么 \(T+x\) 必然是 \(C\) 的倍数,因为 0 1 相遇, 0 肯定在环上多走了几圈
于是 1 号点再走 T 步就能到终点了, 0 和 1 一起走的,看做一个点就好了
而其他所有的点走了 T 步之后也到终点了
虽然我们不知道 T 是多少,但是让他们走着就对了(反正相遇了就是到终点了)
关于交互的问题
首先就是不知道能不能用文件读入...(好像不行,亲测出锅了)
然后就是记得 fflush
当然用 cout + endl 的好像连 fflush 都可以省掉不用了QVQ
//by Judge
#include<bits/stdc++.h>
using namespace std;
inline int read(){ int x=0; char c=getchar();
for(;!isdigit(c);c=getchar());
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x;
} char s[15];
inline int get(){ int x=read();
for(int i=1,t;i<=x;++i) scanf("%s",s); return x;
}
int main(){
while(1){
puts("next 0"),fflush(stdout),get();
puts("next 0 1"),fflush(stdout);
if(get()==2) break;
}
while(1){
puts("next 0 1 2 3 4 5 6 7 8 9"),fflush(stdout);
if(get()==1) break;
} return puts("done"),fflush(stdout),0;
}
CF 1138F 超级有意思的一道交互题QVQ的更多相关文章
- CF1153E Serval and Snake(交互题)
题目 CF1153E Serval and Snake 很有意思的一道交互题 做法 我们观察到,每次查询一行,当这一行仅包含一端是返回的答案是奇数 根据这个性质查询每一行每一列,我们大体能知道两端的位 ...
- CF1114E Arithmetic Progression(交互题,二分,随机算法)
既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...
- B. Lost Number【CF交互题 暴力】
B. Lost Number[CF交互题 暴力] This is an interactive problem. Remember to flush your output while communi ...
- codeforces1088D_Ehab and another another xor problem交互题
传送门 一道考验思维的交互题 大致思路就是从最高的二进制位向下询问 代入例子比如: 5 6 6 5 7 4 6 4 讨论一下 交互题的重点学会推理和归纳 #include <bits/stdc+ ...
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- 一道js题
<script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...
- 每天一道Java题[3]
问题 为什么在重写equals()方法的同时,必须重写hashCode()方法? 解答 在<每天一道Java题[2]>中,已经对hashCode()能否判断两个对象是否相等做出了解释.eq ...
- 每天一道Java题[11]
题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synch ...
随机推荐
- HDU 3371(城市联通 最小生成树-Kruskal)
题意是求将所有点联通所花费的最小金额,如不能完全联通,输出 -1 直接Kruskal,本题带来的一点教训是 rank 是algorithm头文件里的,直接做变量名会导致编译错误.没查到 rank 的具 ...
- c# 三种传参方式 in,out,ref
in:默认方式,传值不返回 out:不传值 但是会返回新值给予传参对象 ref:传存储地址,所以传参前必须赋值初始化,传值后的运算结果直接作用在传参上 Out和ref的效果差不多
- Django多表操作
多表创建 创建模型 下面通过一个简单的图书管理系统,来阐述多表的创建和查询操作 在视图函数里里定义如下代码 from django.db import models class Book(models ...
- 让WeuiPicker隐藏日期中的日,只保留年月
weui.datePicker({ start: 1990, end: new Date().getFullYear() + 3, defaultValue: [year, month, 1], on ...
- SQLite 数据库介绍和基本用法
Ø 简介 SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 Oracle.MySQL.SQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分.所以,经常 ...
- error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案 1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载twisted对应版本的whl文件(我的Twisted‑17.5.0‑cp36 ...
- 九、uboot 代码流程分析---relloc_code
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的 ...
- 【小玩意】time-passing-by clock
就着youtube上的教程用html和js做了个小时钟. Code: clock.html //clock.html <!DOCTYPE html> <html> <he ...
- Yii2 restful api创建,认证授权以及速率控制
Yii2 restful api创建,认证授权以及速率控制 下面是对restful从创建到速率控制的一个详细流程介绍,里面的步骤以及截图尽可能详细,熟悉restful的盆友可能觉得过于繁琐,新手不妨耐 ...
- Java基础_0304:构造方法
构造方法 如果要实例化新的对象,那么肯定需要使用关键字new来完成,但是除了new这个关键字之外,还有可能在对象实例化时为其进行一些初始化的准备操作,这个时候就需要构造方法的支持了 构造方法本身是一种 ...