Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
#include
using namespace std; int memo[10005]; int n; vector
, vector
> > v; int backtrack[10005]; int dp(int index){ if(index == n){ return 0; } if(memo[index] != -1){ return memo[index]; } int res = 0; vector
a1; vector
b1; for (int i = index+1; i < v.size() ; i++) { if(v[i].first.first == v[index].first.first + 1){ bool ok = false; bool moze = true; a1 = v[i].second; b1 = v[index].second; for (int j = 0; j < 26; j++) { if(a1[j] != b1[j] && ok == false){ if(abs(a1[j] - b1[j]) == 1){ ok = true; } else moze = false; } else if(a1[j] != b1[j] && ok == true){ moze = false; break; } } if(moze){ if(res < dp(i) + 1) { res = dp(i) + 1; backtrack[index] = i; } } } } return memo[index] = res; } int main() { cin >> n; memset(backtrack, -1, sizeof backtrack); for(int i = 0; i < n; i++) { string s; cin >> s; vector
cnt(26, 0); for(int j = 0; j < s.size(); j++) { cnt[s[j] - 'A']++; } v.push_back(make_pair(make_pair(s.size(), s), cnt)); } sort(v.begin(), v.end()); memset(memo, -1,sizeof memo); int result = 0, start_id = 0; for(int i =0 ; i < n; i++) { if(v[i].first.first == 2) { if(result < dp(i)) { result = dp(i) + 1; start_id = i; } } } // cout << result << endl; if(result <= 1) { cout << 1 << "\n"; cout << "A" << endl; return 0; } vector
ans; ans.push_back(string() + v[start_id].first.second[0]); int A = start_id; while(A != -1) { ans.push_back(v[A].first.second); A = backtrack[A]; } if(ans[0].size() == ans[1].size()) { ans.erase(ans.begin()); } cout << ans.size() << "\n"; for(int i = 0; i < ans.size(); i++) { cout << ans[i] << "\n"; } return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)