[luoguP1666] 前缀单词(DP)
先把所有字符串按照字典序排序一下
会发现有字符串x和y(x再y前面,即字典序小),如果x不是y的前缀,那么在x前面不是x前缀的字符串也不是y的前缀
这样就可以DP了
f[i][j]表示前i个字符串中选j个,且第j个必须选字符串i。有多少种集合,
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 101
#define LL long long using namespace std; int n;
string s[N];
bool b[N][N];
LL ans, f[N][N];
//f[i][j]表示1~i号里取j个,i号必须取的方案数 inline bool check(int x, int y)
{
int i;
for(i = 0; i < s[x].length(); i++)
if(s[x][i] != s[y][i])
return 0;
return 1;
} int main()
{
int i, j, k;
scanf("%d", &n);
for(i = 1; i <= n; i++) cin >> s[i];
sort(s + 1, s + n + 1);
for(i = 1; i <= n; i++)
for(j = 1; j < i; j++)
b[j][i] = check(j, i);
f[0][0] = 1;
for(i = 1; i <= n; i++)
for(j = 1; j <= i; j++)
{
for(k = 0; k < i; k++)
if(!b[k][i])
f[i][j] += f[k][j - 1];
ans += f[i][j];
}
printf("%lld\n", ans + 1);
return 0;
}
[luoguP1666] 前缀单词(DP)的更多相关文章
- P1666 前缀单词
P1666 前缀单词 tire树上跑dp 首先将trie树建出来,然后对于每个节点.考虑他的子节点. 子节点的方案数都互不干扰,所以子节点与其他子节点的的方案数可以利用乘法原理算出来. 然后如果这个节 ...
- 【洛谷 P1666】 前缀单词 (Trie)
题目链接 考试时暴搜50分...其实看到"单词","前缀"这种字眼时就要想到\(Trie\)的,哎,我太蒻了. 以一个虚点为根,建一棵\(Trie\),然后\( ...
- 洛谷 P1666 前缀单词 题解
题意:给n个单词,如果单词a为单词b的前缀则a,b不能共存,问能共存的集合数(包括空集) 一道dp题,排序后判断,f[i][j]表示i和j是否能共存,f[i][j]=1表示能共存,初始化dp[i]=1 ...
- P1666前缀单词
题目传送门点我传送 Ⅰ.字典树+树型DP 非常奇妙的一种解法 第一部分:构建树 先对来的单词读入,插入字典树 然后对于一颗字典树,其实是有很多无用边的,所以我们需要删去一些边 删去非单词节点和非单词节 ...
- FZU 2168 前缀和+dp递推
Description 部队中共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,按重要程度从低到高排序,依次以数字1到M标注每个地点的重要程度,指挥部将选择 ...
- Luogu P1666 前缀单词
校内资格赛题目,差点高一就要\(\tt{AFO}\)了 30分思路 对30%的数据,满足$1≤n≤10 $ 所以我们可以子集枚举,实际得分40pts #include<iostream> ...
- [POI2009]KON-Ticket Inspector(二维前缀和+DP)
题意 有n个车站,现在有一辆火车从1到n驶过,给出aij代表从i站上车j站下车的人的个数.列车行驶过程中你有K次检票机会,所有当前在车上的人会被检票,问最多能检多少个不同的人的票 (n<=600 ...
- 洛谷P5369 [PKUSC2018]最大前缀和 [DP]
传送门 思路 这么一道签到题竟然没切掉真是丢人呢-- 首先有一个\(O(3^n)\)的SB方法,记录\(dp_{S,T}\)表示已经填进去了\(S\),当前最大前缀和集合为\(T\),随便转移.太简单 ...
- 【luogu P1666 前缀单词】 题解
题目链接:https://www.luogu.org/problemnew/show/P1666 10.13考试题 当时没想出来,觉得是要用trie做,在trie上跑一个树形dp 结果是写了个子集枚举 ...
随机推荐
- sql子查询的例子
1.单行子查询 select ename,deptno,sal from emp where deptno=(select deptno from dept ...
- this关键字实现串联构造函数调用
在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分 ...
- CF779C(round 402 div.2 C) Dishonest Sellers
题意: Igor found out discounts in a shop and decided to buy n items. Discounts at the store will last ...
- canvas基础绘制-一个小球的坠落、反弹
效果如图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- Synplify FPGA 逻辑综合
作为 Synopsys FPGA 设计解决方案的一部分,Synplify FPGA 综合软件是实现高性能.高性价比的 FPGA 设计的行业标准. 其独特的行为提取综合技术 (Behavior Extr ...
- COGS 2685. 迷妹
★ 输入文件:fans.in 输出文件:fans.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 小钟.小皓和小曦都是著名偶像派OI选手,他们都有很多迷妹. 现 ...
- uva1627 Team them up!
注意这题要求互相认识不认识的人之间连一条线一个人在组1,那么不认识(互相认识)的人就在组0:同时这些人不认识的人就在组1.每个联通分量都可以独立推导,遇到矛盾则无解一个联通分量有一个核心,其他的点是分 ...
- vscode 打开新文件不替换旧文件
设置 "workbench.editor.enablePreview": false
- SQL使用exists时的多种写法
from test; go from test; go 下面这种效率明显高不少.
- postman使用--环境变量
变量 postman提供了变量设置,有四种变量类型本地变量全局变量环境变量 数据变量 什么是环境变量 环境变量指在不同环境,同一个变量值随着环境不同而变化,比如在测试环境时,host为:dev.pos ...