cf 843 B Interactive LowerBound [随机化]

题面:

传送门

思路:

这是一道交互题

比赛的时候我看到了直接跳过了......

后来后面的题目卡住了就回来看这道题,发现其实比较水

实际上,从整个序列里面随机选1000个数出来询问,然后从里面找出比x小的最大的那个,再往后面搜1000个数(顺序),这样的方法,不成功率是1.7e-9......

所以随机化就可以了~

(要是这样还WA那真的是脸黑呢......)

Code:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<ctime>
 6 using namespace std;
 7 int n,st,x;
 8 int val[50010],next[50010];
 9 int cnt;
10 struct node{
11     int v,p;
12 }s[2010];
13 bool cmp(node l,node r){
14     return l.v<r.v;
15 }
16 int main(){
17     int i,tmp,ttmp,t1,t2;
18     srand(time(NULL));
19     scanf("%d%d%d",&n,&st,&x);
20     printf("? %d",st);
21     scanf("%d%d",&t1,&t2);
22     if(x<t1){
23         printf("! -1");return 0;
24     }
25     val[st]=t1;next[st]=t2;
26     for(i=2;i<=min(1005,n);i++){
27         tmp=rand()*rand()%n+1;
28         printf("? %d",tmp);
29         scanf("%d%d",&t1,&t2);
30         s[++cnt].v=t1;s[cnt].p=tmp;
31         val[tmp]=t1;next[tmp]=t2;
32     }
33     sort(s+1,s+cnt+1,cmp);
34     for(i=1;i<cnt;i++){
35         if(s[i].v<x&&s[i+1].v>=x) break;
36     }
37     tmp=s[i].p;
38     if(n<=1005){
39         printf("! %d",val[tmp]);return 0;
40     }
41     for(i=1006;i<=1999;i++){
42         ttmp=next[tmp];
43         printf("? %d",ttmp);
44         scanf("%d%d",&val[ttmp],&next[ttmp]);
45         if(val[ttmp]>=x){
46             printf("! %d",val[tmp]);return 0;
47         }
48         tmp=ttmp;
49     }
50 }

原文地址:https://www.cnblogs.com/dedicatus545/p/8455292.html

时间: 2024-08-28 03:03:10

cf 843 B Interactive LowerBound [随机化]的相关文章

843B - Interactive LowerBound

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\n", id); 7 fflush(stdout); 8 pair <int, int> p; 9 sc

CF 843 A. Sorting by Subsequences

A. Sorting by Subsequences You are given a sequence a1,?a2,?...,?an consisting of different integers. It is required to split this sequence into the maximum number of subsequences such that after sorting integers in each of them in increasing order,

cf 843 A Sorting by Subsequences [建图]

题面: 传送门 思路: 这道题乍一看有点难 但是实际上研究一番以后会发现,对于每一个位置只会有一个数要去那里,还有一个数要离开 那么只要把每个数和他将要去的那个位置连起来,构成了一个每个点只有一个入边一个出边的一张图 那么在这张图里的一个环,就代表着一个满足条件的子序列 所以只要把图建出来以后,统计图中的每一个环就可以了 Code: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #includ

几道随机化题

随机大法好,乱搞出奇迹. pro:给一个n*m的网格,每个格子上有一种颜色或障碍,求最小的不含障碍的联通块包含至少k个颜色. n,m<=100 color<=n*m k<=5 sol:对于color比较小的情况,比如color=k,就是一个裸的斯坦纳树.然后我们每次将所有颜色随机分到k个盒子里,一个盒子都染成相同颜色,然后按上述方法做,取最小值.每次做解是可行的,是最优解的情况是刚好随机到最后答案的颜色在不同盒子里,大概就是k!/(k^k). pro:给一张无向联通图,问删去两条边使图不

【AIM Tech Round 4 (Div. 2) D Prob】

·题目:D. Interactive LowerBound ·英文题,述大意:       有一个长度为n(n<=50000)的单链表,里面的元素是递增的.链表存储在一个数组里面,给出长度n.表头在数组的下标和一个值w.题目要求求出链表中大于等于w值的元素中的最小元素.注意,这道题是一道interactive.由于链表是未知的,最多可以进行1999个询问,询问形式:?i.表示询问数组下标为i,询问后,会得到一个答案组(val,Next),表示询问的元素是val,链表下一位所在的数组下标是Next

【CF 474E】Pillars

[CF 474E]Pillars 离散化+线段树dp 大半夜写出来了...好长好长好长好长好挫--先把高度排序离散化 我又开了个哈希数组用来查某点对应离散后的点 然后遍历每个点时二分出满足题意的区间(1~h-d)(h+d~max) 然后线段树查两个区间当前最大长度的序列 累计到当前点对应的树内点 同时更新他的父亲点们的最大长度 再把之前最大长度的末尾作为当前点的前驱 如果没有就用当前点自己做前驱 最后输出树根存的节点的前驱们(即为树内最长的序列) 各种节点哈希的有点混乱--代码--看乱了就别看了

微信 {&quot;errcode&quot;:40029,&quot;errmsg&quot;:&quot;invalid code, hints: [ req_id: Cf.y.a0389s108 ]&quot;}

{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"} 问题:微信网页授权后,获取到 openid 了,一刷新又没了 微信网页授权获取到的 code 只能使用一次(5分钟内有效),使用一次后,马上失效. 页面授权跳转成功,根据 code 也换取到 openid 了. 此时刷新页面,并不会再次进行授权,而是直接刷新了一下上一次授权跳转后的链接,带的还是

随机化一维数组

一 问题:假设有一个一维整型数组,随机化这个数组,即使得每个元素在数组中随机出现,且概率一样. 二 解题思路: 1. 构造两个数组,一个辅助数组,用于哈希,另一个用于保留优先级.例如,输入一组数据2,1,0 那么,辅助数组为0,1,2,即首先随机生成一个3之内的整数,比如2,如果在2的位置没有元素,则放入,否则再次随机生成元素,直到辅助数组中所有元素都不相同,将这些都不相同的元素放入优先级数组. 2. 按照优先级,对原数组进行插入排序. 三 代码 /***********************

CF with friends and user&#39;s influence considered on NYC data(updated Aug,11st)

Here is the code link: https://github.com/FassyGit/LightFM_liu/blob/master/U_F1.py I use NYC data as other experimens. The split of the training data was seperated by the timeline, and I have normalised the interaction matrix by replacing the checkin