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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386964.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386964.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386964.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

右鍵Git Bash Here不見了怎么辦,手把手教你還原!

第一步&#xff0c;window R&#xff0c;輸入regedit回車進入注冊表 依次進入HKEY_CLASSES_ROOT —-》 Directory —-》Background —-》 shell 右鍵點擊shell&#xff0c;選擇新建&#xff0c;然后選擇項&#xff0c;命名為 Git Bash Here&#xff0c;成功后進入桌面右鍵發現…

RUNOOB python練習題6 斐波那契數列

用來練手的python 練習題其六&#xff0c;原鏈接 : python練習實例6 題干 : 斐波那契數列 斐波那契數列可以說是很好的遞歸理解工具了&#xff0c;這里就用遞歸實現一下斐波那契數列。 源代碼如下: # 返回fibonacci數列中某一項的數值 def Fibonacci(n):if n 1:return 1eli…

linux 單用戶密碼修改

1.啟動系統&#xff0c;并在GRUB2啟動屏顯時&#xff0c;按下e鍵進入編輯模式。 2.在linux16/inux/linuxef所在參數行ro更改為init/sysroot/bin/sh 3.按Crlx啟動到shell. 4.掛載文件系統為可寫模式: mount -o remount &#xff0c;rw /sysroot 5換根chroot /sysroot 6.運行pass…

github windows客戶端

方法/步驟 1 1. 首先到官網下載Github客戶端 2 2. 點擊上圖紅框的按鈕開始下載客戶端。 3 3. 雙擊下載好的客戶端&#xff0c;開始安裝。 4 雙擊之后出現一個框 5 之后等待一段時間&#xff0c;出現一個在線下載界面 6 4. 在線下載完成之后開始進行安裝。安裝完成之后…

賦值語句 變量的地址相關 : RUNOOB python練習題7

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例7 練習實例7非常的簡單也有意思。題干 : 將一個列表的數據復制到另一個列表中。 完成這個操作的代碼非常簡單&#xff0c;即使是我這樣的初學者應該也是一語道破&#xff0c;賦值語句嘛。但這里我們就列舉出幾種不…

Web標準的概念及組成

一周更新兩個或三個關于web前端的知識點&#xff0c;歡迎感興趣的小伙伴們一起學習討論1、WEB標準是網頁制作的標準&#xff0c;它不是一個標準&#xff0c;它是根據網頁的不同組成部分生成的一系列標準。這些標準大部分由W3C起草發布&#xff0c;也有部分標準由ECMA起草發布。…

Fiddler簡介及安裝和HTTPS的解決

Fiddler簡介&#xff1a; 一個很強大的抓包工具&#xff0c;類似Charles 1.安裝&#xff1a; Filddler官網&#xff1a;點擊打開鏈接 我安裝的是filddler4&#xff1a;點擊打開鏈接 直接下載文件&#xff0c;然后一路下一步就可以了 1.下載文件&#xff1a; 2.安裝文件一…

RUNOOB python練習題8 numpy矩陣的索引及遍歷

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例8 題干: 輸出 9*9 乘法口訣表。 import numpy as nptable np.zeros((9,9)) for i in range(table.shape[0]):for j in range(table.shape[1]):table[i][j] (i1) * (j1)# 查詢九九乘法表 def affichage_table(a,…

ddt源碼修改:HtmlTestRunner報告依據接口名顯示用例名字

做接口測試&#xff0c;使用unittestddtexcel ,使用HtmlTetstRunner來生成測試用例。 查看報告的時候 用例名稱都是 test_api_1 、test_api_2 、test_api_3 的顯示 &#xff0c;看的不爽&#xff0c;也不明確&#xff0c;如果是test_api_登陸成功 、 test_api_密碼錯誤 …

C#操作靜態路由表(增、刪、改、查、遍歷)

C#操作靜態路由表&#xff0c;通過Windows原生API進行操作&#xff08;效率比通過CMD操作的高很多&#xff09;&#xff0c;支持增、刪、改、查、遍歷使用的是Iphlpapi.dll庫&#xff0c;這個庫里面還有很多很好用的API&#xff0c;有興趣的童鞋自行研究吧&#xff0c;這里只用…

RUNOOB python練習題9 如何在代碼中加入砸瓦魯多

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例9 題干: 暫停一秒輸出 如何在輸出的過程中加入咋瓦魯多&#xff0c;讓輸出更有節奏感&#xff0c;滿足需求呢&#xff1f; import time import numpy as nptable np.arange(0,10,1,dtypeint) for i in range(tab…

服務器與客戶端連接 聊天機器人

服務器運行當顯示 E:\pycharm\python\venv\Scripts\python.exe E:/pycharm/python/協議/機器人聊天服務器.py 開始監聽 accept 說明服務器運行成功 之后運行客戶端&#xff0c;輸入“命令” E:\pycharm\python\venv\Scripts\python.exe E:/pycharm/python/協議/機器人聊天客戶…

Fiddler抓取https設置及其原理

Fiddler抓取https設置及其原理 2018-02-02 目錄 1 HTTPS握手過程 2 Fiddler抓取HTTPS過程 3 Fiddler抓取HTTPS設置參考 數字簽名是什么&#xff1f; 1 HTTPS握手過程 HTTPS 并非是應用層的一種新協議。只是 HTTP 通信接口部分用 SSL &#xff08;安全套接字層&#xff09;和…

springboot 返回json字符串格式化問題

在idea中yml文件中添加以下注解就可以格式化json字符串效果 spring: jackson: serialization: indent-output: true 原返回json格式為&#xff1a; {"isSuccess":"ok","code":"0","message":"success",&…

RUNOOB python練習題10

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例9 題干 : 暫停兩秒輸出&#xff0c;并格式化當前時間。 import time,datetimeTIME datetime.datetime.now() print(TIME.strftime("%Y.%m.%d %H-%M-%S")) time.sleep(2) TIME datetime.datetime.now(…

HTTPS連接過程以及中間人攻擊劫持

HTTPS連接過程以及中間人攻擊劫持 目前很多應用都用webview加載H5頁面&#xff0c;如果服務端采用的是可信CA頒發的證書&#xff0c;在 webView.setWebViewClient(webviewClient) 時重載 WebViewClient的onReceivedSslError() &#xff0c;如果出現證書錯誤&#xff0c;直接調…

Cookie、cookie使用方法

Cookie、cookie使用方法、保存用戶名密碼 //設置Cookie&#xff0c;//cname 獲取時所需參數//username,password 用于記住賬號密碼&#xff0c;如果只要存一個參數 password為空即可//exdays 設置過期參數 設為負數即可刪除&#xff08;如-1&#xff09;function setCookie(c…

RUNOOB python練習題12 找素數問題

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例12 題干 : 判斷101-200之間有多少個素數&#xff0c;并輸出所有素數 源代碼如下: import numpy as np bound np.arange(101,201,1) result np.array([]) for k in bound:for i in range(k):# 如果k存在不是1或…

Linux: centOS6.5 RabbitMQ

在大多數大公司&#xff0c;像應用服務器軟件的安裝、部署都是運維的事情&#xff0c;其實自己去嘗試部署一下&#xff0c;也是有收獲的。 有機會正好嘗試了Linux下的rabbitMq安裝過程&#xff0c;做了記錄&#xff0c;希望有用到的人可以做下參考。 安裝環境&#xff1a; Li…

RUNOOB python練習題13 水仙花數

用來練手的python 練習題其十三&#xff0c;原鏈接 : python練習實例13 題干 : 打印出所有的"水仙花數"&#xff0c;所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方和等于該數本身。例如&#xff1a;153是一個"水仙花數"&#xff0c;…