hdu5288 OO’s Sequence 二分 多校联合第一场
OO’s Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 42 Accepted Submission(s): 21
In each test case:
First line: an integer n(n<=10^5) indicating the size of array
Second line:contain n numbers ai(0<ai<=10000)
5
1 2 3 4 5
23
对每一个区间这样的数的个数求和,这样的数满足在这个区间内没有数能被它整除。不包含它本身。
由于a最大10000。我的做法是用vector记录下每一个数出现的位置,再枚举每一个数,看它在多少个区间内满足条件,枚举的过程是求这个数全部的因子,二分这个因子出如今这个数左边最右的位置和这个数右边最左的位置,最后得到这个数能延伸到的最远的左右区间。这个区间内没有数能被这个数整除。假设这个数的位置是i,左区间是l。右区间是r,则对于这个数共同拥有(i-l)*(r-i)种区间满足。
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm> using namespace std; typedef long long LL; const LL INF=0x3f3f3f3f;
const LL MAXN=100010;
const LL MOD=1e9+7; LL N;
LL a[MAXN];
vector<LL> V[10010]; int main(){
freopen("in.txt","r",stdin);
while(scanf("%I64d",&N)!=EOF){
for(LL i=0;i<=10000;i++) V[i].clear();
for(LL i=1;i<=N;i++){
scanf("%I64d",&a[i]);
V[a[i]].push_back(i);
}
for(LL i=0;i<=10000;i++) sort(V[i].begin(),V[i].end());
LL ans=0;
for(LL i=1;i<=N;i++){
LL n=a[i];
LL m=sqrt(n)+1;
LL l=0,r=N+1;
for(LL j=1;j<=m;j++){
if(n%j==0){
if(V[j].size()>0){
LL pos=lower_bound(V[j].begin(),V[j].end(),i)-V[j].begin(),pos2=upper_bound(V[j].begin(),V[j].end(),i)-V[j].begin();
if(pos>0) l=max(l,V[j][pos-1]);
if(pos2<V[j].size()) r=min(r,V[j][pos2]);
}
LL t=n/j;
if(V[t].size()>0){
LL t=n/j;
LL pos=lower_bound(V[t].begin(),V[t].end(),i)-V[t].begin(),pos2=upper_bound(V[t].begin(),V[t].end(),i)-V[t].begin();
if(pos>0) l=max(l,V[t][pos-1]);
if(pos2<V[t].size()) r=min(r,V[t][pos2]);
}
}
}
if(l<i&&r>i) ans=(ans+(r-i)*(i-l))%MOD;
}
printf("%I64d\n",ans);
}
return 0;
}
hdu5288 OO’s Sequence 二分 多校联合第一场的更多相关文章
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- hdu5294||2015多校联合第一场1007 最短路+最大流
http://acm.hdu.edu.cn/showproblem.php? pid=5294 Problem Description Innocent Wu follows Dumb Zhang i ...
- hdu5289 2015多校联合第一场1002 Assignment
题意:给出一个数列.问当中存在多少连续子区间,当中子区间的(最大值-最小值)<k 思路:设dp[i]为从区间1到i满足题意条件的解.终于解即为dp[n]. 此外 如果对于arr[i] 往左遍历 ...
- HDU 5724 Chess (状态压缩sg函数博弈) 2016杭电多校联合第一场
题目:传送门. 题意:有n行,每行最多20个棋子,对于一个棋子来说,如果他右面没有棋子,可以移动到他右面:如果有棋子,就跳过这些棋子移动到后面的空格,不能移动的人输. 题解:状态压缩博弈,对于一行2^ ...
- hdu 4869 Turn the pokers (2014多校联合第一场 I)
Turn the pokers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4870 Rating (2014 多校联合第一场 J)(概率)
题意: 一个人有两个TC的账号,一开始两个账号rating都是0,然后每次它会选择里面rating较小的一个账号去打比赛,每次比赛有p的概率+1分,有1-p的概率-2分,当然如果本身是<=2分的 ...
- HDU 4869 Turn the pokers (2014 多校联合第一场 I)
HDOJ--4869--Turn the pokers[组合数学+快速幂] 题意:有m张扑克,开始时全部正面朝下,你可以翻n次牌,每次可以翻xi张,翻拍规则就是正面朝下变背面朝下,反之亦然,问经过n次 ...
- HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)
题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...
- HDU 4868 Information Extraction(2014 多校联合第一场 H)
看到这道题时我的内心是奔溃的,没有了解过HTML,只能靠窝的渣渣英语一点一点翻译啊TT. Information Extraction 题意:(纯手工翻译,有些用词可能在html中不是一样的,还多包涵 ...
随机推荐
- 36.创建模板mylist
node.h #pragma once //创建模板 template <class T> class Node { public: T t;//数据 Node *pNext;//指针域 ...
- 模拟select样式,自定义下拉列表为树结构
效果图如下: 首先,需要用到的库jQuery,zTree(官网API:http://www.treejs.cn/v3/api.php) 注意:因为zTree是基于jQuery的,所以应该先引入jQue ...
- HDU 1240 Asteroids!【BFS】
题意:给出一个三维的空间,给出起点和终点,问是否能够到达终点 和上一题一样,只不过这一题的坐标是zxy输入的, 因为题目中说的是接下来的n行中分别是由n*n的矩形组成的,所以第一个n该是Z坐标,n*n ...
- Linux下安装使用MySQL
网上找那些安装教程比较多的版本,版本只要不是太旧就行. 下载mysql 5.6.28 通用版64位二进制版,二进制版相当于windows的安装包,可以直接安装,如果是源码版,还需要编译后再进行安装. ...
- null, undefined理解
概述 null与undefined都可以表示"没有",含义非常相似.将一个变量赋值为undefined或null,语法效果几乎没区别. var a = undefined; // ...
- centos 安装 aria2 webui 实现网页下载
centos aria2 webui 安装aria2 安装 rpmforge源 wget http://repository.it4i.cz/mirrors/repoforge/redhat/el6/ ...
- Git 内部原理 - (3) Git 引用 (4)包文件
Git 引用 我们可以借助类似于 git log 1a410e 这样的命令来浏览完整的提交历史,但为了能遍历那段历史从而找到所有相关对象,你仍须记住 1a410e 是最后一个提交. 我们需要一个文件来 ...
- 测试cnblog文章内部JS
添加几个按钮 行内js 写法: <button onclick="javascript:alert('行内js')">行内js</button> 注意:al ...
- gitHub上如何设置或者取消电子邮箱提醒
原文链接:点我 我们正常注册的gitHub一般应该都是电子邮箱的方式,在注册账号时可能选择或者默认给了各种提醒,但是gitHub的邮箱提醒真的就比较烦人了,特别是最近团队开发项目,什么动态都有提醒,就 ...
- [POI2009]KON-Ticket Inspector(二维前缀和+DP)
题意 有n个车站,现在有一辆火车从1到n驶过,给出aij代表从i站上车j站下车的人的个数.列车行驶过程中你有K次检票机会,所有当前在车上的人会被检票,问最多能检多少个不同的人的票 (n<=600 ...