腾讯消消乐

题意

给出长度为 n 的序列,每次可以选择删除序列的一个连续区间,要求这一段区间内所有数最大公约数不小于 k ,删除后剩下的序列仍然构成连续序列。

定义 f(i) 为进行 i 次操作将整个序列删完的方案数。计算 $\sum_{i=1}^{n}{(f(i) \ast i)} \text{ mod } 1000000007 $。

分析

dp[s][i] 表示 s 这个状态需要 i 次删完的方案数(s 表示这个数是否存在的 01 串),状态转移就是 dp[s | t][i] += dp[s][i - 1], 那么加上的 dp[s][i - 1]表示最后一步操作是把 t 这个状态变为 0 的方案数。

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 3e5;
const ll MOD = 1e9 + 7;
ll dp[MAXN][20];
int a[20];
int main() {
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++) cin >> a[i];
dp[0][0] = 1;
int total = (1 << n) - 1;
for(int s = 0; s <= total; s++) {
for(int l = 0; l < n; l++) {
if((s >> l) & 1) continue;
int t = 0;
int gcds = 0;
for(int r = l; r < n; r++) {
if((s >> r) & 1) continue;
if(__gcd(gcds, a[r]) < k) break;
gcds = __gcd(gcds, a[r]);
t |= (1 << r);
for(int i = 1; i <= n; i++) {
dp[s | t][i] = (dp[s | t][i] + dp[s][i - 1]) % MOD;
}
}
}
}
ll ans = 0;
for(int i = 1; i <= n; i++) {
ans = (ans + i * dp[total][i]) % MOD;
}
cout << ans << endl;
return 0;
}

最新文章

  1. 如何修改MySQL字符集
  2. C#使用ListView更新数据出现闪烁解决办法
  3. Azure Table storage 基本用法 -- Azure Storage 之 Table
  4. iOS9中的App Transport Security
  5. SQL Server中字符串转化为GUID的标量函数实现
  6. BurpSuite导出log配合SQLMAP批量扫描注入点
  7. 在.NET下使用C# 控制Windows系统音量
  8. android 学习随笔八(异常处理总结)
  9. DOS系统功能调用表(INT 21H)
  10. 对Struts的理解
  11. Git CMD - rm: Remove files from the working tree and from the index
  12. 实现网页页面跳转的几种方法(meta标签、js实现、php实现)
  13. [RxJS] Reactive Programming - New requests from refresh clicks -- merge()
  14. 黑马程序员 1、C语言32个关键字整理分类
  15. [笔记]A Practical Guide to Support Vector Classi cation
  16. SFTP工具类 操作服务器
  17. Hadoop问题:启动hadoop 2.6遇到的datanode启动不了
  18. Scrum【转】
  19. Haystack
  20. 设计一个字符串类String(C++练习题)

热门文章

  1. github+git提交 基础用法
  2. 1106 Lowest Price in Supply Chain (25 分)(树的遍历)
  3. C++ 11 智能指针 lamda 以及一个 围棋程序
  4. PB数据窗口中的几种状态及应用
  5. 【转发】Build Squid with SSL Bump and ICAP Client
  6. ROS内usb_cam包使用注意事项
  7. (翻译)FakeKaKao木马分析
  8. libaio.so.1: cannot open shared object file
  9. linux 某个路径创建快捷方式
  10. 【CF1017F】The Neutral Zone(Bitset,埃氏筛)