• [Codeforces1137D]Cooperative Game


    [Codeforces1137D]Cooperative Game

    Tags:题解


    题意

    这是一道交互题。
    给你一张下面这样的地图,由一条长为(t)的有向链和一个长为(c)的环构成。

    现在你有(10)颗棋子,编号(0)(9),你不知道(t)(c)的值,你每次可以移动若干颗棋子。
    请你输出方案,使得所有棋子走到环和链的交点处,并在走到时输出done

    你每次可以输出next a b c ...,交互库将返回k a1 a2 ... ak表示当前有(k)个位置有棋子,(ai)表示一个字符串,表示第(i)个位置的棋子编号是什么。
    你的移动次数不能超过(3(t+c))(t+cle 1000)

    题解

    神仙题,一直在想(10)颗棋子的二进制意义,然而(t)(c)再大也没有关系。

    步骤:
    选定两颗棋子(0),(1)(0)每次都移动,(1)每两次移动一次。
    走了(2t)步之后(1)刚好到达交点(T),把环按照以(T)(1)按边的方向依次编号,则此时(0)在环上的(t)位置。
    这时(0)还需要(c-t)步追上(到) (1),追上的位置是(c-t)

    然后惊奇地发现:把所有点同时走(t)步就可以让所有点都在(T)上了!
    服了服了。这场掉分掉得爽啊(第一次掉分)

    代码

    #include<iostream>
    using namespace std;
    char s[100];
    int In() {int x,p;scanf("%d",&x);for(p=x;p;p--) scanf("%s",s);return x;}
    int main()
    {
    	while(1)
    	{
    		puts("next 0");fflush(stdout);In();
    		puts("next 0 1");fflush(stdout);
    		if(In()==2) break;
    	}
    	while(1)
    	{
    		puts("next 0 1 2 3 4 5 6 7 8 9");
    		fflush(stdout);if(In()==1) break;
    	}
    	puts("done");fflush(stdout);
    }
    
  • 相关阅读:
    天梯程序设计竞赛 L2-005. 集合相似度 STL
    Oulipo kmp
    剪花布条 kmp
    poj 1321 dfs
    蓝桥杯历届试题 打印十字图
    windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题解决。
    使用分区助手转移windows 10系统出现黑屏boot manager报错问题。
    使用java AWT做一个增加按钮的简单菜单窗体
    R基本画图
    R的基础学习之数据结构
  • 原文地址:https://www.cnblogs.com/xzyxzy/p/10512730.html
Copyright © 2020-2023  润新知