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相关推荐

  1. TC SRM 562 div2 B 题

    题意: 给你一个矩形的画布,此画布由'B'和'.'组成,画T次每次画的时候他的左上角的起始点是确定的几位(1,1),(2,2),(3,3)......(T,T); 在画的过程中可能会出现相互覆盖求画完 ...

  2. TC SRM 593 DIV2 1000

    很棒的DP,不过没想出,看题解了..思维很重要. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstrin ...

  3. TC SRM 665 DIV2 B LuckyCycle 暴力

    LuckyCycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...

  4. TC SRM 553 DIV2

    转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove 赤裸裸的又在送rate. 250 ...

  5. SRM 543 Div2

    决定以后多做一些TC,即使做不了比赛,也要多做一些TC上的题,顺便写一些结题报告什么的.不过像我这种在Div2混的弱菜,也写不出什么高质量的结题报告,而且1000pt的题,我基本都不用看了,尽量把25 ...

  6. 【TopCoder SRM 551 Div2】Solutions

    [250] Beaver Bindu has some colored bricks. Each color is described by an uppercase letter. Bricks o ...

  7. TC SRM 573

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 又来水一发.... 结果:过了250,challe ...

  8. 决定了,把以前做过的CF,TC总结都补上来

    实在受不了自己了,做的越来越差劲了. 决定了,把以前做过的CF,TC没做总结的都补上来. Codeforces: Codeforces Round #154(div 2):http://codefor ...

  9. TC(SRM)和CF入门教程for ACMer[转载]

    一.TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM).SRM的规则总结起来就是一句话:75分钟做完3道难度 ...

最新文章

  1. ICML 2019全纪录:论文解读、workshop讨论、核心知识都在这里了
  2. ZOJ3261并查集逆向处理
  3. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )
  4. ESP8266--学习笔记(八)串口源码分析
  5. 前端学习(3120):react-hello-react的setstate的使用
  6. 易生信九天的转录组分析培训班总结
  7. (良心)世上最全设计模式导读(含难度预警与使用频率完整版)
  8. Springsecurity之认证过程简析
  9. 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型
  10. windows安装mysql修改密码_1、Windows下安装mysql-8.0.12及修改初始密码
  11. awvs无法启动问题
  12. 神舟 桌面显示计算机,神舟笔记本双显卡怎么切换不盯道你的笔记本型号
  13. 计算机与测控技术专业就业方向,测控技术与仪器专业就业前景与方向(五篇)
  14. 手机java update_手机里的java菜单老是自动更新为什么啊
  15. 安卓设备数据转移到ios设备
  16. Android 卡顿优化之 Skipped * frames 掉帧的计算
  17. 优秀的Kafka架构设计
  18. temp--文件夹中的文件处理
  19. TUSCANY 学习笔记1
  20. R语言心得说:R语言之xlsx包读写Excel数据

热门文章

  1. 三星华为等推折叠屏手机 这家日本小厂意外发财
  2. 【Git配置技巧】01. 配置文件git config介绍
  3. 开发落网电台windows phone 8应用的计划(1)
  4. 《2021企业数智化转型升级先锋人物》榜重磅发布
  5. MySQL | 视图
  6. 位运算符和位运算(与,或,异或等)
  7. 博图中热电阻/热电偶(RTD/TC)模拟量信号的处理
  8. 一款热电偶冷端补偿电路
  9. Enhancer学习(原无远开发平台)
  10. matlab代码折叠与分节注释