HDU 5288 OO’s Sequence
题意:给一个序列,函数f(l, r)表示在[l, r]区间内有多少数字不是其他数字的倍数,求所有区间的f(l, r)之和。
解法:第一次打多校……心里还有点小激动……然而一道签到题做了俩点……呜呜呜……今天的题还算简单……明天就更难了……写个题解纪念一下多校……
对于序列中的每一个数,要找到从它的位置起向左右找最远连续不能被它整除的数的位置设为l和r,这个数的位置为pos,答案就是(pos - l + 1) * (r - pos + 1),只要分析一下样例就可以得到这个式子……然后为了找到l和r,先预处理出每个数的倍数,分别正序和倒序遍历序列,每次对标记用的数组更新倍数对应的因数位置,等遍历到这个倍数时就可以知道最近的因数位置了。
代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<time.h>
#include<stdlib.h>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define LL long long
using namespace std;
vector <int> v[10005];
int num[100005];
const int mod = 1e9 + 7;
void init()
{
for(int i = 1; i < 10005; i++)
{
for(int j = 1; j * j <= i; j++)
{
if(i % j == 0)
{
v[j].push_back(i);
if(j * j != i)
v[i / j].push_back(i);
}
}
}
}
int s[10005], flag[10005];
int minn1[100005], minn2[100005];
int main()
{
int n;
init();
while(~scanf("%d", &n))
{
for(int i = 0; i < n; i++)
{
scanf("%d", &num[i]);
}
int ans = 0;
for(int i = 0; i < n; i++)
{
minn1[i] = n - 1, minn2[i] = 0;
}
memset(s, 0, sizeof s);
memset(flag, 0, sizeof flag);
for(int i = 0; i < n; i++)
{
int len = v[num[i]].size();
minn1[i] = s[num[i]];
if(flag[num[i]])
minn1[i]++;
for(int j = 0; j < len; j++)
{
flag[v[num[i]][j]] = 1;
s[v[num[i]][j]] = i;
}
}
for(int i = 0; i < 10005; i++)
s[i] = n - 1;
memset(flag, 0, sizeof flag);
for(int i = n - 1; i >= 0; i--)
{
int len = v[num[i]].size();
minn2[i] = s[num[i]];
if(flag[num[i]])
minn2[i]--;
for(int j = 0; j < len; j++)
{
flag[v[num[i]][j]] = 1;
s[v[num[i]][j]] = i;
}
}
for(int i = 0; i < n; i++)
{
ans += (i - minn1[i] + 1) * (minn2[i] - i + 1) % mod;
if(ans > mod)
ans -= mod;
}
printf("%d\n", ans);
}
return 0;
}
HDU 5288 OO’s Sequence的更多相关文章
- 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 ...
- 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 枚举+二分
Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...
- hdu 5288 OO’s Sequence(计数)
Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...
随机推荐
- Linux的安全模式
今天尝试了一下开机启动,在rc.local中进行设置,但是我写的java -jar transport.jar是一个Hold处理,无法退出:导致开机的时候一直停留在等待页面. 处理机制: 1. 在Li ...
- Core love JavaScript
Core love JavaScript 前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么什么是 J ...
- XCODE7新变化之-test
Xcode 7新鲜出炉,一大早下载下来就安装上了,急急地体验一把.这几天公司给的任务是单元测试,那我们一起来用新版本做一次测试吧. 除了官方发布的下载链接地址,分享本人的xcode 7下载地址,大家不 ...
- Nginx 禁止访问某个目录或文件的设置方法
如果基于WEB根目录下,要禁止用户访问/config目录,或者要禁止用户访问/config.ini(ZF常用INI,不过建议还是放到WEB目录以外的地方),可以通过location进行配置,返回403 ...
- 深入js的面向对象学习篇(封装是一门技术和艺术)——温故知新(二)
下面全面介绍封装和信息隐藏. 通过将一个方法或属性声明为私用的,可以让对象的实现细节对其它对象保密以降低对象之间的耦合程度,可以保持数据的完整性并对其修改方式加以约束.在代码有许多人参与设计的情况下, ...
- The 7th Zhejiang Provincial Collegiate Programming Contest->Problem G:G - Wu Xing
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3328 至今未看懂题意,未编译直接提交,然后 A了.莫名AC总感觉怪怪的. ...
- 利用手上的UI资源(附免费UI工具包)
http://www.uisdc.com/how-to-use-ui-kits# 大家都知道,UI工具包里有很多好看的资源:比如按钮.滑块.面包屑.播放器.表单,甚至是一个"赞!" ...
- 网站404,500错误页面的处理,及500异常写入errorLog日志
1.web.xml 配置 <error-page> <error-code>404</error-code> <location>/404.jsp< ...
- eclipse代码自动提示功能设置
一 般默认情况下,Eclipse ,MyEclipse的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的, ...
- JS 封装类
function HighchartsObj(id, type) { var that = this; this.options = { chart : { renderTo : id, type : ...