省选模拟赛 LYK loves string(string)
题目描述
LYK喜欢字符串,它认为一个长度为n的字符串一定会有n*(n+1)/2个子串,但是这些子串是不一定全部都不同的,也就是说,不相同的子串可能没有那么多个。LYK认为,两个字符串不同当且仅当它们的长度不同或者某一位上的字符不同。LYK想知道,在字符集大小为k的情况下,有多少种长度为n的字符串,且该字符串共有m个不相同的子串。
由于答案可能很大,你只需输出答案对1e9+7取模后的结果即可。
输入格式(string.in)
一行3个数n,m,k。
输出格式(string.out)
一行,表示方案总数。
输入样例
2 3 3
输出样例
6
样例解释
共有6种可能,分别是ab,ac,ba,bc,ca,cb。
数据范围
对于20%的数据:1<=n,k<=5。
对于40%的数据:1<=n<=5,1<=k<=1000000000。
对于60%的数据:1<=n<=8,1<=k<=1000000000。
对于100%的数据:1<=n<=10,1<=m<=100,1<=k<=1000000000。
分析:很容易想歪的一道题.
一开始想到dp,这要怎么dp呢?状压dp吗?状态不好用0/1表示......
考虑到n很小,尝试搜索. 搜第i位的字符是哪一个?显然不行,字符集太大了. 其实不同子串的个数只与每个字符的相对大小有关.所以搜每一位的字符的相对大小即可. 如果最后搜出来的有k个不同相对大小的字符,答案乘上A(k,i)即可(排列数).
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll; const ll mod = 1e9+; ll n,m,k,f[][][],vis[],tot,cnt,num[],a[],ans; void solve()
{
cnt = ;
tot = ;
memset(vis,,sizeof(vis));
for (int i = ; i <= n; i++)
{
if (!vis[num[i]])
{
tot++;
vis[num[i]] = ;
}
}
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
{
int r = i + j - ;
if (r > n)
break;
ll temp = ;
for (int k = j; k <= r; k++)
temp = temp * + num[k];
a[++cnt] = temp;
}
sort(a + ,a + + cnt);
cnt = unique(a + ,a + + cnt) - a - ;
f[n][cnt][tot]++;
} void dfs(int dep)
{
if (dep == n + )
{
solve();
return;
}
memset(vis,,sizeof(vis));
tot = ;
for (int i = ; i < dep; i++)
{
if (!vis[num[i]])
{
tot++;
vis[num[i]] = ;
}
}
num[dep] = tot + ;
dfs(dep + );
int flag[];
memset(flag,,sizeof(flag));
for (int i = ; i < dep; i++)
{
if (!flag[num[i]])
{
flag[num[i]] = ;
num[dep] = num[i];
dfs(dep + );
}
}
} ll A(ll x,ll y)
{
ll res = ;
for (ll i = ; i <= y; i++)
res = res * (x - i + ) % mod;
return res % mod;
} int main()
{
scanf("%lld%lld%lld",&n,&m,&k);
dfs();
for (int i = ; i <= n; i++)
{
ans += f[n][m][i] * A(k,i) % mod;
ans %= mod;
}
printf(" %lld\n",ans % mod); return ;
}
省选模拟赛 LYK loves string(string)的更多相关文章
- 省选模拟赛 LYK loves rabbits(rabbits)
题目描述 LYK喜欢兔子,它在家中养了3只兔子. 有一天,兔子不堪寂寞玩起了游戏,3只兔子排成一排,分别站在a,b,c这3个位置. 游戏的规则是这样的,重复以下步骤k次:选择两个不同的兔子A和B,假如 ...
- 省选模拟赛 LYK loves graph(graph)
题目描述 LYK喜欢花花绿绿的图片,有一天它得到了一张彩色图片,这张图片可以看做是一张n*m的网格图,每个格子都有一种颜色去染着,我们用-1至n*m-1来表示一个格子的颜色.特别地,-1代表这个颜色是 ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- @省选模拟赛03/16 - T3@ 超级树
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...
- 3.28 省选模拟赛 染色 LCT+线段树
发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...
- NOI2016模拟赛Zbox loves stack
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- 「HGOI#2019.4.19省选模拟赛」赛后总结
t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...
- [luogu#2019/03/10模拟赛][LnOI2019]长脖子鹿省选模拟赛赛后总结
t1-快速多项式变换(FPT) 题解 看到这个\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+ \cdots + a_nx^n\)式子,我们会想到我们学习进制转换中学到的,那么我们就只需要 ...
- FCS省选模拟赛 Day3
Description Solution T1 game 咕咕咕 T2 string fail树各个节点的深度之和怎么求? 我们考虑每个前缀的深度是什么 发现这个值就相当于有多少个前缀等于它的后缀 ...
随机推荐
- OA系统与Exchange 日历打通
目前我碰到好几个案例是希望将客户以后的OA系统与Exchange中的日历系统相结合,比如致远或者泛微的OA系统. 客户的需求如下: 1.有了OA系统 2.客户使用Outlook当邮件客户端 3.客户希 ...
- Matplotlib外观和基本配置笔记
title: matplotlib 外观和基本配置笔记 notebook: Python tags:matplotlib --- 参考资料,如何使用matplotlib绘制出数据图形,参考另一篇mat ...
- Amazon.com 购物 信用卡预售期
I understand and thanks for confirming. In this case, the $1.00 is not a charge. It is an authoriza ...
- 卡特兰数(Catalan)及其应用
卡特兰数 大佬博客https://blog.csdn.net/doc_sgl/article/details/8880468 卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列. 卡特兰数前几项 ...
- 关于《数据结构》课本KMP算法的理解
数据结构课上讲的KMP算法和我在ACM中学习的KMP算法是有区别的,这里我对课本上的KMP算法给出我的一些想法. 原理和之前的KMP是一样的https://www.cnblogs.com/wkfvaw ...
- Bate版本控制报告
报告beta阶段2周中,项目的版本控制情况,不包括未在coding.net的部分. 包括不限于:check in (不是push)次数; 总词数为29次 check in log(时间.人员.mess ...
- 前端获取URL和SESSON中的值
.CS中代码 public ActionResult Index(string viewname, bool partial = false) { //获取URL中的 foreach (var key ...
- 《JavaScript》页面跳转
window.location.href: <i onclick="window.location.href = '/Form/Form_Write/Index?viewname=Fo ...
- Android源码项目目录结构
src: 存放java代码 gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的id project.properties: 指定当前工程采用的开发工具包的版本 libs: 当前 ...
- IHttpModule的那些事
写在前面 关于IHttpModule的相关内容,在面试的时候也被问到过,当时也是隐隐约约的感觉这个接口有一个Init方法,可以在实现类中的Init方法注册一系列的事件,说句实话,具体哪些事件,忘了差不 ...