链接

[http://codeforces.com/contest/1061/problem/C]

题意

给你一个数组,让你找有多少个子串(并非连续,但相对位置不能换),满足bi%i==0;

分析

dp,直接先把ai的所有因子抠出来,并从小到大排序(这个很重要),然后dp[i]表示到当前这个数字,子串

长度为i的有多少个,很显然长度为i的依赖于前面的数字长度为i-1的子串数量,所以dp[vec[i][j]]=(dp[vec[i][j]]+dp[vec[i][j]-1])%mod;

为什么从大的因子枚举,因为在一个子串里该数字只能用一次,不然会多出。最后统计并取模,看代码体会吧。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
vector<ll> vec[100010];
ll a[100010];
ll dp[1000010];
const ll mod=1e9+7;
int main(){
int n;
ios::sync_with_stdio(false); cin.tie(0);cout.tie(0);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
for(int j=1;j*j<=a[i];j++){
if(a[i]%j==0){
vec[i].pb(j);
if(j*j!=a[i]) vec[i].pb(a[i]/j);
}
}
sort(vec[i].begin(),vec[i].end());
}
dp[0]=1;
for(int i=0;i<n;i++){
for(int j=vec[i].size()-1;j>=0;j--)
{
dp[vec[i][j]]=(dp[vec[i][j]]+dp[vec[i][j]-1])%mod;
}
}
ll ans=0;
for(int i=1;i<=n;i++)
{
ans=(ans+dp[i])%mod;
ans%=mod; if(dp[i]==0) break;
}
cout<<ans<<endl;
return 0;
}

C. Multiplicity的更多相关文章

  1. powerdsigner Association Multiplicity

    这一篇來告诉一个不容易分辨的关系图式:Association(结合)的各种類型,除了了解它的涵义 外,也让各位可以看图說故事,知道它背后所要表达的意义. Association结合 Associati ...

  2. Codeforces Round #523 (Div. 2) C. Multiplicity

    C. Multiplicity 题目链接:https://codeforc.es/contest/1061/problem/C 题意: 给出一串数,问它的“好序列“有多少.好序列的定义是,首先是一个子 ...

  3. 923. 3Sum With Multiplicity - LeetCode

    Question 923. 3Sum With Multiplicity Solution 题目大意: 给一个int数组A和一个目标值target,求满足下面两个条件的组合个数,其中i,j,k分别为数 ...

  4. [Swift]LeetCode923.三数之和的多种可能 | 3Sum With Multiplicity

    Given an integer array A, and an integer target, return the number of tuples i, j, k  such that i &l ...

  5. C. Multiplicity 简单数论+dp(dp[i][j]=dp[i-1][j-1]+dp[i-1][j] 前面序列要满足才能构成后面序列)+sort

    题意:给出n 个数 的序列 问 从n个数删去任意个数  删去的数后的序列b1 b2 b3 ......bk  k|bk 思路: 这种题目都有一个特性 就是取到bk 的时候 需要前面有个bk-1的序列前 ...

  6. Codeforces Round #523 (Div. 2) C Multiplicity (DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/10005351.html 题意: 给定一数组a[],从a[ ]中除去任意个元素得到b[ ],求能形成多少“好序列 ...

  7. 【DP/数学】【CF1061C】 Multiplicity

    Description 给定一个序列 \(a\),求有多少非空序列 \(b\) 满足 \(b\) 是 \(a\) 的子序列并且 \(\forall~k~\in~[1,len_b],~~k \mid b ...

  8. [LeetCode] 923. 3Sum With Multiplicity 三数之和的多种情况

    Given an integer array A, and an integer target, return the number of tuples i, j, k  such that i &l ...

  9. LeetCode 923. 3Sum With Multiplicity

    原题链接在这里:https://leetcode.com/problems/3sum-with-multiplicity/ 题目: Given an integer array A, and an i ...

随机推荐

  1. 第七章 鼠标(CONNECT)

    /* CONNECT.C -- Connect-the-Dots Mouse Demo Program (c) Charles Petzold,1998 */ #include <Windows ...

  2. sublime text3最常用快捷键

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...

  3. 阿里八八β阶段Scrum(5/5)

    今日进度 陈裕鹏: 简单信息抽取编码完成 叶文滔: 处理了信息抽取编码的一些BUG,修复了日程界面不会自动更新添加的日程的BUG,修改了原先测试用的TAG以及数据分析部分数据计算数值错误的问题 王国超 ...

  4. 1192:放苹果(dp + 搜索)

    这道题先用搜索写的,因为我需要先打表来寻找规律. 因为数据量小所以收搜也会过 #include<iostream> #include<cstdio> #include<c ...

  5. 转载 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) https://www.cnblogs.com/webabcd/archive/2010/06/03/1750449.html

    精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)   介绍C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parall ...

  6. Python基础视频

    链接:https://pan.baidu.com/s/1oPiS32sWVysuVAivtdFKnQ 密码私聊我

  7. python3 练习题 day01

    #练习题:'''1.简述变量命名规范'''#变量名由数字.字母.下划线组成#变量名可以字母和下划线开头,不能以数字开头,并且不能全为数字#变量名不能太长,且要有意义#最好使用驼峰或下划线格式命令#变量 ...

  8. lmbench性能分析工具

    下载地址 http://www.bitmover.com/lmbench/ tar -zxvf lmbench3.tar.gz cd lmbench3 make 此时会报错: make[2]: *** ...

  9. Html5 标签一(文本)

    1.html编辑器:Sublime Text 2.标签(文本) 一 Sublime Text 作用:html编辑器. 下载地址:http://www.sublimetextcn.com/ 二 文本 总 ...

  10. 【Codeforces 1110D】Jongmah FST分析

    Codeforces 1110 D FST分析 dotorya.FizzyDavid.MofK.gamegame.matthew99.chokudai.eddy1021.DBradac.Happy_N ...