pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288

Problem Description
OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l<=i<=r) , that there's no j(l<=j<=r,j<>i) satisfy ai mod aj=0,now OO want to know

∑i=1n∑j=inf(i,j) mod (109+7).

 
Input
There are multiple test cases. Please process till EOF.

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)
 
Output
For each tests: ouput a line contain a number ans.
 
Sample Input
  1. 5
  2. 1 2 3 4 5
 
Sample Output
  1. 23
  2.  
  1. /**
  2. hdu 5288||2015多校联合第一场1001题
  3. 题目大意:给定一个区间。找出f(i,j)的和
  4. 解题思路:http://blog.sina.com.cn/s/blog_15139f1a10102vnx5.html 和官方题解想的一样
  5. */
  6. #include <cstdio>
  7. #include <cstring>
  8. #include <algorithm>
  9. #include <vector>
  10. using namespace std;
  11. typedef __int64 LL;
  12. const int MAXN = 1e5+10;
  13. const LL MOD = 1e9+7;
  14. int a[MAXN],l,r,n;
  15. vector<int> f[10010];
  16. vector<int> vec[10010];
  17. typedef vector<int>::iterator it;
  18.  
  19. int main()
  20. {
  21. for(int i=1; i<=10000; i++)
  22. for(int j=1; j*i<=10000; j++)
  23. f[i*j].push_back(i);
  24. while(~scanf("%d",&n))
  25. {
  26. for(int i=0; i<=10000; i++)
  27. vec[i].clear();
  28. for(int i=1; i<=n; i++)
  29. {
  30. scanf("%d",&a[i]);
  31. vec[a[i]].push_back(i);
  32. }
  33. LL ans=0;
  34. for(int i=1; i<=n; i++)
  35. {
  36. l=1,r=n;
  37. for(it j=f[a[i]].begin(); j!=f[a[i]].end(); j++)
  38. {
  39. if(vec[*j].empty())continue;
  40. it t=lower_bound(vec[*j].begin(),vec[*j].end(),i);
  41. if(t==vec[*j].end())
  42. {
  43. t--;
  44. l=max((*t)+1,l);
  45. continue;
  46. }
  47. if(*t==i)
  48. {
  49. if(t!=vec[*j].begin())
  50. {
  51. t--;
  52. l=max((*t)+1,l);
  53. t++;
  54. }
  55. if(*t==i)t++;
  56. if(t!=vec[*j].end())
  57. r=min((*t)-1,r);
  58. }
  59. else
  60. {
  61. r=min((*t)-1,r);
  62. if(t!=vec[*j].begin())
  63. {
  64. t--;
  65. l=max((*t)+1,l);
  66. }
  67. }
  68. }
  69. ans = (ans + ((long long)(i - l+1) * (r - i+1) % MOD) ) % MOD;
  70. }
  71. printf("%I64d\n",ans);
  72. }
  73. return 0;
  74. }

hdu 5288||2015多校联合第一场1001题的更多相关文章

  1. 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 ...

  2. hdu5294||2015多校联合第一场1007 最短路+最大流

    http://acm.hdu.edu.cn/showproblem.php? pid=5294 Problem Description Innocent Wu follows Dumb Zhang i ...

  3. hdu5289 2015多校联合第一场1002 Assignment

    题意:给出一个数列.问当中存在多少连续子区间,当中子区间的(最大值-最小值)<k 思路:设dp[i]为从区间1到i满足题意条件的解.终于解即为dp[n]. 此外 如果对于arr[i] 往左遍历 ...

  4. 2015 多校赛 第一场 1007 (hdu 5294)

    总算今天静下心来学算法.. Description Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the e ...

  5. hdu 4869 Turn the pokers (2014多校联合第一场 I)

    Turn the pokers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)

    题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...

  7. HDU 4868 Information Extraction(2014 多校联合第一场 H)

    看到这道题时我的内心是奔溃的,没有了解过HTML,只能靠窝的渣渣英语一点一点翻译啊TT. Information Extraction 题意:(纯手工翻译,有些用词可能在html中不是一样的,还多包涵 ...

  8. HDU 5289 Assignment(多校联合第一场1002)

    Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  9. HDU 5358(2015多校联合训练赛第六场1006) First One (区间合并+常数优化)

    pid=5358">HDU 5358 题意: 求∑​i=1​n​​∑​j=i​n​​(⌊log​2​​S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 & ...

随机推荐

  1. 常用meta整理[转载]

    < meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他web ...

  2. 如何编写通用的 Helper Class

    Github: https://github.com/nzbin/snack-helper Docs: https://nzbin.github.io/snack-helper 前言 什么是 help ...

  3. spring配置文件一般结构

         xml schema:schema在文档根节点当中通过xmlns对文档当中的命名空间进行申明,第三行代码定义了默认命名空间用于spring bean的定义.xsi命名空间用于为每个文档中指定 ...

  4. 打印中文dict list的各种姿势

    在开发过程中,我们经常需要打印一些变量的值,便于调试.这个时候就会发现如果在dict list这些容器中,如果包含中文字符,不管是str类型,还是unicode类型,都打印不出来.如下: >&g ...

  5. POJ1082食物链

    加权并查集入门习题. 传送门http://poj.org/problem?id=1182 下面来记录一下做法: 并查集的作用是询问两个对象时候在同一集合以及将两个非空不相交集合合并. 本题涉及两点之间 ...

  6. kafka原理和实践(二)spring-kafka简单实践

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  7. struts2 action接收请求参数和类型转换

    1,action接收请求参数 在struts2中action是什么?(struts2是一个mvc框架)         V:jsp        M:action         C:action  ...

  8. PHP防止SQL注入和XSS攻击

    PHP防止SQL注入和XSS攻击PHP防范SQL注入是一个非常重要的安全手段.一个优秀的PHP程序员除了要能顺利的编写代码,还需要具备使程序处于安全环境下的能力.说到网站安全,就不得不提到SQL注入( ...

  9. ThinkPHP中ajax绑定select下拉框无法显示

    html代码: 控制器代码: 其中的<option value="{$vo.gradeId}">{$one.gradeName}</option> 在操作过 ...

  10. JavaScript练习网站收集

    在学习的过程中会发现很多知识点如果不在工作中运用或者手写带验证的话,很容易忘记.任何技能的掌握都是需要不断练习的.在此收集一些自己遇到的JavaScript练习的网站. codewars 国外的一个练 ...