TC SRM599 div2 p950
tc的题意还是非常好理解的,所以也就不再赘述题意。
首先,对于这道题,我第一个想的就是组合数公式,首先对所有的字符串进行字典序排序,这样的话,所有的前缀连通块就全都凑到了一起,然后数出来所有的连通块的长度,按照组合数公式往里面套,就可以了,但是组合数取模还是忘了= =于是乎就没有按着这个方法写。
另一个方法貌似是dp,说实话,最开始并没有想到dp的这个姿势(果然还是dp太渣渣了)。
dp[i][j]表示的是以第i个字符串为结尾,前缀连续长度为j的方案数,当然我们目前只考虑这个前缀的规律,因为剩下的随意,直接乘以阶乘就可以啦~~那么这个数一定来自于以第i个字符串的所有的前缀为结尾,前缀连续长度为j-1个的时候的方案数,那么我们只需要预处理出来每一个字符串的前缀是第几个,就可以得到这个方法了。
代码如下
class SimilarNames2 {
public:typedef long long ll;ll a[55], dp[55][55];vector<int> adj[55];void init(){memset(a, 0, sizeof(a));a[0] = 1;for (int i = 1; i <= 50; i++)a[i] = (a[i - 1] * i) % mod;}bool judge(string a, string b){return b.find(a) == 0;}int count(vector <string> names, int L){init();int n = names.size();for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)if (i == j) continue;else if (judge(names[i], names[j])) adj[j].push_back(i);memset(dp, 0, sizeof(dp));for (int i = 0; i < n; i++) dp[i][0] = 1;for (int j = 1; j < L; j++)for (int i = 0; i < n; i++)for (int k = 0; k < adj[i].size(); k++){int x = adj[i][k];dp[i][j] = (dp[i][j] + dp[x][j - 1]) % mod;}ll ans = 0;for (int i = 0; i < n; i++)ans = (ans + dp[i][L - 1] * a[n - L]) % mod;return (int)ans;}
};
TC SRM599 div2 p950相关推荐
- TC SRM 562 div2 B 题
题意: 给你一个矩形的画布,此画布由'B'和'.'组成,画T次每次画的时候他的左上角的起始点是确定的几位(1,1),(2,2),(3,3)......(T,T); 在画的过程中可能会出现相互覆盖求画完 ...
- TC SRM 593 DIV2 1000
很棒的DP,不过没想出,看题解了..思维很重要. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstrin ...
- TC SRM 665 DIV2 B LuckyCycle 暴力
LuckyCycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- TC SRM 553 DIV2
转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove 赤裸裸的又在送rate. 250 ...
- SRM 543 Div2
决定以后多做一些TC,即使做不了比赛,也要多做一些TC上的题,顺便写一些结题报告什么的.不过像我这种在Div2混的弱菜,也写不出什么高质量的结题报告,而且1000pt的题,我基本都不用看了,尽量把25 ...
- 【TopCoder SRM 551 Div2】Solutions
[250] Beaver Bindu has some colored bricks. Each color is described by an uppercase letter. Bricks o ...
- TC SRM 573
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 又来水一发.... 结果:过了250,challe ...
- 决定了,把以前做过的CF,TC总结都补上来
实在受不了自己了,做的越来越差劲了. 决定了,把以前做过的CF,TC没做总结的都补上来. Codeforces: Codeforces Round #154(div 2):http://codefor ...
- TC(SRM)和CF入门教程for ACMer[转载]
一.TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM).SRM的规则总结起来就是一句话:75分钟做完3道难度 ...
最新文章
- ICML 2019全纪录:论文解读、workshop讨论、核心知识都在这里了
- ZOJ3261并查集逆向处理
- 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )
- ESP8266--学习笔记(八)串口源码分析
- 前端学习(3120):react-hello-react的setstate的使用
- 易生信九天的转录组分析培训班总结
- (良心)世上最全设计模式导读(含难度预警与使用频率完整版)
- Springsecurity之认证过程简析
- 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型
- windows安装mysql修改密码_1、Windows下安装mysql-8.0.12及修改初始密码
- awvs无法启动问题
- 神舟 桌面显示计算机,神舟笔记本双显卡怎么切换不盯道你的笔记本型号
- 计算机与测控技术专业就业方向,测控技术与仪器专业就业前景与方向(五篇)
- 手机java update_手机里的java菜单老是自动更新为什么啊
- 安卓设备数据转移到ios设备
- Android 卡顿优化之 Skipped * frames 掉帧的计算
- 优秀的Kafka架构设计
- temp--文件夹中的文件处理
- TUSCANY 学习笔记1
- R语言心得说:R语言之xlsx包读写Excel数据