hdu 5482 Numquam vincar(暴力)
来源:互联网 发布:广东网络广播电视台 编辑:程序博客网 时间:2024/06/05 13:33
题目链接:hdu 5482 Numquam vincar
解题思路
dp[i][j][k]表示到长度为i,使用颜色为j,不相同子串有k个时的方案数,求dp数组的过程用回溯暴力一下。剩下就是对应乘上组合数。
代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 15;const int maxm = 105;const int mod = 1e9 + 7;const int base = 23;typedef long long ll;int arr[maxn], dp[maxn][maxn][maxm];ll temp[maxn];void modify(int d, int c) { int n = 0; for (int i = 1; i <= d; i++) { ll s = 0; for (int j = i; j <= d; j++) { s = s * base + arr[j]; temp[n++] = s; } } sort(temp, temp + n); int k = unique(temp, temp + n) - temp; dp[d][c][k]++;}void dfs (int d, int c) { if (d > 10) return ; for (int i = 1; i <= c; i++) { arr[d] = i; modify(d, max(i, c-1)); dfs(d+1, max(i+1, c)); }}int N, M, K;int solve () { ll c = 1; int ret = 0; for (int i = 1; i <= N; i++) { c = c * (K-i+1) % mod; ret = (ret + c * dp[N][i][M] % mod) % mod; } return ret;}int main () { memset(dp, 0, sizeof(dp)); dfs(1, 1); int cas; scanf("%d", &cas); while (cas--) { scanf("%d%d%d", &N, &M, &K); printf("%d\n", solve()); } return 0;}
0 0
- hdu 5482 Numquam vincar(暴力)
- 【HDU5482】Numquam vincar,暴力(da biao)预处理+组合数
- 【字符串暴力】hdu 2847
- HDU **** 暴力模拟
- HDU-1128 暴力搜索
- hdu 2438 暴力吧
- HDU 4175 暴力求解
- hdu 3332 暴力枚举
- HDU 3823 暴力枚举
- hdu 4608 暴力大数
- hdu 1702 暴力
- hdu 4585 shaolin (暴力)
- HDU 4576 Robot (暴力)
- hdu 3711 暴力
- HDU 3697 暴力贪心
- hdu 4499 Cannon(暴力)
- hdu 1394 暴力
- hdu 3720 暴力枚举
- POJ - 1321 棋盘问题(15.10.10 搜索专题)dfs
- 判断字符串是否是回文的代码实现
- SVN命令使用详解
- CANCEL
- UITableView添加UIRefreshControl,实现简单刷新
- hdu 5482 Numquam vincar(暴力)
- 拓扑数据分析与机器学习的相互促进
- jQuery中 $.ajax()方法详解
- hiho #1241 : Best Route in a Grid 【dp 求解质因子2和5的最少匹配个数】
- C# 四个字节十六进制数和单精度浮点数之间的相互转化
- 简单使用Svn Hook
- AFNetworking 请求HTTPS时 SSL的身份验证设置
- 完整的卸载MySQL 5.1的卸载方法
- 简述P问题,NP问题,NPC问题以及NP Hard问题