[dp]牛牛与数组
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
1:长度为n
2:每一个数都在1到k之间
3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个
请问一共有多少满足条件的数组,对1e9+7取模
输入描述:
输入两个整数n,k 1 ≤ n ≤ 10
1 ≤ k ≤ 100000
输出描述:
输出一个整数
输出
1515011
题意:求一个长度为n的数组,满足用1-k的数组成前一个小于等于后一个或后一个不是前一个的倍数的条件有多少种,模1e9+7
思路:当前一个数小于等于后一个数时,即使后一个数是前一个数的倍数也是可以成立的(两个条件只需满足一个),但只有当前一个数大于后一个数且前一个数是后一个数的倍数时,此方案才不成立,注意到不成立的方案数条件更少,所以用总方案数减去不成立的方案数求解时更容易,故设dp[i][j]为当前长度为i的数组末尾是j的方案数,当数组长度为1时,k种数的方案数都为1种,当长度i大于等于2时,若要在末尾加入数j,则用i-1长度的数组从1到k的方案数之和减去i-1时大于j的j的倍数的方案数即使长度为i时末尾加入j的方案数,最后计算长度为n的数组从1到k的方案数之和即为答案,注意计算时要模1e9+7
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int amn=1e5,mod=1e9+;
int dp[][amn];
int main(){
int n,k;
ll s,s1,ans=;
ios::sync_with_stdio();
cin>>n>>k;
memset(dp,,sizeof dp);
for(int i=;i<=k;i++)dp[][i]=;
for(int i=;i<=n;i++){
s=;
for(int j=;j<=k;j++)
s=(s+dp[i-][j])%mod;
for(int j=;j<=k;j++){
s1=;
for(int l=j+j;l<=k;l+=j)
s1=(s1+dp[i-][l])%mod;
dp[i][j]+=(s-s1)%mod;
}
}
for(int j=;j<=k;j++)ans+=dp[n][j],ans%=mod;
printf("%lld\n",ans);
}
[dp]牛牛与数组的更多相关文章
- 树形DP+树状数组 HDU 5877 Weak Pair
//树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...
- bzoj 1264 [AHOI2006]基因匹配Match(DP+树状数组)
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 793 Solved: 503[Submit][S ...
- 【bzoj2274】[Usaco2011 Feb]Generic Cow Protests dp+树状数组
题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row andnumbered 1..N. The cows ...
- 奶牛抗议 DP 树状数组
奶牛抗议 DP 树状数组 USACO的题太猛了 容易想到\(DP\),设\(f[i]\)表示为在第\(i\)位时方案数,转移方程: \[ f[i]=\sum f[j]\;(j< i,sum[i] ...
- 牛牛与数组 (简单dp)
题目链接 这种题一看就是dp啊,dp[i][j]表示第i位放j的方案数,转移方程为dp[i][j]=dp[i-1][k]{k<=i||k%i!=0},当然我们可以三层循环来找,但数据显然会超时, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 Find the nondecreasing subsequences ...
- ccpc_南阳 C The Battle of chibi dp + 树状数组
题意:给你一个n个数的序列,要求从中找出含m个数的严格递增子序列,求能找出多少种不同的方案 dp[i][j]表示以第i个数结尾,形成的严格递增子序列长度为j的方案数 那么最终的答案应该就是sigma( ...
- HDU 2838 (DP+树状数组维护带权排序)
Reference: http://blog.csdn.net/me4546/article/details/6333225 题目链接: http://acm.hdu.edu.cn/showprobl ...
随机推荐
- e代驾狂野裁员 O2O逐渐恢复理智?
O2O逐渐恢复理智?" title="e代驾狂野裁员 O2O逐渐恢复理智?"> 近段时间以来,O2O行业堪称"哀鸿遍野",十分凄惨.巨头 ...
- Welcome to Giyber Blog - LC的博客
"You can be the best! " 一切才刚开始 "不知道行不行,试试吧."抱着这样的理由,一个小白的成长记录,由此开始. 在 Mr.锤 的&quo ...
- 线程sleep,wait,notify,join,yield方法解析
线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态. 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段.此时,线程不会立 ...
- Spring AOP使用方式
AOP:全称是Aspect Oriented Programming,面向切面编程 Spring AOP的作用和优势: 作用:在程序运行期间,不修改源码对已有方法进行增强 优势:减少重复代码:提高开发 ...
- LeetCode--链表1-单链表
LeetCode--链表1-单链表 单链表模板 初始化 头部插入 尾部插入 删除节点 Index插入 Index返回对应的节点指针和val值 class MyLinkedList { private: ...
- App崩溃监控
常见马虎导致崩溃 1 数组越界: 2 多线程问题,在子线程刷新UI: 3 主线程无响应,主线程超过系统规定的时间没有响应,就会被watchdog杀掉: 4 野指针: 崩溃信息的收集却并没有那么简单.因 ...
- 《自拍教程35》段位二_Python面向过程函数
Python批处理脚本只能处理较为简单的顺序执行的语句, 语句太多了,就有点乱...是时候升级一下了. 函数可以将多条语句分组封装,实现面向过程的,简单的模块化管理. 方便将语句实行"网格& ...
- ionic监听android返回键(实现“再按一次退出”功能)
在android平台上的app,在主页面时经常会遇到"再按一次退出app"的功能,避免只按一下返回键就退出app提升体验优化. 1.这个功能需要我们用到ionic提供的regist ...
- 小巧开源的 baresip VOIP 项目
Baresip is a modular SIP User-Agent with audio and video support https://github.com/alfredh/baresip ...
- python常用软件包
redis数据库: 链接:https://pan.baidu.com/s/1X_ndCj0scF2WZd2FPLRKag 提取码:e3zm git安装包: 链接:https://pan.baidu.c ...