这个题本来时限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相关推荐

  1. 洛谷 P1019 单词接龙 Label:dfs

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  2. 洛谷 P1019 单词接龙 (DFS)

    题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...

  3. JZOJ 3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙(words)

    Description Bsny从字典挑出N个单词,并设计了接龙游戏,只要一个单词的最后两个字母和另一个单词的前两个字母相同,那么这两个单词就可以有序的连接起来. Bsny想要知道在所给的所有单词中能 ...

  4. P1019 单词接龙 (DFS)

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  5. 洛谷——P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  6. 洛谷 P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  7. [蓝桥杯][算法训练VIP]单词接龙(DFS+String)

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都 最多在"龙&quo ...

  8. 洛谷P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  9. 信息学奥赛一本通(1220:单词接龙)

    1220:单词接龙 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 5368     通过数: 3159 [题目描述] 单词接龙是一个与我们经常玩的成语接龙相类似的 ...

最新文章

  1. zend framework php编码规范,Zend Framework常用校验器详解
  2. 以太坊开发者工具的最新清单
  3. 计算整数n的b进制展开式
  4. Unity中的值传递与引用传递
  5. linux之more命令
  6. 单身两年以上是什么体验?
  7. 微信支付php案例,小程序微信支付php案例
  8. 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
  9. HMC 命令行登陆设置
  10. mybatis 插件
  11. 揭露淘宝不良商家,利用UI设计缺陷进行恶意修改销量以及评价!
  12. Landsat系列卫星介绍
  13. 写口算用计算机作文600字,口算考试作文600字
  14. Python股票量化学习(1)——股票代码下载
  15. 【软件工具篇02】使用Anki克服遗忘曲线
  16. obs摄像头模糊_用OBS如何直播 照着学就行了
  17. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议
  18. HTML 3d立体旋转相册
  19. python 裁剪图片
  20. 《机器学习》读书笔记,第二章概念学习和一般到特殊序

热门文章

  1. linux数据泵恢复,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
  2. Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类
  3. Android笔记 消息机制handler+http之 网络图片浏览器demo
  4. 【文献学习】强化学习3:基于数据的方法
  5. 【springboot】application.yml配置文件中数据库密码password加密后显示
  6. 【数据库基础知识】plsql安装及配置
  7. 小程序点击显示隐藏(点击标题,内容显示,再次点击隐藏,同时切换箭头的状态,且默认第一组的内容显示)
  8. day2 java的数据转换与强制转换
  9. 大华的支持rtmp推流吗_RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播...
  10. java获取本机ip地址_代码片段:获取系统所有IP