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的数组必须开在全局变量中,不然会爆栈。

#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记录的更多相关文章

  1. 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

    2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...

  2. hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)

    OO's Sequence                                                          Time Limit: 4000/2000 MS (Jav ...

  3. 2015 Multi-University Training Contest 8 hdu 5381 The sum of gcd

    The sum of gcd Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  4. 2015 Multi-University Training Contest 8 hdu 5390 tree

    tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...

  5. 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ

    RGCDQ Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  6. 2015 Multi-University Training Contest 2 hdu 5306 Gorgeous Sequence

    Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  7. 2015 Multi-University Training Contest 10(9/11)

    2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...

  8. 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】

    2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...

  9. Root(hdu5777+扩展欧几里得+原根)2015 Multi-University Training Contest 7

    Root Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Su ...

随机推荐

  1. 5.flume实战(二)

    需求:监控一个文件实时采集新增的数据并输出到控制台 简单理解就是:监控一个文件,只要这个文件有新的内容追加,就将它输出到控制台. agent技术选型:exec source + memory chan ...

  2. [ Openstack ] Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  3. 解决Eclipse明明有错误,却不能显示错误红叉的方法,eclipse不能显示错误

    出现这情况的原因是因为java文件的错误太多,eclipse停止编译.解决方法如下 1.勾选自动编译功能 2.clean工程 3.取消“abort build when build path erro ...

  4. python unittest 快速入门

    import unittest def add(x, y): return x + y class TestLearning(unittest.TestCase): def setUp(self): ...

  5. [BZOJ3209]花神的数论题 组合数+快速幂

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2498  Solved: 1129[Submit][Status][Disc ...

  6. 常用的WebService一览表

    天气预报Web服务,数据来源于中国气象局Endpoint :http://www.webxml.com.cn/WebServices/WeatherWebService.asmxDisco       ...

  7. Nodejs解决所有跨域请求

    Nodejs解决所有跨域请求 app.use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); ...

  8. PHP文件操作函数

    1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. eg: 复制代码 代码如下: ...

  9. python 连接ubuntu xampp mysql

    >>> import MySQLdb >>> db=MySQLdb.connect(user="root",passwd="" ...

  10. WordPress 数据库操作WPDB对象($wpdb)用法详解【转载】

    使用wordpress的时候,如果想直接使用WP里封装的数据库操作的类(wp-db.php),将wp-blog-header.php包含到代码中就可以使用了. define(‘PATH’, dirna ...