2017-02-23
来源:互联网 发布:阿里云 docker收费 编辑:程序博客网 时间:2024/05/21 17:49
内容:上周六考试第三题题解。
第三题(Half):
至今未明白问题:
1.不用以下代码仍可以过,那么这两行出现在题解上有什么用呢? srand(time(0));
random_shuffle(a+1,a+n+1);
1.srand(time(0));
这是用于初始化随机函数发生器的,计算机中的随机函数在生成一个随机数时需要用到一个称为随机数发生器的东西,如果不对其进行初始化,每次生成的随机数就会是相同的。
srand函数就用来初始化这个发生器,参数time(0)能够生成从1970年1月1日到当前机器时间的秒数,这个数在你每次执行程序的时候都会不断增长、变化,所以用它当做种子来初始化发生器,就会生成不同的随机数了。
种子只要不同,就可以保证每次生成的数字不同,而生成数字的范围取决于以下公式:
(double)rand() / (RAND_MAX + 1) * (range_max - range_min) + range_min;
可以生成[range_min, range_max)区间中的随机数。
http://www.cnblogs.com/xiaoxiaoxin-love-ping/p/3528849.html
2.STL(模板库)
STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。
STL中的函数random_shuffle()用来对一个元素序列进行重新排序(随机的)
http://blog.csdn.net/vivi_wang_11/article/details/7441803#
3.map函数使用
http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html
OJ927
#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<iostream>#include<cctype>#include<map>#define N 1000001using namespace std;int n,cnt,num;long long a[N],c[N],v[N],f[N];map<long long,int> events;long long gcd(long long a,long long b){ if(!b) return a; return gcd(b,a%b);}int find(int n,long long aim){ if(v[n]==aim) return n; int left=0,right=n,mid=(left+right)>>1; for(;left+1<right;mid=(left+right)>>1) if(v[mid]<aim) left=mid; else right=mid; return right;}int main(){ //freopen("half.in","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); srand(time(0)); random_shuffle(a+1,a+n+1); long long ans=0; for(int i=1;i<=n&&i<=10;i++){ cnt=0; num=0; sort(c+1,c+cnt+1); for(long long j=1;j*j<=a[i];j++) if((a[i]%j)==0){ num++; v[num]=j; f[num]=0; if(j*j!=a[i]){ num++; v[num]=a[i]/j; f[num]=0; } } sort(v+1,v+num+1); for(int j=1;j<=n;j++) f[find(num,gcd(a[i],a[j]))]++; for(int j=1;j<=num;j++){ long long tot=0; if(v[j]<=ans) continue; for(int k=j;k<=num;k++) if((v[k]%v[j])==0) tot=tot+f[k]; if(tot*2>=n) ans=max(ans,v[j]); } } printf("%I64d",ans); return 0;}
- 2017-02-23
- markdownpad2-注册码-2017-02-23
- acm训练 2017 02 23
- 2017-02-23 网文摘录
- 2017-02-23(map函数)
- Java编程题练习2017-02-23
- 第889期机器学习日报(2017-02-23)
- 02/23
- CVPR 2017-02-02
- 2017-02-23 错误信息:未在本地计算机上注册“Microsoft.ACE.oledb.12.0”提供程序。
- 2017-02-23 .NET Core Tools转向使用MSBuild项目格式
- 2017-02-23-如何使用gitHub和Hexo搭建个人博客
- 2010-02-23
- 博文 2011-02-23
- 2010-02-23
- 2012-02-23
- 2013-02-23
- 23,UC(02)
- MFC学习(二)
- [Spring实战系列]
- Java复习(一)-关键字this,super的用法
- 在静态库中的xib跳转
- centos7 下安装mongodb指南;
- 2017-02-23
- VS2010 编写NPAPI 插件
- 删除文件夹
- 实战Apache-Flume采集DB数据到kafka
- Android消息处理机制Handler、Looper、Message
- JAVA 2 synchronized的用法
- 关于String的一些工具类
- Jsp 分页
- eclipse安装svn