首页 > 其他分享 >gym104090 The 2022 ICPC Asia Hangzhou Regional Programming Contest I. Guess Cycle Length

gym104090 The 2022 ICPC Asia Hangzhou Regional Programming Contest I. Guess Cycle Length

时间:2022-12-13 12:11:08浏览次数:51  
标签:Guess Contest Programming Length 3000 Cycle 步数 随机

题目大意

交互题

给出一个长度为n的排列p,初始有一个人在某个位置(未知)

每次询问可以给出一个步数x,然后人会向前走x步并返回所在位置的数字

在1e4次询问内找到n,n<=1e9

保证排列在交互前固定

题解

显然,要想知道n就必须要重复走到某个点,否则不同的点之间的关系是未知的

一个简单的想法是,先走k步走出一个长度为k的段,然后k步k步地跳,这样一圈下来一定会走到一开始的段

k取sqrt(n)得2sqrt(n)次,寄?


然后发现很重要的一点是,返回的是数字p[i]

也就是说,如果随机把人丢到一个位置,那么p的期望是n/2

同理,如果随机丢k次,则p的期望是nk/(k+1),和n的误差仅有n/(k+1)

这样就可以搞事了(注意次数≠步数
①先随机丢k次random步,那么可以得到t≈nk/(k+1),可以等价于向后走n/(k+1)步
②然后走k次1步,走出一个长为k的段A
③之后走1次t步,那么会走到段A末尾再向前n/(k+1)步的位置
④最后k步k步跳,大概跳n/k^2次就可以走到段A里面,刚好走完一圈

算一下次数,①k+②k+③1+④n/k^2,当k取1000时就只用3000次,所以k取3000就差不多了
(③④一定可以保证正确性,1e4次数也是用不完的

标签:Guess,Contest,Programming,Length,3000,Cycle,步数,随机
From: https://www.cnblogs.com/gmh77/p/16978223.html

相关文章

  • AtCoder Beginner Contest 281
    A-CountDown(abc281a)题目大意给定\(n\),输出\(n\)到\(1\)。解题思路直接输出即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=l......
  • atcoder beginner contest 144 Gluttony(二分答案)
    题目大意:有an,bn,我们找到an和bn每个元素的一种一一对应关系。使得min(max(ai*bi))。已知我们可以进行操作让an中的任一个元素减少1。操作数最大为k,问我们怎么操作,可以min(......
  • 大学生程序设计创新实践基地2022年冬季校赛(NPU ACM Winter Contest)
    大学生程序设计创新实践基地2022年冬季校赛(NPUACMWinterContest)总述总体考察对于板子的熟练变换,以及考察离谱地使用python和对getchar()以及EOF的基础掌握程度。B,D,E......
  • AtCoder Beginner Contest 242 F Black and White Rooks
    洛谷传送门AtCoder传送门不错的组合计数题。因为黑车和白车不能在同一行或者同一列,所以可以考虑枚举黑车有\(i\)行\(k\)列的位置放,白车有\(j\)行\(l\)列的位置......
  • AtCoder Beginner Contest 281
    \(\mathtt{rank:1119th}\)\(\mathtt{problem}\)\(\mathtt{A}\)\(\mathtt{B}\)\(\mathtt{C}\)\(\mathtt{D}\)\(\mathtt{E}\)\(\mathtt{F}\)\(\mathtt{G}\)\(\ma......
  • AtCoder Beginner Contest 281
    https://atcoder.jp/contests/abc281A-CountDown原题链接题意给出一个数\(n\),按降序输出所有小于或等于\(n\)的非负整数。分析签到题,循环并输出从\(n\)到\(......
  • AtCoder Beginner Contest 281
    比赛链接A-CountDownA题题面直接输出即可B-SandwichNumberB题题面这道题首先判断开头结尾是否为大写字母,然后判断总长度是否为8,然后对中间一段转数字即可。C......
  • 2022icpc杭州(The 2022 ICPC Asia Hangzhou Regional Programming Contest)
    链接:https://codeforces.com/gym/104090A.ModuloRuinstheLegend#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;i64exgcd(i64a,i64b,......
  • 2022ccpc威海(2022 China Collegiate Programming Contest (CCPC) Weihai Site)
    链接:https://codeforces.com/gym/104023A.Dunai签到C++Code#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidsolve(){intn;......
  • [Leetcode Weekly Contest]322
    链接:LeetCode[Leetcode]2490.回环句句子是由单个空格分隔的一组单词,且不含前导或尾随空格。例如,"HelloWorld"、"HELLO"、"helloworldhelloworld"都是符合要求的......