hdoj 5288 OO’s Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288
//*************头文件区************* #include<iostream> #include<cstdio> #include<vector> #define N 100010 #define P 1000000007 using namespace std; int n,tmp,i,j; int r[N], l[N], q[N], a[N]; long long a1,a2,sum; vector<int> vec[10010]; int main() { freopen("1001.in","r",stdin); freopen("m1001.out","w",stdout); while(~scanf("%d",&n)){ for( i = 101; i <= 10000; ++i) vec[i].clear(); // 清空容器 for( i = 1; i <= n; ++i){ scanf("%d",&a[i]); l[i] = 0; r[i] = n+1; if( a[i] > 100) vec[a[i]].push_back(i); // 数据初始化,超过100的数据将下标保存到vec[a[i]]内 } for( j = 1; j <= 100; ++j){ tmp = 0; // 暂时保存下标 for( i = 1;i <= n; ++i){ if( a[i] % j ==0 ) l[i] = max(tmp,l[i]); if( a[i] == j) tmp = i; } tmp = n+1; for( i = n;i >= 1; --i){ if( a[i] % j ==0) r[i] = min(tmp,r[i]); if( a[i] == j) tmp = i; } // 更新以100以内的数为约数的数的左右限制 } for( i = 101; i <= 10000; ++i) q[i] = vec[i].size() - 1; for( i = n; i >= 1; --i){ if(a[i] > 100){ for( j = a[i]; j <= 10000; j = j+a[i]){ while((q[j] >= 0)&&(vec[j][q[j]]>i)){ l[vec[j][q[j]]] = max(l[vec[j][q[j]]],i); if((q[j] > 0)&&(vec[j][q[j]-1]>i)) q[j]--; else break; } } } } for( i = 101; i <= 10000; ++i) q[i] = 0; // vec下标从0开始? for( i = 1; i <= n; ++i) if(a[i] > 100){ for( j = a[i]; j <= 10000; j = j+a[i]){ while((q[j]<vec[j].size())&&(vec[j][q[j]]<i)){ r[vec[j][q[j]]] = min(r[vec[j][q[j]]],i); if((q[j]<vec[j].size()-1)&&(vec[j][q[j]+1]<i)) q[j]++; else break; } } } sum=0; for (i=1;i<=n;i++) { a1=r[i]-i; a2=i-l[i]; sum=(sum+a1*a2)%P; // printf("%lld\n",a1); } printf("%I64d\n",sum); } }
hdoj 5288 OO’s Sequence的更多相关文章
- 思维题 HDOJ 5288 OO’s Sequence
题目传送门 /* 定义两个数组,l[i]和r[i]表示第i个数左侧右侧接近它且值是a[i]因子的位置, 第i个数被选择后贡献的值是(r[i]-i)*(i-l[i]),每个数都枚举它的因子,更新l[i] ...
- HDOJ 5288 OO’s Sequence 水
预处理出每一个数字的左右两边能够整除它的近期的数的位置 OO's Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13 ...
- HDU 5288 OO’s Sequence [数学]
HDU 5288 OO’s Sequence http://acm.hdu.edu.cn/showproblem.php?pid=5288 OO has got a array A of size ...
- HDU 5288 OO‘s sequence (技巧)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5288 题面: OO's Sequence Time Limit: 4000/2000 MS (Jav ...
- HDU 5288 OO’s Sequence 水题
OO's Sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5288 Description OO has got a array A ...
- HDU 5288——OO’s Sequence——————【技巧题】
OO’s Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- Hdu 5288 OO’s Sequence 2015多小联赛A题
OO's Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)
OO's Sequence Time Limit: 4000/2000 MS (Jav ...
- 【HDOJ】5288 OO’s Sequence
二分寻找对于指定pos的最左因数点和最右因数点. /* 5288 */ #include <iostream> #include <string> #include <m ...
随机推荐
- ab做压力测试
ab是apache 自带的一个压力测试的小工具,可用于接口简单的压力测试. 以下是AB的简要介绍 格式:ab [options] [http://]hostname[:port]/path 参数说明: ...
- foreach的指针问题
从代码: $arr = array(,,,,); echo '$arr = array(1,2,3,4,5)','<br>'; foreach($arr as $key => &am ...
- HttpWebRequest模拟c#网站登录
用户名 密码 模拟登录asp.net开发的网站 关心两个问题:通过控件属性获取数据.响应事件. 上面是一个普通的asp.net表单.输入用户名.密码后,点击按钮将会进入各自绑定的后台函数,而不仅仅是 ...
- uimodalpresentationformsheet resize ios7
CROHomeCRAAddController *temp =[[CROHomeCRAAddControlleralloc] init]; temp.modalTransitionStyle = UI ...
- Java异常体系结构
1)系统错误(system error)是由Java虚拟机抛出的,用Error类表示.Error类描述的是内部系统错误.这样的错误很少发生.如果发生,除了通知用户以及尽量稳妥地终止程序外,几乎什么都不 ...
- cocos2d-x for android:SimpleGame分析
cocos2d-x for android:SimpleGame分析 作为cocos2d-x的标配DEMO,SimpleGame可算是给入门学cocos2d-x的俺们这些新手门学习的对象了,那么来分析 ...
- Python使用os.listdir()函数来得目录内容的介绍
Python编程语言是计算机语言中常用的语言,以下的文章就是介绍在Python编程语言中使用os.listdir()函数来获得目录中的相关内容的介绍,如果你对其相关的实际操作有兴趣的话,你就可以观看以 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.5.安装Grid,创建ASM磁盘组空间不足
因之前分区时,分区的Last cylinder的值选了“1”,导致创建磁盘组空间不足.解决办法是先删除分区,重新创建分区并删除ASM磁盘,然后重建ASM磁盘 1. 先删除分区,重新创建分区: 1)查询 ...
- vs2012编译出错“LC.exe”已退出解决方法
“LC.exe”已退出,代码为 -1. 解决方法: 将项目Properties下的licenses.licx文件删除,重新编译即可.
- suse10的网络配置(静态IP)
感觉跟fedora的差别还是蛮大的, 主要是配置文件的不同, 尤其是默认路由, 多了一个单独的文件ifroute-xxx suse10的网卡配置文件在/etc/sysconfig/network ...