Codeforces 844 D Interactive LowerBound(随机化)
2017-08-28 00:06
441 查看
题目地址
题意:给你一个结构体数组模拟的单链表,他有两个值,一个是该位的数字,还有一位是下一个节点的下标,这个数组长度为n,告诉你头结点的下标,求出最小的大于等于x的数字是什么。,你最多有2000次询问,询问的格式是为(? 下标)得到这个下标的结构体里面的值。
思路:这个是我没怎么学过的随机化算法的解法,我看了下大佬的博客,学会了点,因为有2000次查询,先1000次随机数查询缩小范围,然后再进行999级按照缩小的范围顺序遍历下去,如果能找到就输出,如果不行就输出-1。但是我有点不理解的是如果没有加上这句就wa第6个样例。
题意:给你一个结构体数组模拟的单链表,他有两个值,一个是该位的数字,还有一位是下一个节点的下标,这个数组长度为n,告诉你头结点的下标,求出最小的大于等于x的数字是什么。,你最多有2000次询问,询问的格式是为(? 下标)得到这个下标的结构体里面的值。
思路:这个是我没怎么学过的随机化算法的解法,我看了下大佬的博客,学会了点,因为有2000次查询,先1000次随机数查询缩小范围,然后再进行999级按照缩小的范围顺序遍历下去,如果能找到就输出,如果不行就输出-1。但是我有点不理解的是如果没有加上这句就wa第6个样例。
mt19937 myrand(time(0));然后我查了下,mt19937这个是随机化算法的东西,但是我不太理解为什么我已经
srand(time(NULL));,还是wa。
#include <bits/stdc++.h> #define N 110 #define M 500010 #define LL __int64 #define inf 0x3f3f3f3f3f3f3f3f #define lson l,mid,ans<<1 #define rson mid+1,r,ans<<1|1 #define getMid (l+r)>>1 #define movel ans<<1 #define mover ans<<1|1 using namespace std; mt19937 myrand(time(0)); const LL mod = 1e9 + 7; int main() { cin.sync_with_stdio(false); int n, x, y, z, id, ans, start; cin >> n >> start >> x; ans = -1, id = start; for (int i = 0; i < 1000; i++) { y = myrand() % n + 1; cout << "? " << y << endl; fflush(stdout); cin >> y >> z; if (y > ans&&y < x) { ans = y; id = z; } } for (int i = 1; i < 1000; i++) { if (id == -1) { break; } cout << "? " << id << endl; fflush(stdout); cin >> y >> z; if (y >= x) { cout << "! " << y << endl; return 0; } id = z; } cout << "! -1" << endl; return 0; } close
相关文章推荐
- Codeforces 844 D. Interactive LowerBound (随机)
- cf 843 B Interactive LowerBound [随机化]
- CodeForces 251A. Points on Line(数学 lower_bound )
- AIM Tech Round 4 (Div. 2) D. Interactive LowerBound
- 【AIM Tech Round 4 (Div. 1) B】Interactive LowerBound
- AIM Tech Round 4 (Div. 2) D. Interactive LowerBound
- [C++] upper_bound和lower_bound
- 关于二分(upper_bound,lower_bound)
- C++primer学习:关于upper_bound和lower_bound的探究.
- STL源码学习----lower_bound和upper_bound算法
- C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- lower_bound和upper_bound算法
- upper_bound,lower_bound,eaual_bound,equal_range二分搜索
- HDU 4585(Shaolin-Treap的lower_bound&upper_bound操作)
- Codeforces 844 A Diversity
- python实现的lower_bound和upper_bound
- STL之sort(),binary_search(),lower_bound(),upper_bound()函数
- STL algorithm之count、find、binary_search、lower_bound、upper_bound和equal_range的区别
- lower_bound()返回值
- GetLowerBound方法的用途