AIM Tech Round 4 (Div. 2) D. Interactive LowerBound
2017-08-26 02:20
495 查看
假设可以暴力找k次,剩下的就是1999 - k次随机
找不到的概率就是1 - ((n - k)/n)^(1999 - k)
用随机数询问
记录最靠近答案的 <= x的位置
然后暴力
找不到的概率就是1 - ((n - k)/n)^(1999 - k)
用随机数询问
记录最靠近答案的 <= x的位置
然后暴力
#include <iostream> #include <algorithm> #include <sstream> #include <string> #include <queue> #include <cstdio> #include <map> #include <set> #include <utility> #include <stack> #include <cstring> #include <cmath> #include <vector> #include <ctime> < 4000 span class="hljs-preprocessor">#include <bitset> using namespace std; #define pb push_back #define sd(n) scanf("%d",&n) #define sdd(n,m) scanf("%d%d",&n,&m) #define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k) #define sld(n) scanf("%lld",&n) #define sldd(n,m) scanf("%lld%lld",&n,&m) #define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k) #define sf(n) scanf("%lf",&n) #define sff(n,m) scanf("%lf%lf",&n,&m) #define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k) #define ss(str) scanf("%s",str) #define ans() printf("%d",ans) #define ansn() printf("%d\n",ans) #define anss() printf("%d ",ans) #define lans() printf("%lld",ans) #define lanss() printf("%lld ",ans) #define lansn() printf("%lld\n",ans) #define fansn() printf("%.5f\n",ans) #define r0(i,n) for(int i=0;i<(n);++i) #define r1(i,e) for(int i=1;i<=e;++i) #define rn(i,e) for(int i=e;i>=1;--i) #define rsz(i,v) for(int i=0;i<(int)v.size();++i) #define szz(x) ((int)x.size()) #define mst(abc,bca) memset(abc,bca,sizeof abc) #define lowbit(a) (a&(-a)) #define all(a) a.begin(),a.end() #define pii pair<int,int> #define pli pair<ll,int> #define mp make_pair #define lrt rt<<1 #define rrt rt<<1|1 #define X first #define Y second #define PI (acos(-1.0)) #define sqr(a) ((a)*(a)) typedef long long ll; typedef unsigned long long ull; const int mod = 1000000000+7; const double eps=1e-9; const int inf=0x3f3f3f3f; const ll infl = 10000000000000000; const int maxn= 1000+10; const int maxm = 10000+10; int in(int &ret) { char c; int sgn ; if(c=getchar(),c==EOF)return -1; while(c!='-'&&(c<'0'||c>'9'))c=getchar(); sgn = (c=='-')?-1:1; ret = (c=='-')?0:(c-'0'); while(c=getchar(),c>='0'&&c<='9')ret = ret*10+(c-'0'); ret *=sgn; return 1; } int id[maxn]; int main() { #ifdef LOCAL freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif // LOCAL // freopen("kingdom.in","r",stdin); // freopen("kingdom.out","w",stdout); int n,st,x; sddd(n,st,x); r0(i,1000)id[i] = i*(1000000009LL) % n * 1000000007 % n + 1; int ans=-1; int v,nt; r0(i,1000) { printf("? %d\n",id[i]); fflush(stdout); sdd(v,nt); if(v<=x&&ans<v)ans = v,st = nt; } while(~st&&ans<x) { printf("? %d\n",st); fflush(stdout); sdd(v,nt); ans = v; st = nt; } if(ans>=x) printf("! %d",ans); else printf("! -1"); fflush(stdout); return 0; }
相关文章推荐
- AIM Tech Round 4 (Div. 2) D. Interactive LowerBound
- 【AIM Tech Round 4 (Div. 1) B】Interactive LowerBound
- Codeforces刷题之路——AIM Tech Round 3 (Div. 2) A. Juicer
- AIM Tech Round 3 (Div. 2) A. Juicer
- AIM Tech Round 3 (Div. 2)D. Recover the String(贪心+字符串)
- AIM Tech Round 3 (Div. 1) C. Centroids(树形dp)
- CF AIM Tech Round 3 (Div. 2) D - Recover the String
- AIM Tech Round (Div. 2) D. Array GCD dp
- #AIM Tech Round [div2] C. Graph and String 【连通图、染色】
- AIM Tech Round [div2] C. Graph and String
- AIM Tech Round 3 (Div. 2) A , B , C
- AIM Tech Round 3 (Div. 2)
- AIM Tech Round 3 (Div. 2) E. Connecting Universities 【构造】
- Codeforces AIM Tech Round 3 (Div. 2)(A-D 未完)
- AIM Tech Round 4 (Div. 2)(A,暴力,B,组合数,C,STL+排序)
- AIM Tech Round (Div. 2) B. Making a String 贪心
- AIM Tech Round 3 (Div. 1) B. Recover the String 构造
- Codeforces AIM Tech Round (Div. 1) A Graph and String 想法
- AIM Tech Round 3 (Div. 2) 题解
- AIM Tech Round 4 (Div. 2) B