题面

传送门

分析

通过二分答案,我们显然可以求出数组中最大的数,即等差数列的末项

接着随机取一些数组中的数,对他们两两做差,把得到的差取gcd即为公差

例a={1,5,9,13},我们随机取了1 9 13,两两的差为8,4,12,取gcd为4

已知末项和公差即可求出首项

可以证明错误的概率< \(1.86185\times10 ^{-9}\)

具体证明我也不懂,可以看cf官方题解,需要用到莫比乌斯反演

注意生成随机数时不能直接用rand(),因为rand()的返回值<32768,而n很可能>32768,需要用rand()*rand()再%n

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int n;
int ask1(int x){
printf("? %d\n",x);
fflush(stdout);
int ans=0;
scanf("%d",&ans);
return ans;
}
int ask2(int x){
printf("> %d\n",x);
fflush(stdout);
int ans=0;
scanf("%d",&ans);
return ans;
} int asks=0;
int bin_search(int l,int r){
int ans=0;
while(l<=r){
int mid=(l+r)>>1;
asks++;
if(ask2(mid)){
l=mid+1;
}else{
ans=mid;
r=mid-1;
}
}
return ans;
} int a[62];
inline int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
inline int random(){
return (long long)rand()*rand()%n+1;
}
int main(){
srand(19260817);
scanf("%d",&n);
fflush(stdout);
int x=bin_search(0,1e9+1);
// printf("debug:%d\n",x);
for(int i=1;i<=60-asks;i++){
a[i]=ask1(random());
}
int ans=0;
for(int i=1;i<=60-asks;i++){
for(int j=i+1;j<=60-asks;j++){
ans=gcd(ans,abs(a[i]-a[j]));
}
}
printf("! %d %d\n",x-ans*(n-1),ans);
}

Codeforces 1114E(数学+随机算法)的更多相关文章

  1. [Codeforces 364D]Ghd(随机算法+gcd)

    [Codeforces 364D]Ghd(随机算法) 题面 给出n个正整数,在其中选出n/2(向上取整)个数,要求这些数的最大公约数最大,求最大公约数的最大值 分析 每个数被选到的概率\(\geq \ ...

  2. tsp问题-遍历算法/随机算法

    旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路 ...

  3. 微信红包中使用的技术:AA收款+随机算法

    除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...

  4. POJ 3318 Matrix Multiplication(随机算法)

    题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...

  5. 抽奖随机算法的技术探讨与C#实现

    一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...

  6. hdu 4712 (随机算法)

    第一次听说随机算法,在给的n组数据间随机取两个组比较,当随机次数达到一定量时,答案就出来了. #include<stdio.h> #include<stdlib.h> #inc ...

  7. 权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

  8. hdu 4712 Hamming Distance ( 随机算法混过了 )

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  9. HDU4712+随机算法

    随机算法 求n个20位的2进制串的MinDist. Dist:两个串的异或结果中1的个数 /* 随机算法 */ #include<algorithm> #include<iostre ...

随机推荐

  1. jQuery easyUI 使用 datagrid 表格

    获取后台数据依旧是使用一般处理程序(ashx) ,分页上添加一个函数(pagerFilter(data)) 前端代码: <%@ Page Language="C#" Auto ...

  2. JavaScript —— 正则表达式元字符

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. springboot创建一个服务,向eureka中注册,使用swagger2进行服务管理

    首先pom.xml文件,spring boot.springcloud版本很麻烦,容易出问题 <?xml version="1.0" encoding="UTF-8 ...

  4. 手写9x9乘法表,冒泡排序

    手写9x9乘法表,冒泡排序 9x9乘法表 class Demo {public static void main(String[] args) {for(int x = 0;x <= 9; x+ ...

  5. html5中play 方法和pause方法在video的应用

    play();播放 pause();暂停 代码实例: <!DOCTYPE html> <html lang="en"> <head> <m ...

  6. vue新建项目之标准路由配置--父子嵌套界面

    配置路由所有用到的地方总共四步或者说四处 1.index.js(src--router--index.js) 父子界面嵌套---需要配置子路由 import Vue from 'vue' import ...

  7. java 时间戳转为时间

    Date date = new Date(Long.parseLong(String.valueOf("1560235259477")));SimpleDateFormat for ...

  8. python基础知识(1)(个人整理)

    import文件夹下的py文件: 情况1: `-- src    |-- mod1.py    `-- test1.py 直接 import mod1.py即可 情况2: -- src |-- mod ...

  9. 如何在pycharm中进入shell脚本调试代码

    首先在Teramal终端 输入python manage.py shell 然后进行下图操作来调试代码

  10. 威胁预警|Solr velocity模板注入远程命令执行已加入watchbog武器库,漏洞修补时间窗口越来越短

    概述 近日,阿里云安全团队监测到挖矿团伙watchbog更新了其使用的武器库,增加了最新Solr Velocity 模板注入远程命令执行漏洞的攻击方式,攻击成功后会下载门罗币挖矿程序进行牟利.建议用户 ...