[SDOI2007] 单词接龙游戏 dp
这个题本来时限2s,但cogs上有一个点似乎有问题、、洛谷是1s,最后四个点卡人,特判才过、
就是类似最长上升子序列的dp方式、
另外分析一下时间复杂度:
总复杂度=l1*l2+l2*l3+l3*l4...即对每一长度相同的段乘比他短1的段的数量
由正方形面积最大可知,和相等的情况下,两个数越接近,乘起来越大
所以设一共有x个不同的段, 总复杂度=(10000/x)^2*x=10000*10000/x,所以x取1时最复杂为100000000,对于2s时限是够的
码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int i,j,a,b,c,d,k,ans,f[30005],qj[30005],n,o,len[105];
struct ci
{char str[1050];int cs[28],l;
}dc[30005];
bool cmp(ci a,ci b)
{return a.l<b.l;
}
int main()
{while(scanf("%s",dc[n+1].str)!=EOF){++n;int l=strlen(dc[n].str);dc[n].l=l;for(i=0;i<l;i++)dc[n].cs[dc[n].str[i]-'a']++; }sort(dc+1,dc+1+n,cmp);for(i=1;i<=n;i++)if(len[dc[i].l]==0){len[dc[i].l]=i;}len[dc[1].l-1]=999999;if (len[dc[n].l]-len[dc[n].l-1]>=4000){printf("1\n"); printf("%s\n",dc[1].str); return 0;}for(i=1;i<=n;i++){f[i]=1;qj[i]=0;for(j=len[dc[i].l-1];j<=len[dc[i].l]-1;j++){ bool ky=1;int k;if(f[j]<f[i])continue;for(k=0;k<=25;k++){if(dc[i].cs[k]<dc[j].cs[k]){ky=0;break;}} if(ky==0)continue;f[i]=f[j]+1;qj[i]=j; }if(f[i]>ans)ans=f[i],o=i;
}
int lin[10005];lin[0]=0;
printf("%d\n",ans);for(;o!=0;o=qj[o]){lin[++lin[0]]=o; }for(i=lin[0];i>=1;i--){printf("%s\n",dc[lin[i]].str);}
}
[SDOI2007] 单词接龙游戏 dp相关推荐
- 洛谷 P1019 单词接龙 Label:dfs
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷 P1019 单词接龙 (DFS)
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...
- JZOJ 3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙(words)
Description Bsny从字典挑出N个单词,并设计了接龙游戏,只要一个单词的最后两个字母和另一个单词的前两个字母相同,那么这两个单词就可以有序的连接起来. Bsny想要知道在所给的所有单词中能 ...
- P1019 单词接龙 (DFS)
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷——P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 洛谷 P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都 最多在"龙&quo ...
- 洛谷P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 信息学奥赛一本通(1220:单词接龙)
1220:单词接龙 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5368 通过数: 3159 [题目描述] 单词接龙是一个与我们经常玩的成语接龙相类似的 ...
最新文章
- zend framework php编码规范,Zend Framework常用校验器详解
- 以太坊开发者工具的最新清单
- 计算整数n的b进制展开式
- Unity中的值传递与引用传递
- linux之more命令
- 单身两年以上是什么体验?
- 微信支付php案例,小程序微信支付php案例
- 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
- HMC 命令行登陆设置
- mybatis 插件
- 揭露淘宝不良商家,利用UI设计缺陷进行恶意修改销量以及评价!
- Landsat系列卫星介绍
- 写口算用计算机作文600字,口算考试作文600字
- Python股票量化学习(1)——股票代码下载
- 【软件工具篇02】使用Anki克服遗忘曲线
- obs摄像头模糊_用OBS如何直播 照着学就行了
- 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议
- HTML 3d立体旋转相册
- python 裁剪图片
- 《机器学习》读书笔记,第二章概念学习和一般到特殊序
热门文章
- linux数据泵恢复,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
- Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类
- Android笔记 消息机制handler+http之 网络图片浏览器demo
- 【文献学习】强化学习3:基于数据的方法
- 【springboot】application.yml配置文件中数据库密码password加密后显示
- 【数据库基础知识】plsql安装及配置
- 小程序点击显示隐藏(点击标题,内容显示,再次点击隐藏,同时切换箭头的状态,且默认第一组的内容显示)
- day2 java的数据转换与强制转换
- 大华的支持rtmp推流吗_RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播...
- java获取本机ip地址_代码片段:获取系统所有IP