根据数据范围,暴力可以解决,对每一个串,找与其互为回文的串,或者判断自身是否为回文串,然后两两将互为回文的串排列在头尾,中间放且只能最多放一个自身为回文串的串,因为题目说每个串都是不同的

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL; string str[];
int cache[], self[], s[], chosen[]; void run_case() {
int n, m;
cin >> n >> m;
for(int i = ; i <= n; ++i)
cin >> str[i];
for(int i = ; i <= n; ++i) {
bool flag = true;
for(int j = ; j < m/ && flag; ++j) {
if(str[i][j] != str[i][m-j-]) flag = false;
}
if(flag) {
self[i] = ;
continue;
}
if(cache[i]) continue;
string now = str[i];
reverse(now.begin(), now.end());
for(int j = ; j <= n; ++j) {
if(j != i && now == str[j]) {
cache[i] = j; break;
}
}
}
vector<int> ans, selfs;
int top = ;
for(int i = ; i <= n; ++i)
if(cache[i] && !chosen[i]) {
ans.push_back(i);
s[++top] = cache[i];
chosen[cache[i]] = i;
} else if(self[i]) selfs.push_back(i);
if(selfs.size()) ans.push_back(selfs[]);
while(top) {
ans.push_back(s[top--]);
}
cout << ans.size() * m << "\n";
for(auto i : ans)
cout << str[i];
} int main() {
ios::sync_with_stdio(false), cin.tie();
//cout.setf(ios_base::showpoint);cout.precision(10);
//int t; cin >> t;
//while(t--)
run_case();
cout.flush();
return ;
}

最新文章

  1. d3 中exit() remove()正确工作的方式
  2. 兼容解决 IE 、火狐、谷歌浏览器中 Iframe框架的页面缓存的方法
  3. Atitit &#160;图像处理底色变红的解决
  4. 修改镜像文件EI.CFG
  5. C#中Config文件中,特殊符号的书写方法。
  6. DelphiXE Android自适应屏幕办法
  7. jquery学习之旅
  8. 教你pomeloclient包libpomelo增加cocos2d-x 3.0工程(Windows、Android、IOS平台)
  9. 进程间通讯之mmap文件共享
  10. 201521123117 《Java程序设计》第9周学习总结
  11. vim 批量替换使用说明
  12. ruby学习--条件控制
  13. django之ReverseOneToOneDescriptor
  14. MongoDB学习笔记(11)-- Index
  15. Python——验证码识别 Pillow + tesseract-ocr
  16. VB将MSHFlexGrid数据导出到Excel文件通用功能
  17. android studio 更新 Gradle错误解决方法(Gradle sync failed)
  18. JUC——线程同步辅助工具类(Semaphore,CountDownLatch,CyclicBarrier)
  19. 【Linux】文件描述符与重定向
  20. POJ 3260 The Fewest Coins(多重背包问题, 找零问题, 二次DP)

热门文章

  1. iOS性能优化之内存(memory)优化
  2. 动手动脑5JAVA项目中的常用的异常处理情况
  3. TD tree体验
  4. tkinter+pickle+python的一个登录界面设计
  5. 在tomcat上部署项目
  6. Ajax请求状态200,却走error的函数
  7. 匹配 $gdinfo 中的数字
  8. PAT 1007 Maximum Subsequence Sum (最大连续子序列之和)
  9. 【代码学习】PYTHON 列表循环遍历及列表常见操作
  10. ZOJ4110 Strings in the Pocket(2019浙江省赛)