传送门

根据国家集训队2014论文集中胡泽聪的随机化算法可以通过这道题。

对于每个数,它有12" role="presentation" style="position: relative;">1212的概率在最后的答案序列中,这样我们每次随机出序列中的一个数,然后看它的因子有没有符合条件的更新答案就行了。

代码;

#include<bits/stdc++.h>
#define ll long long
#define N 1000005
using namespace std;
int n,tot[N],sum[N];
ll x[N],ans,g[N],divv[N];
set<ll>s;
inline ll read(){
    ll ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
inline ll gcd(ll a,ll b){while(b){ll t=a;a=b,b=t%a;}return a;}
inline ll max(ll a,ll b){return a>b?a:b;}
inline void calc(int pos){
    int siz=0;
    for(int i=1;i<=n;++i)g[i]=gcd(x[i],x[pos]);
    for(int i=1;1ll*i*i<=x[pos];++i){
        if(x[pos]%i)continue;
        divv[++siz]=i;
        if(1ll*i*i==x[pos])continue;
        divv[++siz]=x[pos]/i;
    }
    sort(divv+1,divv+siz+1),siz=unique(divv+1,divv+siz+1)-divv-1;
    for(int i=1;i<=siz;++i)tot[i]=sum[i]=0;
    for(int i=1;i<=n;++i)++tot[lower_bound(divv+1,divv+siz+1,g[i])-divv];
    for(int i=1;i<=siz;++i){
        if(divv[i]<=ans)continue;
        for(int j=i;j<=siz;++j)if(divv[j]%divv[i]==0)sum[i]+=tot[j];
    }
    for(int i=siz;i;--i){
        if(divv[i]<=ans)break;
        if(sum[i]*2>=n){ans=divv[i];break;}
    }
}
int main(){
    srand(time(NULL)),n=read(),ans=1;
    for(int i=1;i<=n;++i)x[i]=read();
    for(int i=1,dep=0;dep<=12&&i<=(n<<1);++dep,++i){
        int pos=1ll*rand()*rand()%n+1;
        if(s.count(x[pos])){--dep;continue;}
        s.insert(x[pos]),calc(pos);
    }
    printf("%I64d",ans);
    return 0;
}

2018.09.14 codeforces364D(随机化算法)的更多相关文章

  1. 2018.09.14 codechef Milestone(随机化算法)

    传送门 由于存在不超过7条直线可以覆盖超过所有的点. 所以如果我们随机选点的话(每次随机两个) 那么得到的解恰好为最优解的概率是149" role="presentation&qu ...

  2. 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)

    传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...

  3. 2018.09.14 洛谷P3931 SAC E#1 - 一道难题 Tree(树形dp)

    传送门 简单dp题. f[i]表示以i为根的子树被割掉的最小值. 那么有: f[i]=min(∑vf[v],dist(i,fa))" role="presentation" ...

  4. 2018.09.14 bzoj2982: combination(Lucas定理)

    传送门 貌似就是lucas的板子题啊. 练一练手感觉挺舒服的^_^ 代码: #include<bits/stdc++.h> #define mod 10007 #define ll lon ...

  5. 牛客 Fruit Ninja 2018 ACM 上海大都会赛 (随机化算法)

    题目链接:Fruit Ninja 比赛链接:2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 题目描述 Fruit Ninja is a juicy action game enjoyed ...

  6. Linux JDK 安装及卸载 http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

    参考:http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

  7. POJ 矩阵相乘 (随机化算法-舍伍德(Sherwood))

    周三的算法课,主要讲了随机化算法,介绍了拉斯维加斯算法,简单的理解了为什么要用随机化算法,随机化算法有什么好处. 在处理8皇后问题的时候,穷举法是最费时的,回朔比穷举好点,而当数据量比较大的时候,如1 ...

  8. 2016.09.14,英语,《Using English at Work》全书笔记

    半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...

  9. POJ3318--Matrix Multiplication 随机化算法

    Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...

随机推荐

  1. 3.mybatis实战教程(mybatis in action)之三:实现数据的增删改查

    转自:https://blog.csdn.net/tangruyi1992/article/details/52583910 前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User. ...

  2. VB6 实现命令行调用时附着到原控制台

    Public Declare Function AttachConsole Lib "kernel32.dll" (ByVal ProcessID As Integer) As B ...

  3. Java Future 和 FutureTask 源码Demo

    Future 是一个接口,看源码有Future 和 FutreTask 使用Demo package java.util.concurrent; /** * A <tt>Future< ...

  4. Eclipse安装Svn无法连接问题

    在Eclipse市场上安装完SVN插件后连接SVN时出现以下错误: SVN: '0x00400006: Validate Repository Location' operation finished ...

  5. jstl fmt

    1)导入jstl 包,加载ftm标签 首先将jstl的jar包放入类库中,使用1.2版本 其次在jsp文件中引入所需要的 标记库,对于 ftm 标签,如下: <%@ taglib prefix= ...

  6. Haskell语言学习笔记(44)Lens(2)

    自定义 Lens 和 Isos -- Some of the examples in this chapter require a few GHC extensions: -- TemplateHas ...

  7. 复制CentOS虚拟机网络配置

    复制出来的CentOS虚拟机,网络需要重新配置.   卸载原来的VMware网卡,重新启用一块新的网卡,网卡网段要匹配.   ifconfig -a 查看当前启用网卡的mac地址 编辑/etc/ude ...

  8. mysql备份和还原命令

    备份和还原数据库都是在未登录的前提下进行命令操作的: 1.备份表: mysqldump -u root -p dbname table1 table2 > D:\sqlback.sql 2.备份 ...

  9. spring 整合 struts2 xml配置

    整合之前要搞清楚struts2是什么; struts2:表现层框架  增删改查  作用域  页面跳转   异常处理  ajax 上传下载  excel   调用service spring :IOC/ ...

  10. spark UDF函数

    Spark(Hive) SQL中UDF的使用(Python):http://www.tuicool.com/articles/3yMBNb7