【数论,思路】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 ...
随机推荐
- Hibernate监听器
Hibernate的事件监听机制 Hibernate中的事件监听机制可以对Session对象的动作进行监听,一旦发生了特殊的事件,Hibernate就会执行监听器中的事件处理方法 在某些功能的设计中, ...
- [iOS微博项目 - 1.0] - 搭建基本框架
A.搭建基本环境 github: https://github.com/hellovoidworld/HVWWeibo 项目结构: 1.使用代码构建UI,不使用storyboard ...
- C++常用容器
vector 顺序容器,和数组类似,可从尾部快速的插入和删除,可随机访问. vector的常用成员函数: #include<vector> std::vector<type> ...
- 【转】Java判断是否是整数,小数或实数的正则表达式
经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2 ...
- 算法效果AB测试中的PV-UV不对称性
(转载请注明原创于潘多拉盒子) 算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果.通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比.为了表述简单,我们假 ...
- C++访问权限
1.C++类本身没有访问权限的概念,就是class Base. 2.类成员的访问权限有:public.protected.private 3.类的继承方式有:public.protected.priv ...
- HTTP Post Request using Apache Commons
Demonstrates an HTTP Post using the Apache Commons HTTP library. Required Libraries: httpcore-4.1.ja ...
- hive-0.10.0-cdh4.3.0安装
1.我使用的Hadoop2.0-cdh4.3.0,相应hive配套版本号hive-0.10.0-cdh4.3.0. 2.改动hive/conf下hive-site.xml文件,无则创建hive- ...
- 解决easyui-datagrid在ie中无法reload问题
easyui在页面载入时,会自己主动填充datagrid中的数据,当加入.改动.删除后,会触发reload事件,对datagrid进行又一次载入. 这个过程在FireFox中没有问题,用firebug ...
- adobe air 通用设置
某些应用程序描述符设置对所有移动设备应用程序都很重要. 所需的 AIR 运行时版本 使用应用程序描述符文件的命名空间指定应用程序所需的 AIR 运行时版本. 在 application 元素中分配的命 ...