题目链接(是的我越来越懒了。。)

题目大意及数据范围:

数据范围很大。“最小”二字让我们考虑二分,但是上界...不会爆long long让你写高精吧?

我们可以发现,∑ai一定满足条件,所以上界是1e13。为什么满足呢?因为C(n+m,n)是整数,所以n!| ( (n+m)!/m! ) ,所以满足。

然后问题只剩下怎么满足判断整除了。数很大,肯定要分解。n!的分解容易解决,因为我们只需考虑1e7范围内的质数即可,每次计算效率约为1e7/ln,总的复杂度能接受。所以只需解决各ai!如何分解。显然不能像n那个挨个质数地试,冗余过多,我们得考虑把各ai和在一起。既然都是阶乘,我们只需考虑每个数x对几个ai产生贡献即可(满足x≤ai的ai有几个),挨个将x分解的复杂度我们还是可以接受的(毕竟CF的机子,还开5s)。

总时间复杂度O(alog(max{ai}) )

#include <bits/stdc++.h>
using namespace std; #define rep(i,l,r) for(int i=l;i<=r;++i)
#define per(i,r,l) for(int i=r;i>=l;--i) typedef long long ll; const int N=1e6+,V=1e7; int n,a[N];
ll ans[V+];//ans[j] namespace Euler{
bool h[V+];
int pr[N],len,miz[V+];//miz[x]=no void sieve(){
rep(i,,V){
if(!h[i]){
pr[++len]=i;
miz[i]=len;
}
int val;
for(int j=;j<=len&&(val=pr[j]*i)<=V;++j){
h[val]=;
miz[val]=j;
if(i%pr[j]==) break;
}
} } void dvd(int x,int ct){//divide x to ans ans[no]
if(x==) return ;
int no=miz[x],P=pr[no];
while(x%P==){
ans[no]+=ct;
x/=P;
}
dvd(x,ct);
} void calc(){
int L=;
rep(i,,V){
while(a[L]<i&&L<=n) ++L;
//ct=n-L+1
dvd(i,n-L+);
}
} bool ck(ll val){
rep(j,,len){
ll sum=pr[j],P=pr[j],ad=;
while(sum<=val){
ad+=(val/sum);
sum*=P;
}
if(ad<ans[j]) return ;
}
return ;
} }
using Euler::sieve;
using Euler::calc;
using Euler::ck; int main(){ sieve(); scanf("%d",&n);
rep(i,,n) scanf("%d",&a[i]);
sort(a+,a++n); calc(); ll L=,R=1e13;
while(L<R){
ll mid=(L+R)>>;
if(ck(mid)) R=mid;
else L=mid+;
} printf("%lld\n",L); return ;
}

CF300E. Empire Strikes Back的更多相关文章

  1. codeforces 300E Empire Strikes Back 数论+二分查找

    题意:给定N个数a1,a2,a3...aN,现在要求最小的n满足 n!/(a1!*a2!*...*aN!) 是一个正整数的最小的n. 分析:这题的想法很明确,就是分解a1!*a2!*...*aN!,把 ...

  2. Empire Strikes Back

    题意: 给定$K$个数字,求最小的正整数$n$,使得$\prod_{i=1}^{K}{a_i !} | n!$ 解法: 注意到$$\sum_{p为质数}{1/p} = O(loglogn)$$, 这样 ...

  3. JSONP的诞生、原理及应用实例

    问题: 页面中有一个按钮,点击之后会更新网页中的一个盒子的内容. Ajax可以很容易的满足这种无须刷新整个页面就可以实现数据变换的需求. 但是,Ajax有一个缺点,就是他不允许跨域请求资源. 如果我的 ...

  4. R语言 recommenderlab 包

    recommend li_volleyball 2016年3月20日 library(recommenderlab) ## Warning: package 'recommenderlab' was ...

  5. R语言 推荐算法 recommenderlab包

    recommend li_volleyball 2016年3月20日 library(recommenderlab) library(ggplot2) # data(MovieLense) dim(M ...

  6. Web挖掘技术

      一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...

  7. BBC票选出的100部最经典美国电影,你看过几部?

    BBC票选出的100部最经典美国电影,你看过几部? 导读:BBC票选出的100部最经典美国电影,你看过几部? 2015-07-27欧美内参欧美内参欧美内参 微信号zoujinoumei 功能介绍< ...

  8. 人一生必看的100部电影(全球最佳电影排名榜TOP250)

    人一生必看的100部电影(全球最佳电影排名榜TOP250) 人的一生能看多少部电影?假设我们每周都看一部,从10岁看到80岁将会看3640部.但是我们也不可能喜欢这全部的电影.大多数的可能,我们会根据 ...

  9. Web采矿技术

      一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...

随机推荐

  1. 小白的首个maven web项目Step1软件安装一(jdk的下载配置和eclipse的安装)

    因为电脑太卡加了一个固态硬盘导致系统重装, 把之前的C盘和D盘合并成一个盘,这下之前下的杂七杂八的软件应该差不多都清干净了. 申请这个博客是想记录最近写项目学习的一些事,系统重装之后,发现自己都已经忘 ...

  2. 北航OO第一单元总结

    我本着公平公开公正的态度作出以下评价: 1.面向对象真的很修身养性 2.有一个好的身体非常重要 3.互相hack可以暴露人的阴暗面 好了,步入正题. 一.作业分析 1.第一次作业分析 1.1类图 1. ...

  3. R语言最优化(一维)

    最优化问题是普遍存在的,以前上运筹学课的时候也接触过最优化相关的问题,当时主要是理论课,并且关注的重点是单纯形法.运输问题以及图论等,这里指的最优化是指函数的最优化,即函数的极值,由于寻找一个局部最优 ...

  4. 关于FGPA的复位

    关于FGPA的复位 当初开始学FPGA的时候,总是疑惑:FPGA不是没有复位管教么,但总在always看到有复位信号.这个复位信号(我们暂且称为rst_n)从哪里来? 实际上是可以从两个方面获得的,这 ...

  5. 定义一个Map集合,key和value不规定类型,任意放入数据,用keySet()和 entrySet()两种方式遍历出Map集合的数据

    package com.lanxi.demo1_1_1; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  6. hdu4003详解(树形dp+多组背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 Find Metal Mineral Time Limit: 2000/1000 MS (Jav ...

  7. Vue语法学习第一课——插值

    学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...

  8. CSS规范—分类方法(NEC规范学习笔记)

    一.CSS文件的分类和引用顺序 Css按照性质和用途,将Css文件分成“公共型样式”.“特殊型样式”.“皮肤型样式”,并以此顺序引用,有需要可以添加版本号 1.公共型样式:包含以下几个部分 标签的重置 ...

  9. makefile笔记5 - makefile变量

    在 Makefile 中的定义的变量,就像是 C/C++语言中的宏一样,他代表了一个文本字串,在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方.其与 C/C++所不同的是,你可以 ...

  10. kafka学习笔记整理01

    Apache Kafka 消息中间件->流式数据处理平台 特点: 高可靠性(分布式.分区.复制和容错).高吞吐量.持久化 消息模式:1)队列式(或点对点):在点对点消息系统中,消息被保存在队列中 ...