【数论,思路】HDU-5288;多校#1-1001
2015 Multi-University Training Contest 1 1001
/*
Problem: HDU-5288,多校#1 1001
Tips: 数学。思路
Date: 2015.7.29
题意: 给出含n个元素的数组a,问所有区间中,满足对该区间所有aj(j!=i),都使ai%aj!=0的i的个数;
分析: 对于a[i],找到左右两边离它最近的因子的位置lp[i],rp[i],(没有的话就分别设为0/(n+1)),那么a[i]在仅会在(rp[i]-i)*(i-lp[i])个区间内出现
注意: 求lp, rp的算法,小心超时!
*/ #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<map>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn = ;
const int M = ;
const ll MOD = ;
int n, a[maxn]; vector<int> fac[M];
int lp[maxn], rp[maxn], pre[M];
void get_fac() //储存1~10000所有数的因子
{
for(int i = ; i < M; i++)
for(int j = ; j*j <= i; j++)
if(i % j == )
{
if(j * j != i) fac[i].push_back(i / j);
fac[i].push_back(j);
}
} int main()
{
get_fac();
while(~scanf("%d", &n))
{
for(int i = ; i <= n; i++)
scanf("%d", &a[i]); memset(pre, , sizeof(pre));//pre数组记录数字i所在(上一个)位置
for(int i = ; i <= n; i++) //找左边因子位置
{
int u = a[i], pos = ; //pos记录左边最靠近i的因子位置
for(int j = ; j < fac[u].size(); j++)
{
int v = fac[u][j];
pos = max(pos, pre[v]);
}
lp[i] = pos;
pre[u] = i;
} memset(pre, 0x3f, sizeof(pre)); //pre数组记录数字i所在(上一个)位置
for(int i = n; i >= ; i--) //找右边因子位置
{
int u = a[i], pos = n+; //pos记录右边最靠近i的因子位置
for(int j = ; j < fac[u].size(); j++)
{
int v = fac[u][j];
pos = min(pos, pre[v]);
}
rp[i] = pos;
pre[u] = i;
} ll res = ;
for(int i = ; i <= n; i++)
{
res += (ll)((rp[i]-i) * (i-lp[i])) % MOD;
}
printf("%lld\n", res % MOD);
}
return ;
}
【数论,思路】HDU-5288;多校#1-1001的更多相关文章
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- HDU 4696 Answers (2013多校10,1001题 )
Answers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- HDU 4686 Arc of Dream (2013多校9 1001 题,矩阵)
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- 多校5 1001 HDU5781 ATM Mechine 记忆化搜索+概率
// 多校5 1001 HDU5781 ATM Mechine // http://acm.hdu.edu.cn/search.php?field=problem&key=2016+Multi ...
- 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 ...
- 2015 多校赛 第一场 1001 (hdu 5288)
Description OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l&l ...
- hdu 5288 OO’s Sequence(2015多校第一场第1题)枚举因子
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288 题意:在闭区间[l,r]内有一个数a[i],a[i]不能整除 除去自身以外的其他的数,f(l,r ...
- HDU 5288 OO's sequence (2015多校第一场 二分查找)
OO's Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- HDU 4655 Cut Pieces(2013多校6 1001题 简单数学题)
Cut Pieces Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total ...
随机推荐
- [现代程序设计]homework-03
Homework-03 队员: 11061193 薛亚杰 11061192 周敏轩 11061190 李孟 材料阅读 我们三个人将以下材料仔细阅读,觉得十分受益.下面是我们的总结和分享: 1)代 ...
- Delphi使用FindClass实现动态建立对像(有点像反射)
相关资料:http://www.blogjava.net/nokiaguy/archive/2008/05/10/199739.html { http://www.blogjava.net/nokia ...
- UVALive 7454 Parentheses (栈+模拟)
Parentheses 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/A Description http://7xjob4.c ...
- iOS开发代码规范
1.关于命名 1.1统一要求 含义清楚, 尽量做到不需要注释也能了解其作用,若做不到,就加注释 使用全称不使用缩写 1.2类的命名 大驼峰式命名:每一个单词的首字母都采用大写字母例子: MFHomeP ...
- hdu 2037 今年暑假不AC (java)
问题: 此题为贪心算法入门,思路是先将各个时间段依照结束时间进行排序(按结束越早遍历.节目愈多), 再从第一个节目開始,假设下一节目開始时间大于上一节目的開始时间则进行该节目.依次递推. 输入时,要求 ...
- BZOJ 2705: [SDOI2012]Longge的问题 GCD
2705: [SDOI2012]Longge的问题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...
- 在WebClient中使用post[发送数据]
很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...
- 2013年中国区Skyline软件价格体系
< 2013年中国区Skyline软件价格体系 序号 产品名称 描述 市场报价 1 TerraExplorer Pro 5.1 对 ...
- iOS 2D绘图详解(Quartz 2D)之路径(stroke,fill,clip,subpath,blend)
Stroke-描边 影响描边的因素 线的宽度-CGContextSetLineWidth 交叉线的处理方式-CGContextSetLineJoin 线顶端的处理方式-CGContextSetLine ...
- 让你的PHP程序真正的实现多线程(PHP多线程类)(转)
通过WEB服务器来实现PHP多线程功能. 当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的 ...