博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P2167 [SDOI2009]Bill的挑战
阅读量:5892 次
发布时间:2019-06-19

本文共 1213 字,大约阅读时间需要 4 分钟。

题目描述

输入输出格式

输入格式:

 

本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。

 

输出格式:

 

1 2 1 a? ?b

 

输入输出样例

输入样例#1:
50
输出样例#1:
对于30%的数据,T ≤ 5,M ≤ 5,字符串长度≤ 20;对于70%的数据,T ≤ 5,M ≤ 13,字符串长度≤ 30;对于100%的数据,T ≤ 5,M ≤ 15,字符串长度≤ 50。 真是玄学题 经历了从50分到70分再到AC 一开始看到觉得是带通配符的AC自动机状压DP,一看要求长度都一样,好像直接DP就行呀? 然后写了最朴素的DP,dp[i][j]表示转移到第i个字符,目前能匹配上的状态为j的方案数,然后枚举下一位是什么,与所有字符串进行比较转移即可 这样的复杂度是  $ O(26TLn*2^n) $  ,能有50分 然后可以发现与所有字符串比较是很愚蠢的,进行了很多重复计算,我们可以预处理出每一位所有字符串匹配某个字符的结果,压在一个int里,转移时直接按位与即可 这样复杂度是  $ O(26TL*2^n) $  ,能有70分 然后你把它数字带进去发现,它乘出来是26*5*50*2^15约等于2e8,这是什么意思?这意思就是稍微卡一卡就能过了。 DP怎么稍微卡一卡呢?你想DP倒过来就是记忆化搜索,搜索可以剪枝啊,于是我们尝试剪一剪枝。 怎么剪枝呢?加上如果在遍历到某个状态dp[i][j]时,如果dp[i][j]==0就不转移 事实上这个效果好得出奇,速度快了10倍都不止,至此获得100分
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #define eps 1e-715 #define INF 0x3f3f3f3f16 #define MOD 100000317 #define rep0(j,n) for(int j=0;j
nxt)24 #define max(a,b) (a>b?a:b)25 #define min(a,b) (a
 

 

 
 

转载于:https://www.cnblogs.com/LoveYayoi/p/6932869.html

你可能感兴趣的文章
Net设计模式实例之适配器模式(Adapter Pattern)
查看>>
Silverlight资源(转自蓝色理想)
查看>>
ABP理论学习之多租户
查看>>
Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]...
查看>>
TP-Link wr703N 使用华为HiLink系列上网卡的设置【转】
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(4)-创建项目解决方案
查看>>
IBM云的商务动作之我见(2):IBM 和 VMware 战略合作推进混合云
查看>>
阿里云--域名,主机,备案都配置好了,就是不能访问网站的解决方案
查看>>
使用Enyim.Caching访问阿里云的OCS
查看>>
使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
查看>>
预付费转码时长包
查看>>
r语言 连接 oracle数据库
查看>>
自然语言处理工具LTP语言云调用方法
查看>>
ARM Linux 3.x的设备树(Device Tree)【转】
查看>>
对 makefile 中 eval 函数的学习体会
查看>>
可拖动的层DIV的完整源代码【转】
查看>>
ASP.NET 常见问题 和 网页上加上百度搜索
查看>>
1.4 Ecosystem官网剖析(博主推荐)
查看>>
STK 10.1.3
查看>>
浓缩的才是精华:浅析GIF格式图片的存储和压缩(转)
查看>>