C. Multiplicity
链接
[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的更多相关文章
- powerdsigner Association Multiplicity
这一篇來告诉一个不容易分辨的关系图式:Association(结合)的各种類型,除了了解它的涵义 外,也让各位可以看图說故事,知道它背后所要表达的意义. Association结合 Associati ...
- Codeforces Round #523 (Div. 2) C. Multiplicity
C. Multiplicity 题目链接:https://codeforc.es/contest/1061/problem/C 题意: 给出一串数,问它的“好序列“有多少.好序列的定义是,首先是一个子 ...
- 923. 3Sum With Multiplicity - LeetCode
Question 923. 3Sum With Multiplicity Solution 题目大意: 给一个int数组A和一个目标值target,求满足下面两个条件的组合个数,其中i,j,k分别为数 ...
- [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 ...
- 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的序列前 ...
- Codeforces Round #523 (Div. 2) C Multiplicity (DP)
传送门 https://www.cnblogs.com/violet-acmer/p/10005351.html 题意: 给定一数组a[],从a[ ]中除去任意个元素得到b[ ],求能形成多少“好序列 ...
- 【DP/数学】【CF1061C】 Multiplicity
Description 给定一个序列 \(a\),求有多少非空序列 \(b\) 满足 \(b\) 是 \(a\) 的子序列并且 \(\forall~k~\in~[1,len_b],~~k \mid b ...
- [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 ...
- LeetCode 923. 3Sum With Multiplicity
原题链接在这里:https://leetcode.com/problems/3sum-with-multiplicity/ 题目: Given an integer array A, and an i ...
随机推荐
- oracle启动的三个阶段
startup nomount 时,数据库状态为 started; alter database mount 时, 状态为 mounted; alter database open 时,状态为 ope ...
- windows下设置JupyterNotebook默认目录
目录 windows下设置JupyterNotebook默认目录 生成配置文件 设置默认工作目录 设置快捷方式中的目标与起始位置 直接修改anaconda中的相关配置文件 windows下设置Jupy ...
- SAP系统产品历史与分类
SAP R/1---实时会计辅助财务的系统,最早叫RF系统.由原来批处理系统(数据输入后,由服务器在特定的时间分批处理).创造性的变为输入马上由计算机处理. SAP R/2—创造性的使用“basis” ...
- SQL查询语句,怎样查询重复数据
SQL查询语句,怎样查询重复数据 2012-02-22 14:50神奇的马骁勇 | 浏览 0 次 有表A, 中有字段id, name, memo现在有很多id重复的数据,怎么把这些重复的都查出来?gr ...
- Matplotlib入门
使用之前首先下载:pip install Matplotlib 接着引入:import matplotlib.pylot as plt 绘图函数:plt.plot() 显示函数:plt.show() ...
- MySQL基本教程(一)
创建数据库 mysql -u root -p CREATE DATABASE Hank; 删除数据库 drop database Hank; 选择数据库 use Hank; MySQL 数据类型 My ...
- Usaco 2019 Jan Platinum
Usaco 2019 Jan Platinum 要不是昨天老师给我们考了这套题,我都不知道usaco还有铂金这么一级. 插播一则新闻:杨神坚持认为铂金比黄金简单,原因竟是:铜 汞 银 铂 金(金属活动 ...
- 【SQL】sql update 多表关联更新方法总结
#表结构: 1.表一:Test1 Id name age 1 2 2.表二:Test2 Id name age 1 小明 10 2 小红 8 #实现将表Test2的name和age字段 ...
- JS进阶之---函数,立即执行函数
一.函数 函数声明.函数表达式.匿名函数 函数声明:使用function关键字声明一个函数,再指定一个函数名,叫函数声明.function name () { … } 函数表达式:使用function ...
- HttpMessageNotReadableException(一)
1.今天移动端调用接口时候出现下面异常 org.springframework.http.converter.HttpMessageNotReadableException: JSON parse e ...