2015 Multi-University Training Contest 1记录
2015-07-23 13:43
483 查看
1001 OO’s Sequence
分析:
对于样例,可以得到,我们要求的是(1,1)(1,2)(1,3)(1,4)(1,5)(2,2)(2,3)(2,4)(2,5)(3,3)(3,4)(3,5)(4,4)(4,5)(5,5)这些范围内满足题目中所给的要求的i的个数。所以可以将两个求和符号转换为考虑原来ai序列中每一个ai对于结果的贡献。对于题目,刚好可以发现,我们只需要对于每一个ai求离它左右最近的因子就可以了。这样两个因子之间范围内每一个i都是满足题目要求。
然后考虑求解ai因子的策略,如果对于每一个ai都是每次左右分别搜索,那么一定会超时的。所以我们采取一个预处理,这里是学长教我的,方法很巧妙。自己无法总结出来,所以还是看看代码里面怎么求的就好了。
还有,那几个10w的数组必须开在全局变量中,不然会爆栈。
[code]#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int mod=1e9+7; int a[100000+5],r[100000+5],l[100000+5],vis[100000+5]; int main() { int i,j,ans,n; while(~scanf("%d",&n)) { if(n==0) break; for(i=1;i<=n;i++) scanf("%d",&a[i]); memset(l,0,sizeof(l)); memset(vis,0,sizeof(vis)); for(i=0;i<=n;i++) r[i]=n+1; for(i=1;i<=n;i++) { for(j=1;j*j<=a[i];j++) { if(a[i]%j!=0) continue; if(vis[j]>l[i]&&vis[j]<i) l[i]=vis[j]; if(vis[a[i]/j]>l[i]&&vis[a[i]/j]<i) l[i]=vis[a[i]/j]; } vis[a[i]]=i; } memset(vis,0,sizeof(vis)); for(i=n;i>=1;i--) { for(j=1;j*j<=a[i];j++) { if(a[i]%j!=0) continue; if(vis[j]<r[i]&&vis[j]>i) r[i]=vis[j]; if(vis[a[i]/j]<r[i]&&vis[a[i]/j]>i) r[i]=vis[a[i]/j]; } vis[a[i]]=i; } for(ans=0,i=1;i<=n;i++) { ans+=(r[i]-i)*(i-l[i]); ans%=mod; } printf("%d\n",ans%mod); } return 0; }
相关文章推荐
- 2015 Multi-University Training Contest 1记录
- canvas和paint常用方法
- hdu 5291 Candy Distribution 2015 Multi-University Training Contest 1 树形dp,
- error: linker command failed with exit code 1 (use -v to see invocation)
- assign,copy,retain的解释
- 【转】ubuntu12.04完美安装QQ2012、QQMusic、Foxmail等--wine
- 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证
- NSLayoutConstraint
- 2015 Multi-University Training Contest 1 Hdu5292 Pocket Cube
- HDOJ 5293 Tree chain problem LCA+树链剖分+树形DP
- 【DP】 HDOJ 5293 Tree chain problem
- POJ_1995_RaisingModuloNumbers
- poj1995_Raising Modulo Numbers
- UVA-11029 Leading and Trailing
- 《Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift》阅读笔记与实现
- Win 10人工智能战略转型必胜!
- 017.retain 属性特性
- TurboMail邮件系统助力振华物流近十年
- 2015 Multi-University Training Contest 1 题解 BY ME
- [LeetCode]Climbing Stairs