loj #6.Guess Number
Guess Number
内存限制:256 MiB
时间限制:1000 ms
题目类型:交互
题目描述
这是一个交互题的模板。
系统会随机生成\(n\)个数\(A_i\),你需要猜测出这\(n\)个数的值。暴力枚举/ 二分/ 随机猜测等方法都可以解决这个问题,但得分将依猜测次数而定。
交互方式
使用 C++ 与 C++11 的选手将可以利用系统给出的交互库来进行交互。
使用其他语言的选手也不必担心,我们提供了一个友好的交互接口,你将能够轻而易举地通过标准输入 / 输出来进行交互。
不使用交互库
为了更清晰地演示交互题的使用方法,我们设计了三种操作:
get_num:获取需要猜测的数字数量\(n\)。本操作不包含参数。guess:猜测某个数字。本操作包含2个参数:需要猜测的数字的序号(从0开始)以及猜测值。当你猜测的值小于实际值时,返回值为-1;当你猜测的值大于实际值时,返回值为1;当恰好猜对时,返回值为0。submit:提交猜测结果。本操作包含\(n\)个参数,即\(n\)个数的猜测结果。本操作没有返回值。
当你想要进行某个操作时,请向标准输出流中写入如下格式的字符串:
<操作名称> <操作参数 1> <操作参数 2> ... <操作参数 n>
你必须在请求后追加换行符;多余的空白字符将被自动忽略。
在收到用户程序发送的请求后,交互器会向用户程序的标准输入流中发送返回值。你只需在你的程序中使用通常的办法读入这个值,就好像是从控制台或文件中读取内容一样。交互器将在发送返回值后再附加一个换行符\n,以便于用户程序读入。本题目的操作返回值都是数字,因此直接读入数字即可。
提示
很多语言的输入/ 输出库都会带有缓存,请在写入操作请求后手动刷新缓存,以确保请求顺利递送。
C++ 语言可以这样刷新缓存(std::endl 会自动刷新缓存):
std::cout << std::flush; // 或 std::cout << value << std::endl;
提交猜测结果后,即可结束程序。交互器退出时,如果用户程序还在运行,就会被立即终止,但不会引发超时错误。
使用交互库
对于 C++ 与 C++11 选手,我们提供交互库 interaction.h,你将可以通过题目上方的「附加文件」下载到这个交互库。正式比赛时交互库也将是公开的。
当然,你可以选择不使用交互库,自己通过标准输入输出来通信。
C++ 与 C++11 的 interaction.h 将包含三个原型如下的函数:
int get_num();
int guess(int index, int x);
void submit(const std::vector<int> &resultv);
参数的意义及返回值请参见上面的描述。
附注1 文件说明
「附加文件」中的 interaction.h 为供用户调用的交互库;interactor.cpp 为交互器。
附注2 C 与 C++ #include说明
#include <file> 表示在标准库及默认搜索目录中寻找将要 include 的文件;
#include "file" 表示先在当前目录中搜索文件,然后再到默认搜索目录中搜寻。
在提交交互题时,请使用 #include "interaction.h"。
输入格式
输入文件是供交互器使用的;一般用户无需在意这里的内容,只需关心如何与交互器交互即可。
第一行一个正整数\(n\),表示有\(n\)个数,第二行\(n\)个正整数表示要猜的序列。
样例
样例输入
5
1 2 3 4 5
数据范围与提示
数量: \(1\le n\le 100\);
要猜测的数字: \(0\le A_i\le 1000000\)
请尽量保证你的猜测次数在\(1000n\)之内,对于每个测试点,设你的猜测次数为\(x\),则你的得分为 \(max(min(100,(950−(x/n−100))/950×100),0)\)
每次猜测均为 I / O 操作,消耗时间较多,如果猜测次数过多将导致超时。
题目大意:使用高效率的方式猜测数据
题目思路:使用二分法
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000000
int guess(int i)
{
int l=0,r=MAX,m;
int status;
while (l < r)
{
m = (l+r) >> 1;
printf("guess %d %d\n", i, m);
fflush(stdout);
scanf("%d", &status);
switch (status)
{
case -1:
l = m + 1;
break;
case 1:
r = m - 1;
break;
case 0:
return m;
}
}
return l;
}
int main()
{
int n, a[100];
printf("get_num\n");
fflush(stdout);
scanf("%d", &n);
for (int i=0; i<n; i++)
a[i] = guess(i);
printf("submit");
for (int i=0; i<n; i++)
printf(" %d", a[i]);
printf("\n");
fflush(stdout);
}
loj #6.Guess Number的更多相关文章
- [LOJ#2327]「清华集训 2017」福若格斯
[LOJ#2327]「清华集训 2017」福若格斯 试题描述 小d是4xx9小游戏高手. 有一天,小d发现了一个很经典的小游戏:跳青蛙. 游戏在一个 \(5\) 个格子的棋盘上进行.在游戏的一开始,最 ...
- [BZOJ3990][SDOI2015][LOJ#2181]-排序
说实话,这个题真好(?) <BZOJ题面> <LOJ题面> 看到这个题,一时没有思路 但是 我想到了一个错解:归并 这个题真的有一点把我们的思路往归并上引 于是WA10 诶?我 ...
- Note - Powerful Number
Powerful Number 对于 \(n\in\mathbb N_+\),若不存在素数 \(p\) 使得 \(p\mid n~\land~p^2\not\mid n\),则称 \(n\) 为 ...
- JavaScript Math和Number对象
目录 1. Math 对象:数学对象,提供对数据的数学计算.如:获取绝对值.向上取整等.无构造函数,无法被初始化,只提供静态属性和方法. 2. Number 对象 :Js中提供数字的对象.包含整数.浮 ...
- Harmonic Number(调和级数+欧拉常数)
题意:求f(n)=1/1+1/2+1/3+1/4-1/n (1 ≤ n ≤ 108).,精确到10-8 (原题在文末) 知识点: 调和级数(即f(n))至今没有一个完全正确的公式, ...
- Java 特定规则排序-LeetCode 179 Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- Eclipse "Unable to install breakpoint due to missing line number attributes..."
Eclipse 无法找到 该 断点,原因是编译时,字节码改变了,导致eclipse无法读取对应的行了 1.ANT编译的class Eclipse不认,因为eclipse也会编译class.怎么让它们统 ...
- 移除HTML5 input在type="number"时的上下小箭头
/*移除HTML5 input在type="number"时的上下小箭头*/ input::-webkit-outer-spin-button, input::-webkit-in ...
- iOS---The maximum number of apps for free development profiles has been reached.
真机调试免费App ID出现的问题The maximum number of apps for free development profiles has been reached.免费应用程序调试最 ...
随机推荐
- css相关整理-其他
1.设备像素(device pixel): 设备像素是物理概念,指的是设备中使用的物理像素.CSS像素(css pixel): CSS像素是Web编程的概念,指的是CSS样式代码中使用的逻辑像素.通过 ...
- vs2017无法安装
vs2017无法安装,无错误提示和日志 参考:https://blog.csdn.net/jq0123/article/details/83987686 但是解决方法不一样,运行安装程序没有提示,需要 ...
- 【VIM】-NO.140.VIM.1 -【VIM】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- windows下复制文件报错“文件名对目标文件夹可能过长 。您可以缩短文件名并重试,或者......”
我将一个路径下文件夹复制到另一个路径下时,出现了报错,报错图片如下: 然后查资料发现: 1.文件名长度最大为255个英文字符,其中包括文件扩展名在内.一个汉字相当于两个英文字符.2.文件的全路径名长度 ...
- B. Lynyrd Skynyrd
传送门: 题意:给出 n,m,q 然后给出模板串,从1-n数字只出现一次,然后给出长度为m的要询问的串. q组询问:每组询问输出 ‘1’或者‘0’ 每组询问 一对x,y 问在x到y中有没有模板串 ...
- UML第三次作业
一.PlantUML类图 语法学习小结 关系上的标识:在关系之间使用标签来说明时, 使用 :后接 标签文字.对元素的说明,可以在每一边使用 "" 来说明. 1 @startuml ...
- Hadoop多租户架构配置
cloudera manager 进到cluster里面,点击Dynamic Resource Pools,没做任何配置默认情况下,资源池里有个default资源组 hadoop jar /usr/l ...
- puppeteer(三)常用API
1.Puppeteer 简介 Puppeteer 是一个node库,他提供了一组用来操纵Chrome的API, 通俗来说就是一个 headless chrome浏览器 (当然你也可以配置成有UI的,默 ...
- NOIP2018总结
细细想来,学习OI也有4年多的时间了,今年已经是第二次参加noip提高组了,有必要写点什么了 NOIP2018 记得在天刚蒙蒙亮的时候走进70中,这是第四次了,但紧张只增不减,在刺骨的寒风下身体微微发 ...
- week1 - Python基础1 介绍、基本语法、流程控制
知识内容: 1.python介绍 2.变量及输入输出 3.分支结构 4.循环结构 一.python介绍 Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发 ...