Codeforces 1137D - Cooperative Game - [交互题+思维题]
题目链接:https://codeforces.com/contest/1137/problem/D
题意:
交互题。
给定如下一个有向图:

现在十个人各有一枚棋子(编号 $0 \sim 9$),在不知道 $t,c$ 的值的情况下,他们同时从home出发,要最终到达flag处。
你只能选择移动哪几个人的棋子,但棋子移动到哪里由程序确定并给出。
题解:
看网上大佬一个神仙解法……看得我一愣一愣的……
选定两颗棋子,第一颗每次都移动,第二颗隔一次移动一次。所以,进行了 $2t$ 次之后第二颗棋子刚好到达终点,
这个时候,第一颗棋子相当于以flag点为起点,移动了 $t$ 次,那么它此时的位置就相当于从flag出发走了 $t \bmod c$ 次,也就是说取flag处为 $0$ 位置,那么它现在在 $t \bmod c$ 位置。
那么,此时第一颗棋子想要追第二颗棋子的话,他们之间的距离是 $c - (t \bmod c)$,因此还要在移动 $2 \times [c - (t \bmod c)]$ 次才能让两颗棋子处于同一个位置。
那么这个位置在哪里呢?我们可以这么算,第一颗棋子从flag出发先走了 $t \bmod c$ 次,又走了 $2 \times [c - (t \bmod c)]$ 次,即总的走了 $2c - (t \bmod c)$ 次,即在 $2c - (t \bmod c)$ 位置,对 $c$ 取模即相当于在 $c - (t \bmod c)$ 位置。
此时,对于全部的棋子,只需要同时每个都再走 $t$ 步,就能全部到达flag点。
这样一来,只需做 $2t + 2 [c - (t \bmod c)] + t \le 3t + 2c < 3(t+c)$ 次就能完成了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
inline int input()
{
int k; cin>>k;
string s;
for(int i=;i<=k;i++) cin>>s;
return k;
}
int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); while()
{
cout<<"next 0"<<endl;
input();
cout<<"next 0 1"<<endl;
if(input()==) break;
}
while()
{
cout<<"next 0 1 2 3 4 5 6 7 8 9"<<endl;
if(input()==) break;
}
cout<<"done"<<endl;
}
Codeforces 1137D - Cooperative Game - [交互题+思维题]的更多相关文章
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- Codeforces 718E - Matvey's Birthday(思维题)
Codeforces 题面传送门 & 洛谷题面传送门 首先注意到这个图的特殊性:我们对于所有 \(s_i=s_j\) 的 \((i,j)\) 之间都连了条边,而字符集大小顶多只有 \(8\ ...
- Codeforces 643F - Bears and Juice(思维题)
Codeforces 题目传送门 & 洛谷题目传送门 首先直接暴力枚举显然是不现实的,我们不妨换个角度来处理这个问题,考虑这 \(R_i\) 个瓶子中每一瓶被哪些熊在哪一天喝过. 我们考虑对这 ...
- Codeforces 627E - Orchestra(双向链表,思维题)
Codeforces 题目传送门 & 洛谷题目传送门 下设 \(n,m\) 同阶. 首先有一个傻子都会的暴力做法,枚举矩形的上.下边界 \(l,r\),考虑集合多重集 \(S=\{y|x\in ...
- Codeforces Round #416 (Div. 2)(A,思维题,暴力,B,思维题,暴力)
A. Vladik and Courtesy time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- CodeForces 719A Vitya in the Countryside 思维题
题目大意:月亮从0到15,15下面是0.循环往复.给出n个数字,如果下一个数字大于第n个数字输出UP,小于输出DOWN,无法确定输出-1. 题目思路:给出0则一定是UP,给出15一定是DOWN,给出其 ...
- Codeforces 671 A——Recycling Bottles——————【思维题】
Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- codeforces 675 C ——Money Transfers——————【思维题】
Money Transfers time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- CodeForces 492E Vanya and Field (思维题)
E. Vanya and Field time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
随机推荐
- 【MySQL】玩转触发器、监听器
1.触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL. 创建触发器 语法如下: CREATE TRIGGER trigger_name trigger_tim ...
- 鱼缸的启示:Scale-out和Scale-up架构
提到Scale-out和Scale-up,初看到可能会有点晕.其实我认为Scale-out和Scale-up的概念可以用一个简单的例子来解释. 不知您有没有养过鱼?当你只有六七条鱼的时候,一个小型鱼缸 ...
- 【Sqlserver】SqlServer中EXEC 与 SP_EXECUTESQL的 区别
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABL ...
- Atitit 常见每日流程日程日常工作.docx v4
Atitit 常见每日流程日程日常工作.docx v4 ----早晨 签到 晨会,每天或者隔天 每日计划( )项目计划,日常计划等. mailbox读取检查 每日趋势 推库 -----下午 签退 每日 ...
- 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
0. 前言 最近基本都是学一些环境配置,和一些中间件的安装与配置.没有实际编写代码.可能看起来有点水,我对自己的学习方式是,先要了解各个中间件的安装配置以及简单使用,理论应用场景,然后我在小项目中,逐 ...
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
Android 设备的CPU类型通常称为ABIs 问题描写叙述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你须要重点关注so文件 App中可能出错的地方 其它地方也可能出错 ...
- Android Launcher分析和修改4——初始化加载数据
上面一篇文章说了Launcher是如何被启动的,Launcher启动的过程主要是加载界面数据然后显示出来, 界面数据都是系统APP有关的数据,都是从Launcher的数据库读取,下面我们详细分析Lau ...
- 【iCore1S 双核心板_FPGA】例程十一:Modelsim仿真实验
实验现象: 通过仿真波形,分析输入与输出的关系,可以清晰的看到所添加信号波形的变化与程序所写的一致. 核心代码: module modelsim( input CLK_12M, output FPGA ...
- React Native常用组件之ScrollView
1. 两个要点 1.1 ScrollView必须有一个确定的高度才能正常工作 它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作) 通常有两种做法: 第一种: 直接给该S ...
- MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置
一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除 ...