NOIP2000提高组复赛C 单词接龙
题目链接:https://ac.nowcoder.com/acm/contest/248/C
题目大意:
略
分析:
注意点:1.前缀和后缀的公共部分应该选最短的。2.如果两个字符串前缀和后缀的公共部分恰好是其中一个字符串,那么这两个字符串不能合并。
代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define rep(i,n) for (int i = 0; i < (n); ++i) 5 #define For(i,s,t) for (int i = (s); i <= (t); ++i) 6 #define rFor(i,t,s) for (int i = (t); i >= (s); --i) 7 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) 8 #define rforeach(i,c) for (__typeof(c.rbegin()) i = c.rbegin(); i != c.rend(); ++i) 9 10 #define pr(x) cout << #x << " = " << x << " " 11 #define prln(x) cout << #x << " = " << x << endl 12 13 #define ALL(x) x.begin(),x.end() 14 #define INS(x) inserter(x,x.begin()) 15 16 #define ms0(a) memset(a,0,sizeof(a)) 17 #define msI(a) memset(a,inf,sizeof(a)) 18 19 #define pii pair<int,int> 20 #define piii pair<pair<int,int>,int> 21 #define mp make_pair 22 #define pb push_back 23 #define fi first 24 #define se second 25 26 inline int gc(){ 27 static const int BUF = 1e7; 28 static char buf[BUF], *bg = buf + BUF, *ed = bg; 29 30 if(bg == ed) fread(bg = buf, 1, BUF, stdin); 31 return *bg++; 32 } 33 34 inline int ri(){ 35 int x = 0, f = 1, c = gc(); 36 for(; c<48||c>57; f = c=='-'?-1:f, c=gc()); 37 for(; c>47&&c<58; x = x*10 + c - 48, c=gc()); 38 return x*f; 39 } 40 41 typedef long long LL; 42 const int maxN = 1e5 + 7; 43 44 int n, ans; 45 string str[21]; 46 vector< pii > nexts[21]; 47 int cnt[21]; 48 string st; 49 50 // Common prefix and suffix 51 int CPS(int x, int y) { 52 int ret = 0, i = str[x].size()-1, j = 1; 53 54 while(i >= 0 && j < str[y].size()){ 55 if(str[x].substr(i, str[x].size()) == str[y].substr(0, j)) { 56 ret = j; 57 break; 58 } 59 --i; 60 ++j; 61 } 62 if(ret == str[x].size() || ret == str[y].size()) ret = 0; 63 return ret; 64 } 65 66 void dfs(int x, int ret) { 67 bool flag = true; 68 rep(i, nexts[x].size()) { 69 int nt = nexts[x][i].se; 70 if(cnt[nt] >= 2) continue; 71 flag = false; 72 73 ++cnt[nt]; 74 75 dfs(nt, ret + str[nt].size() - nexts[x][i].fi); 76 77 --cnt[nt]; 78 } 79 if(flag) ans = max(ans, ret); 80 } 81 82 int main(){ 83 scanf("%d", &n); 84 For(i, 1, n) cin >> str[i]; 85 cin >> st; 86 For(i, 1, n) { 87 For(j, 1, n) { 88 int t = CPS(i, j); 89 if(t) nexts[i].push_back(mp(t, j)); 90 } 91 } 92 For(j, 1, n) { 93 if(st[0] == str[j][0])nexts[0].push_back(mp(0, j)); 94 } 95 dfs(0, 0); 96 97 printf("%d\n", ans); 98 return 0; 99 }
View Code
转载于:https://www.cnblogs.com/zaq19970105/p/10753006.html
NOIP2000提高组复赛C 单词接龙相关推荐
- 信息学奥赛一本通 1220:单词接龙 | 1913:【00NOIP普及组】单词接龙 | OpenJudge NOI 2.5 8783 | 洛谷 P1019 [NOIP2000 提高组] 单词接龙
[题目链接] ybt 1220:单词接龙 ybt 1913:[00NOIP普及组]单词接龙 OpenJudge NOI 2.5 8783:单词接龙 洛谷 P1019 [NOIP2000 提高组] 单词 ...
- P1019 [NOIP2000 提高组] 单词接龙
P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 整体思路:1.先将每个单词与另外的单词重叠的部分算出来记作yc[][]: 2.然后 ...
- NOIP2010 提高组 复赛 translate 机器翻译
NOIP2010 提高组 复赛 translate 机器翻译 1.读题,很快弄明题意,单词不在内存中就查字典,统计查字典次数. 2.内存采用队列方式.统计进队列次数,即为查询次数. 3.程序很快编好, ...
- 凡人升天传7——NOIP2010 提高组复赛题解
本蒟蒻在考试时最后一道直接报零*__*,悲痛欲绝,因此在这里著下本题解. 可恶的西西弗 虽然题目做的很垃圾,但在写题解中途不得不感叹除了最后一道,其他真是好水题呀!!! --------------- ...
- 信息学奥赛一本通 1820:【00NOIP提高组】进制转换 | 洛谷 P1017 [NOIP2000 提高组] 进制转换
[题目链接] ybt 1820:[00NOIP提高组]进制转换 洛谷 P1017 [NOIP2000 提高组] 进制转换 注意:两OJ上题目内容相同,输入输出要求不同 [题目考点] 1.数制 [解题思 ...
- 洛谷——P1017 [NOIP2000 提高组] 进制转换(C++)
洛谷--P1017 [NOIP2000 提高组] 进制转换(C++) 前言 前几天才参加了第十三届蓝桥杯比赛,发现居然有两道于进制相关的题,而且那道编程题--X进制减法,别说做了,题都看不懂,真的是枯 ...
- 洛谷P1017题解 [NOIP2000 提高组] 进制转换
原文地址:https://luvletter.blog.luogu.org/p1017-ti-jie P1017 [NOIP2000 提高组] 进制转换 题目描述 我们可以用这样的方式来表示一个十进制 ...
- NOIP2013 提高组复赛解题报告
NOIP2013 提高组复赛 day1 day\;1 1002. 火柴排队 贪心+数据结构/归并排序 这个"相邻交换"让我联想到了NOIP2012_day1_task2_game那 ...
- NOIP 2008 提高组 复赛 message 传字条
NOIP 2008 提高组 复赛 message 传字条 1.样例很快模拟成功,但感觉是凑出来的,没有章法. 2.深度优先遍历,但感觉容易超时. 3.动态规划?翻看他人代码,发现动态规划的写法,确实想 ...
最新文章
- 如何使用阿里云容器服务保障容器的内存资源质量
- python的文件操作os_python文件、文件夹操作OS模块
- windows下运用git bash 通过ssh方式连接到git server
- 利用idea构建hibernate
- go下载指定版本的依赖包
- text mesh pro html,TextMesh Pro 超链接解析失败
- excel调用python编程-超简单:用Python让Excel飞起
- mybatis源码-plugin源码
- 安徽外国语学院计算机毕业大补考,学生缓考、补考及重修最终成绩计算办法
- iOS 使用AFNetworking-----cpf
- DHCP 实现动态 IP 上网简析
- C# GDI画图系列(五) 添加文字和导出图片等附加功能
- 十部门发促消费“24条”:提高相对低收入群体待遇
- HTTPS升级配合HSTS打造顶级安全网站
- python视频口碑佳_《囧妈》口碑扑街?Python告诉你,为何这次观众不买账了
- [面经]阿里游戏一面的算法题
- 反垃圾邮件网关该如何选型考量
- 巨龙信息大数据集成系统 多元数据汇聚的一站式集成治理
- 客户同情和客户同理心的区别
- 魔镜VR导出Android工程
热门文章
- 关于Asp.Net开发中导入外部JavaScript文件的问题
- 逝去的大学生活自己丢了什么
- java dubbo 方案,Missing artifact com.alibaba:dubbo:jar:2.8.4 dubbo解决方案
- java web转码_javaweb后台转码
- 用python自制背单词程序_c++自制背单词应用
- 华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...
- 计算机应用 winxp,2017年职称计算机考试模块WindowsXP试题
- mongoDB中的数据类型
- java打印菱形代码_Java打印菱形高效简洁代码
- 【C++基础】自定义异常类与多重捕获