bzoj 3837 (随机过题法了解一下)
3837: [Pa2013]Filary
Time Limit: 60 Sec Memory Limit: 256 MB
Submit: 395 Solved: 74
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
7 4 10 8 7 1
Sample Output
HINT
听说大家都喜欢随机过题法,于是我切一道(正解是)随机的题目涨涨姿势。
#include<bits/stdc++.h>
#define clr(x) memset(x,0,sizeof(x))
#define clr_1(x) memset(x,-1,sizeof(x))
#define INF 0x3f3f3f3f
#define LL long long
#define pb push_back
#define mod 1000000007
#define ls(i) (i<<1)
#define rs(i) (i<<1|1)
#define mp make_pair
#define fi first
#define se second
using namespace std;
const int N=1e7+;
const int M=1e5+;
int inf[N],prime[N],pre[N],g[N],num[N];
int tot;
int gcd(int a,int b)
{
int c;
while(b)
c=a%b,a=b,b=c;
return a;
}
void init()
{
tot=;
int n=;
for(int i=;i<=n;i++)
{
if(!inf[i])
prime[++tot]=i,pre[i]=tot;
for(int j=;j<=tot && prime[j]*i<=n;j++)
{
inf[prime[j]*i]=;
pre[prime[j]*i]=j;
if(i%prime[j]==) break;
}
}
return ;
}
int a[M],b[M];
int main()
{
init();
int n,m,k;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",a+i);
int p=log10(n)+;
srand(time());
m=k=;
while(p--)
{ int pos=rand()%n+;
int tmp=;
int minm=,mink=;
for(int i=;i<=n;i++)
{
b[i]=abs(a[i]-a[pos]);
if(!b[i])
tmp++;
}
for(int i=;i<=n;i++)
{
int t=b[i];
while(t && t!=)
{
int temp=pre[t];
num[temp]++,g[temp]=gcd(g[temp],b[i]);
if(mink<num[temp]) mink=num[temp],minm=g[temp];
else if(mink==num[temp]) minm=max(g[temp],minm);
while(t%prime[temp]==) t/=prime[temp];
}
}
if(mink+tmp>k) k=mink+tmp,m=minm;
else if(mink+tmp==k) m=max(m,minm);
for(int i=;i<=n;i++)
{
int t=b[i];
while(t && t!=)
{
int temp=pre[t];
num[temp]=,g[temp]=;
while(t%prime[temp]==) t/=prime[temp];
}
}
}
printf("%d %d\n",k,m);
return ;
}
bzoj 3837 (随机过题法了解一下)的更多相关文章
- ppt VBA 实现随机抽题
目录 目标/最终效果 关于VBA VBA简单示例 检查环境 步骤 VBA实现随机抽题 todo challenge 目标/最终效果 目标是制作一个ppt,实现随机抽题,具体描述: 第一页幻灯片中:点击 ...
- HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)
HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...
- BZOJ第一页刷题计划
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...
- B4010 菜肴制作 拓扑排序(附随机跳题代码)
今天写了一个自己的随机跳题小程序,第一次试发现跳的全是不可做题,但是在周围我一眼看见了这个题,不能说一眼看出来,但是也是比较有思路,所以就做他了! 做得比较顺利,做完之后美滋滋,突然发现样例第三组过不 ...
- 【BZOJ】初级水题列表——献给那些想要进军BZOJ的OIers(自用,怕荒废了最后的六月考试月,刷刷水题,水水更健康)
BZOJ初级水题列表——献给那些想要进军BZOJ的OIers 代码长度解释一切! 注:以下代码描述均为C++ RunID User Problem Result Memory Time Code_Le ...
- bzoj 3837 pa2013 Filary
bzoj 先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界 然后我们每次随机选出一个数\(a_i\ ...
- bzoj 3224 splay模板题4
再刷水题我就废了... #include<iostream> #include<cstdio> #include<algorithm> #include<cs ...
- bzoj 3223 splay模板题3
水题...貌似理解splay怎么维护数列了... 每个点维护一个size,它的位置就是它的size,区间翻转的话可以打标记,find的时候push_down,交换左右子树. #include<i ...
- bzoj 4300: 绝世好题
4300: 绝世好题 Time Limit: 1 Sec Memory Limit: 128 MB Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi& ...
随机推荐
- C# IsAssignableFrom与IsSubClassOf 判断匿名类是否继承父类
public class Dog : Animal { public string name { get; set; } } public class Animal { public string i ...
- ES6的优雅方法
1.箭头函数 // ES5 var selected = allJobs.filter(function (job) { return job.isSelected(); }); // ES6 var ...
- JS设计模式——8.桥接模式
桥接模式的用途 在实现API的时候,桥接模式非常有用. 在设计一个JavaScript API的时候,可以用这个模式来弱化它与使用它的类和对象之间的耦合. 示例:事件监听器 桥接模式最常见和实际的应用 ...
- [转]KMP 算法
KMP 算法,俗称“看毛片”算法,是字符串匹配中的很强大的一个算法,不过,对于初学者来说,要弄懂它确实不易.整个寒假,因为家里没有网,为了理解这个算法,那可是花了九牛二虎之力!不过,现在我基本上对这个 ...
- bootstrap-datetimepicker中设置中文
1.引入插件文件,同时引入相应的语言文件 <script src="bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.j ...
- oracle 修改属性
alter table 表名 modify 字段名 类型; alter table 表名 modify 字段名 属性名; alter table TEST modify sbirthday not n ...
- 使用Picker的时候,让input输入框使用焦点,手机键盘不弹出
$("#address").click(function(){ document.activeElement.blur(); })
- Python标准库笔记(6) — struct模块
该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换.这可以用于处理存储在文件中或从网络连接中存储的二进制数据,以及其他数据源. 用途: 在Python基本数据类型和二进制数 ...
- 查看gcc的默认宏定义命令【转】
转自:http://blog.csdn.net/cywosp/article/details/10730931 有些时候我们在编写代码或者阅读开源项目时经常会遇到一些陌生的宏定义,在找遍所有源代码都没 ...
- echarts 移动端地图数据可视化开发教程
如上效果图: 以下未代码: <!doctype html> <html lang="en"> <head> <meta charset ...