题意

  1. 有n个数字,数字范围为1~n且不重复。
  2. 有数字流传输过来,你预先不知道其位置,但是你可以在接收数字之前给其定下位置。
  3. 问:你能否在确定小于等于100个数字位置之前找到一个数字,这个数字 a[i] 满足 a[i]<min(a[i-1],a[i+1])。(a[0]=a[n+1]= ∞)

解题思路

  1. 数据范围n为10^5,通过线性输入肯定无法解题,因为前100个数字不一定有满足题意的数字。
  2. 所以想到了二分法,10^5 采用二分法,只用二分 16 次。
  3. 要想找到满足题意的数字,需要运用极值存在的充分条件——区间左端递减右端递增,则区间内一定存在极小值点。(虽然题目中的点是离散的,但是可以类比)。如图中(2)
  4. 不断二分,让区间 [l,r] 总是满足 a[l-1]>a[l] 且 a[r]<a[r+1] 。

注意

  1. 这题最难的地方在于不是常规的输入输出,你并不能一次性输入所有n个数字,然后判断得出结果。(通过强行让你flush实现)

C++ Code

#include <iostream>
using namespace std;
int a[100010];int main() {int n;cin >> n;int l = 1;int r = n;while(l < r){int m = (l+r)/2;cout << "? " << m << endl << flush;cout << "? " << m+1 << endl << flush;cin >> a[m] >> a[m+1];if(a[m] < a[m+1]){r = m;}else{l = m+1;}}// 此时l与r相等,输出l或r都可。 cout << "! " << l << endl;return 0;
}

Codeforces 1479A. Searching Local Minimum(注意输入+二分)相关推荐

  1. 1479A - Searching Local Minimum 交互,二分,2019 ccpc 哈尔滨 E 拓扑排序

    1479A - Searching Local Minimum 交互,二分 找一个区间[l,r]始终满足a[l+1]>a[l]&&a[r]<a[r+1],然后不断缩小区间当 ...

  2. CodeForces - 1480C Searching Local Minimum(交互+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的排列,需要找出一个"局部最小值",所谓"局部最小值"就是对于某个 iii 来说,满足 ai<ai− ...

  3. Codeforces Round #700 (Div. 2) C. Searching Local Minimum(交互)

    链接: C. Searching Local Minimum 题意: 给你一个大小为 n 排列 , 一次询问可以得到位置 i 的数,要求在不超过 100 次询问的条件下找到该排列的一个波谷,即找到位置 ...

  4. CF1479A Searching Local Minimum

    CF1479A Searching Local Minimum 题意: 题解: 先说结论: 若l,r满足: al−1>al,ar<ar+1a_{l-1}>a_{l},a_{r}< ...

  5. Codeforces Round #700 (Div. 2) C. Searching Local Minimum 交互二分

    传送门 题意: 给一个数组,让你找到a[i]<min(a[i+1],a[i−1])a[i]<min(a[i+1],a[i-1])a[i]<min(a[i+1],a[i−1])位置ii ...

  6. 【CodeForces - 361D】Levko and Array (二分,dp)

    题干: Levko has an array that consists of integers: a1, a2, ... , an. But he doesn't like this array a ...

  7. Codeforces - 1118D2 - Coffee and Coursework (Hard Version) - 二分

    https://codeforces.com/problemset/problem/1118/D2 也是很好想的一个二分啦. 验证m的可行性的时候,肯定是把最多咖啡因的咖啡先尽可能平均分到每一天,因为 ...

  8. CodeForces - 1560F2 Nearest Beautiful Number (hard version)(二分+数位dp)

    题目链接:点击查看 题目大意:给出一个十进制数字 nnn 和一个约束 kkk,问大于等于 nnn 且满足不同的数位个数小于等于 kkk 的最小的数字是多少 题目分析:自己写的贪心太丑了,就不放上来丢人 ...

  9. CodeForces - 1486C2 Guessing the Greatest (hard version)(二分+交互)

    题目链接:点击查看 题目分析:给出一个长度为 nnn 的序列,现在可以进行最多 202020 次查询,每次查询可以询问区间 [l,r][l,r][l,r] 中次大值的位置,现在要求在查询后输出最大值的 ...

最新文章

  1. mysql 非正常关闭_mysql非正常关机,无法启动解决方案(转)
  2. 多ajax请求的各类解决方案(同步, 队列, cancel请求)
  3. jpa mysql sql分页查询语句_JPA多条件复杂SQL动态分页查询功能
  4. AVCaptureMovieFileOutput 视频方向(锁定竖屏or不锁定都可以)
  5. ubuntu中如何解压rar文件
  6. P4097 [HEOI2013]Segment 李超线段树
  7. java remove map_Java HashMap remove()方法
  8. 使用委托(事件)或中介设计模式实现多个Windows窗体文本框的同步
  9. 蓝桥杯 ADV-85 算法提高 算术运算
  10. Android对话框_详解
  11. es 1.7 ik 配置
  12. Gartner发布2011年SIEM市场分析报告(幻方图)
  13. 处于停机等非正常状态_设备非正常停机管理指导办法
  14. 图像弱光增强:南洋理工提出流正则模型LLFlow(AAAI 2022)
  15. 揭秘网易视频云在数据传输方面的优化实战
  16. T3普V11.2补丁bug
  17. 经典逻辑题笔试题和答案(不断更新)
  18. 云计算是什么?3分钟了解云计算技术
  19. Windows下的systeminfo命令获取系统信息
  20. brocade 300 java版本_博科Brocade 300光纤交换机配置zone教程

热门文章

  1. Java黑皮书课后题第5章:**5.25(计算π)使用下面的数列可以近似计算π:4(1-1/3+1/5-1/7+……+(Math.pow(-1, i+1)/(2*i-1))
  2. error CS1002: ; expected 错误解决
  3. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...
  4. Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
  5. 0811-按钮操作(加法计算器)(拖控件找控件代码属性名称)(frame center bounds)(上下左右移动button图片)...
  6. Ubuntu上的samba共享文件安装配置
  7. 科学小世界,婚姻大殿堂
  8. 中班音乐计算机反思,中班歌曲《不再麻烦好妈妈》活动反思
  9. C# 系统应用之ListView实现简单图片浏览器
  10. 【数据结构与算法】之深入解析“汉诺塔问题”的求解思路与算法示例