codeforces 1039B Subway Pursuit【二分+随机】

题目:戳这里

题意:一个点在[1,n]以内,我们可以进行4500次查询,每次查询之后,该点会向左或向右移动0~k步,请在4500次查询以内找到该点。

解题思路:一边二分,一边随机。

交互题似乎有好多是二分,上次交互题的二分调了好久,这次也是。我出数据水平又很低,所以至今不知道哪些数据可以卡哪些二分的写法,只能改一次交一次。。。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <string>
 5 #include <vector>
 6 #include <map>
 7 #include <cmath>
 8 #include <iostream>
 9 #include <random>
10 #include <ctime>
11 using namespace std;
12 typedef long long ll;
13 const int maxn = 1e6 + 10;
14 char ans[11];
15 bool ask(ll l, ll r)
16 {
17     //printf("$$$$");
18     printf("%lld %lld\n", l, r);
19     fflush(stdout);
20     scanf("%s", ans);
21     if(ans[0] == 'Y')
22     {
23         if(l == r) exit(0);
24         else return 1;
25     }
26     else return 0;
27 }
28 int na[maxn];
29 int main()
30 {
31     ll n, k;
32     srand(time(NULL));
33     scanf("%lld %lld", &n, &k);
34     ll l = 1, r = n;
35     while(l <= r)
36     {
37         ll mid = l + (r - l) / 2;
38         if(ask(l, mid))
39         {
40             r = mid;//注意这点,我的理解是mid可能就是我们要找的点,如果用常规写法r=mid-1会把这个点跳过去
41             //但我试了几个样例,发现在区间不断变化且有随机数的情况下,及时r=mid-1也能找到答案。。
42         }
43         else
44         {
45             l = mid + 1;
46         }
47             l = max(1ll, l - k);
48             r = min(n, r + k);
49             mid = l + rand()%(r - l + 1);
50             ask(mid, mid);
51             l = max(1ll, l - k);
52             r = min(n, r + k);
53     }
54     return 0;
55 }
View Code

 

转载于:https://www.cnblogs.com/zmin/p/9606685.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql截取指定长度

select *,SUBSTRING(sum_day,1,4) as sum_day from report_waste_sum_years SUBSTRING 用法SUBSTRING&#xff08;这个为想截取的字段&#xff0c;这个是从哪个开始&#xff0c;从哪个停止&#xff09; 从1开始&#xff0c;如我这1,4&#xff0c;最后截取的是这个字段的前4&…

kbmmw中向服务器端传递对象的一种简单方式

运行环境&#xff1a;delphi 10.2kbmmw 5.6.20 在kbmmw 的老版本中&#xff0c;要向服务器传送一个本地的对象&#xff0c;一般都需要进行一些转换&#xff0c;例如通过序列化的方式。 在新版的kbmmw中这一切都变的很简单&#xff0c;使用use... 方法就可以了&#xff0c;非常的…

给自己的网址加上https,添加ssl证书(springboot项目)

给自己的网址加上https,添加ssl证书1.先去阿里云官网首页&#xff0c;登录&#xff0c;找到 *SSL证书*2.点击 *立即购买*3.选择好点击确定就可以4.输入自己的域名和手机号&#xff0c;等待即可&#xff0c;成功他就叫给你发邮件5.通知你通过以后就进入SSL控制台&#xff0c;点击…

转载几个和职业建议相关的文章

不要自称为程序员http://www.ruanyifeng.com/blog/2011/10/dont_call_yourself_a_programmer.html 面试时&#xff0c;如何向公司提问&#xff1f;http://www.ruanyifeng.com/blog/2012/08/questions_you_need_to_ask_in_an_interview.html 七个对我最好的职业建议&#xff08;…

将多选框中的值,用String接收,并用‘,’隔开,到后台去循环这个数据

//首先通过CheckBox的名字去找到所有的CheckBox&#xff0c; var obj document.getElementsByName("checkbox1"); var check_val ""; //再来循环obj&#xff0c;把obj中的值全部放进check_val中&#xff0c;并用,隔开 for (var i 0; i < obj.length;…

Manacher【p1210】回文检测

题目描述--->P1210 回文检测 分析: 看到回文显然想到了manacher算法(线性求解回文串问题 如果不了解还是去敲一下板子,学习一下比较好.-->manacher 题目要求我们求出只包含字母的回文串的长度. 如果你会manacher,这很简单. 只需要在输入之后处理一下我们得到的串即可. 这…

怎么通过路径藏值,然后通过js,jq获取页面路径带过来的值

我们在转跳页面的时候经常会通过页面路径藏一下我们需要的值 url: ../ms/startCheck.html?projectIdprojectId&institutionsIdinstitutionsId, //这个是我转跳的路径&#xff0c;上面的projectId和institutionsId都是已经赋值了的//比如这个是我们的页面路径 http://127.…

SimpleDateFormat的一些简单用法:时间类型转字符串,字符串转时间

我们在编程过程中经常会用到SimpleDateFormat这个类&#xff0c;这里记录一下这个SimpleDateFormat的简单用法。 //这个是我们常见的&#xff0c;这个转格式主要是看后面括号里写的是什么样的格式 SimpleDateFormat formater new SimpleDateFormat("yyyy-MM-dd HH:mm:ss…

c++命名空间---namespace

C 命名空间 C 应用程序中。例如&#xff0c;您可能会写一个名为 func() 的函数&#xff0c;在另一个可用的库中也存在一个相同的函数 func()。这样&#xff0c;编译器就无法判断您所使用的是哪一个 func() 函数。 因此&#xff0c;引入了命名空间这个概念&#xff0c;专门用于解…

基于深度学习的中文语音识别系统框架(pluse)

目录 声学模型GRU-CTCDFCNNDFSMN语言模型n-gramCBHG数据集本文搭建一个完整的中文语音识别系统&#xff0c;包括声学模型和语言模型&#xff0c;能够将输入的音频信号识别为汉字。 声学模型使用了应用较为广泛的递归循环网络中的GRU-CTC的组合&#xff0c;除此之外还引入了科大…

jSignature签名的用法,一文教会你(一)前端代码

jSignature签名的用法1、先看看效果以后最后它是什么格式的2、先去下载该js3、下载以后就把它引入我们的HTML中4、看一下我的例子吧&#xff01;下期我们在讲&#xff0c;怎么把base64在后台处理&#xff0c;然后在存进我们指定的位置&#xff0c;以及怎么存数据库&#xff1b;…

jSignature签名的用法,一文教会你(二)后台代码

1、先在我们的项目里加几个工具类&#xff0c;代码如下 AbstractUploadAction &#xff08;名字可以自取&#xff0c;这个不影响&#xff09; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream;import javax.s…

mac系统,鼠标移动太慢

to check your speed:defaults read -g com.apple.mouse.scalingto set your speeddefaults write -g com.apple.mouse.scaling 7reboot your mac转载于:https://www.cnblogs.com/IWings/p/9614793.html

关于js的一些常用小知识点(持续更新)

关于js的一些常用小知识点1、获取页面中所有选中的CheckBox复选框的值2、js获取网页URL中所带的参数3、js模拟点击button4、前端传入后台list&#xff0c;后台是不能接收List的&#xff0c;就需要传的时候转化一下&#xff0c;把list转成String&#xff0c;后台用一个String型接…

esp32-智能语音-录音(保存于SD卡)

1 //初始化ES8388&#xff0c;更改为双麦 2 ESP_LOGI(TAG, "[ 2 ] Start codec chip"); 3 audio_hal_codec_config_t audio_hal_codec_cfg AUDIO_HAL_ES8388_DEFAULT(); 4 audio_hal_handle_t hal audio_hal_init(&audio_hal_codec_cfg, 0); 5 …

HTML5 多图片上传(前端+后台详解)

HTML5 多图片上传&#xff08;前端后台详解&#xff09;1、参考jquery插件库2、修改代码3、添加的后台代码4、删除的后台代码1、参考jquery插件库 手机端实现多图片上传 2、修改代码 我发现他这里的代码仅仅只是显示出来了&#xff0c;对后台一点作用都没有&#xff0c;于是…

vue2.0移动端自定义性别选择提示框

这篇文章主要是简单的实现了vue2.0移动端自定义性别选择的功能&#xff0c;很简单但是经常用到&#xff0c;于是写了一个小小的demo&#xff0c;记录下来。 效果图&#xff1a; 图片.png实现代码&#xff1a; <template><div class"app"><div class&q…

Linux的一些简单的常用命令

基本操作 基本操作 1>.ls &#xff08;横向查看目录&#xff09; ll&#xff08;竖排查看目录&#xff09; 2>.mkdir &#xff08;创建文件夹&#xff09; 3>.cd 文件夹名 &#xff08;进入该文件夹&#xff09; cd ..&#xff08;返回上一级目录&#xff09; 4>.…

程序10 VC编写批量重命名工具

实现对文件夹下的全部文件进行重命名。 本节编写一个批量重命名工具。学习内容&#xff1a;文件操作&#xff0c;文件遍历等知识API&#xff1a;CFileFindFindFileFindNextFilerename 视频学习地址&#xff1a;https://www.bilibili.com/video/av31482925/转载于:https://www.c…

每个线程只对一个数据操作就不会出现线程安全问题-------------成员变量,用来计算累加的和...

package charpter12; public class Processor implements Runnable { private int count; // 成员变量&#xff0c;用来计算累加的和 Override public void run() { for (int i 0; i < 100; i) { count i; } System.out.println(Thread.currentThread().getName() "…