zoukankan      html  css  js  c++  java
  • 843B

    843B - Interactive LowerBound

    有点懵比~~

    没看懂题解说的随机数概率什么的=_=

    先贴上dalao代码

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 inline pair <int, int> ask(int id) {
     6   printf("? %d
    ", id);
     7   fflush(stdout);
     8   pair <int, int> p;
     9   scanf("%d %d", &p.first, &p.second);
    10   return p;
    11 }
    12 
    13 inline void finish(int value) {
    14   printf("! %d
    ", value);
    15   fflush(stdout);
    16   exit(0);
    17 }
    18 
    19 inline int RAND(int n) {
    20   return abs((rand() << 15) + rand()) % n;
    21 }
    22 
    23 const int MAGIC = 1000;
    24 
    25 int main() {
    26   int n, start, x;
    27   scanf("%d %d %d", &n, &start, &x);
    28   srand(time(0));
    29   set <int> all;
    30   all.insert(start);
    31   while ((int) all.size() < min(n, MAGIC)) {
    32     all.insert(RAND(n) + 1);
    33   }
    34   vector < pair <int, int> > v;
    35   for (int i : all) {
    36     pair <int, int> z = ask(i);
    37     v.emplace_back(z.first, i);
    38   }
    39   sort(v.begin(), v.end());
    40   int ptr = start;
    41   for (int i = 0; i < (int) v.size(); i++) {
    42     if (v[i].first < x) {
    43       ptr = v[i].second;
    44     }
    45   }
    46   while (ptr != -1) {
    47     pair <int, int> z = ask(ptr);
    48     if (z.first >= x) {
    49       finish(z.first);
    50       return 0;
    51     }
    52     ptr = z.second;
    53   }
    54   finish(-1);
    55   return 0;
    56 }
    tourist
  • 相关阅读:
    动态规划-树形dp
    排队打水
    耍杂技的牛
    合并果子
    贪心问题-区间类
    动态规划-状态压缩dp
    Linux分区知识及企业场景分区76
    企业面试题-find结合sed查找替换
    企业面试题-利用三剑客
    alias-unalias
  • 原文地址:https://www.cnblogs.com/yijiull/p/7426894.html
Copyright © 2011-2022 走看看