题意

有一张有向图,由一条长度为 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的更多相关文章

  1. CF1153E Serval and Snake(交互题)

    题目 CF1153E Serval and Snake 很有意思的一道交互题 做法 我们观察到,每次查询一行,当这一行仅包含一端是返回的答案是奇数 根据这个性质查询每一行每一列,我们大体能知道两端的位 ...

  2. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  3. B. Lost Number【CF交互题 暴力】

    B. Lost Number[CF交互题 暴力] This is an interactive problem. Remember to flush your output while communi ...

  4. codeforces1088D_Ehab and another another xor problem交互题

    传送门 一道考验思维的交互题 大致思路就是从最高的二进制位向下询问 代入例子比如: 5 6 6 5 7 4 6 4 讨论一下 交互题的重点学会推理和归纳 #include <bits/stdc+ ...

  5. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  6. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  7. 一道js题

    <script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...

  8. 每天一道Java题[3]

    问题 为什么在重写equals()方法的同时,必须重写hashCode()方法? 解答 在<每天一道Java题[2]>中,已经对hashCode()能否判断两个对象是否相等做出了解释.eq ...

  9. 每天一道Java题[11]

    题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synch ...

随机推荐

  1. VS2015快捷键大全

    Ctrl+E,D —-格式化全部代码 Ctrl+E,F —-格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SH ...

  2. elasticsearch基本概念与查询语法

    序言 后面有大量类似于mysql的sum, group by查询 elk === elk总体架构 https://www.elastic.co/cn/products Beat 基于go语言写的轻量型 ...

  3. 剑指offer面试题4: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. [Android] Android v4包CompoundButtonCompatLollipop.class重复问题

    用 Butter Knife  8.8.1  导致v4包CompoundButtonCompatLollipop.class重复问题 详细错误如下: Error:Execution failed fo ...

  5. 细说REST API安全之防止重放攻击

    一. 重放攻击概述 百科对重放攻击的描述:https://zh.wikipedia.org/wiki/%E9%87%8D%E6%94%BE%E6%94%BB%E5%87%BB简而言之,重放攻击的产生是 ...

  6. Android MediaPlayer播放raw资源封装类

    import android.content.Context; import android.media.MediaPlayer; import xxxx.R; public class MediaU ...

  7. ****** 四十九 ******、软设笔记【UML分析和意义】-建模的意义,UML的特点、结构,用例图

    UML UML又称同一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,它的作用域不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程. 建模的意义: 模型是对现实的 ...

  8. 判断闰年(Java)

    package day01; import java.util.Scanner; public class leap_year { public static void main (String[] ...

  9. luogu 4180 严格次小生成树

    次小生成树,顾名思义和次短路的思路似乎很类似呀, 于是就先写了个kruskal(prim不会)跑出最小生成树,给所有路径打标记,再逐个跑最小生成树取大于最小生成树的最小值 50分 #include&l ...

  10. JQuery之Attr()与Prop()方法

    一.Prop()的由来 JQuery 1.6开始 新增方法prop() prop()解决:表单元素中checked,selected,disabled等属性在方法attr()中可能会出现的不一致问题( ...