zoukankan      html  css  js  c++  java
  • 暑假集训Day7 F(交互)

    原题链接在这里:Problem - F - Codeforces

    “交互题首先想想有没有二分的思路”——大兔子

    这题挺玄学的,总共是60次问询,首先用二分定位最大值最坏用掉30次,剩下的只能靠随机抽取对应位,然后用差值之间的gcd去求公差,因为这是随机的,所以被卡的概率及其的小,(一开始直接正序问询然后被卡了),所以问询特定位的时候还是要随机操作

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 typedef long long LL;
     4 int n,a[100];
     5 bool vis[1000005];
     6 inline int gcd(int x,int y){return (y==0?x:gcd(y,x%y));}
     7 int main(){
     8     int i,j,zt,low,high,mid,lef,mx,gg;
     9     low=0,high=1e9;
    10     scanf("%d",&n);
    11     lef=60;
    12     while (low<=high){
    13         mid=(low+high)>>1;
    14         printf("> %d
    ",mid);fflush(stdout);
    15         scanf("%d",&zt);
    16         lef--;
    17         if (zt==1){
    18             low=mid+1;
    19             mx=mid;
    20         }
    21         else high=mid-1;
    22     }
    23     mx++;
    24     a[0]=0;
    25     a[++a[0]]=mx;
    26     if (lef>=n){
    27         for (i=1;i<=min(lef,n);i++){
    28             printf("? %d
    ",i);fflush(stdout);
    29             scanf("%d",&a[++a[0]]);
    30         }
    31         gg=abs(a[2]-a[1]);
    32         for (i=3;i<=a[0];i++)
    33             gg=gcd(gg,abs(a[i]-a[i-1]));
    34         printf("! %d %d",mx-gg*(n-1),gg);
    35         return 0;
    36     }
    37     srand((int)time(0));
    38     memset(vis,false,sizeof(vis));
    39     while (lef){
    40         zt=((LL)rand()*(LL)rand()%n*((LL)rand()*(LL)rand()%n))%n;
    41         if (vis[zt]==false){
    42             lef--;
    43             vis[zt]=true;
    44         }
    45     }
    46     a[0]=0;
    47     for (i=0;i<n;i++){
    48         if (vis[i]){
    49             printf("? %d
    ",i+1);fflush(stdout);
    50             scanf("%d",&a[++a[0]]);
    51         }
    52     }
    53     sort(a+1,a+a[0]+1);
    54     gg=abs(a[2]-a[1]);
    55     for (i=3;i<=a[0];i++)
    56         gg=gcd(gg,abs(a[i]-a[i-1]));
    57     printf("! %d %d",mx-gg*(n-1),gg);
    58     return 0;
    59 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    ECC 构筑安全可靠的区块链
    代理模式和装饰者模式
    Context都没弄明白,还怎么做Android开发?
    如何在Android Studio中查看一个类的继承关系呢?
    Android控件的继承关系
    安卓控件体系结构
    Android View框架总结(三)View工作原理
    Laravel中用GuzzleHttp
    学习PHP好,还是Python好呢?
    ElasticSearch入门 第一篇:Windows下安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/15037598.html
Copyright © 2011-2022 走看看