NEERC 17 H. Palindromic Cut 暴力(回文)
来源:互联网 发布:网络棋牌交流群 编辑:程序博客网 时间:2024/06/14 14:04
Problem H
题意:给出n个字符.问把n个字符分成k个字符串 要求:这k个字符串的长度都相同,这k个字符串都为回文.
n<=4e5.求出最小的k 并输出这k个字符串.
k组字符串 每组中最多只能有一个出现奇数次的字符.
题意:给出n个字符.问把n个字符分成k个字符串 要求:这k个字符串的长度都相同,这k个字符串都为回文.
n<=4e5.求出最小的k 并输出这k个字符串.
k组字符串 每组中最多只能有一个出现奇数次的字符.
如何输出方案:先把g个奇数字符仍到每组中间,剩下的2个相同的一对,有c对 如果能平均分给每组 即c为g的倍数 则退出.否则拆掉一个偶数 增加组数后继续判定.O(127*|S|)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=4e5+5,M=125;int n,g,fre[M];vector<char> sing;string s;int calc(){ int j=0; while(true) { g=sing.size(); int c=(n-g)>>1; if(c%g==0)//每组多少对. return c; while(j<M&& !fre[j]) j++; fre[j]--; sing.push_back(char(j)); sing.push_back(char(j)); }}int main(){ memset(fre,0,sizeof(fre)); cin>>n>>s; for(int i=0;i<n;i++) fre[s[i]]++; for(int i=0;i<M;i++) { if(fre[i]%2) sing.push_back(char(i)); fre[i]/=2; } if(sing.size()==0) { cout<<1<<endl; string B=""; for(int j=0;j<M;j++) for(int k=0;k<fre[j];k++) B+=char(j); string C=B; reverse(C.begin(),C.end()); B+=C; printf("%s\n",B.c_str()); return 0; } int c=calc(),j=0; cout<<g<<endl; //for(int i=0;i<sing.size();i++) // cout<<sing[i]<<' '; for(int i=0;i<g;i++) { char x=sing[i]; int d=c/g; string B=""; while(true) { while(j<M&& !fre[j]) j++; if(fre[j]>=d) { for(int k=0;k<d;k++) B+=char(j); fre[j]-=d,d=0; break; } else { for(int k=0;k<fre[j];k++) B+=char(j); d-=fre[j],fre[j]=0; } } string C=B; reverse(C.begin(),C.end()); B=B+x+C; // cout<<B<<endl; printf("%s ",B.c_str()); } return 0;}
阅读全文
0 0
- NEERC 17 H. Palindromic Cut 暴力(回文)
- 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest H. Palindromic Cut
- codeforc H. Palindromic Cut
- codeforces 883H Palindromic Cut
- codefoces 883H Palindromic Cut
- CF 883H Palindromic Cut(模拟)
- Codeforces Round #427 (Div. 2) D-Palindromic characteristics (回文串,暴力)
- 回文数(palindromic number)
- 回文数(palindromic number)
- HDU1431 素数回文 【暴力】
- 766 回文数【暴力...】
- Palindromic Squares 回文平方数
- uva11027 - Palindromic Permutation(回文排列)
- Palindromic Squares 回文平方数
- 回文树介绍(Palindromic Tree)
- Longest Palindromic Substring 最长回文
- Longest Palindromic Substring最长回文
- Longest Palindromic Substring(最长回文)
- js策略模式
- 在Django中使用memcached缓存
- linux下qemu调试linux内核
- matlab的padarray函数
- Struts 2访问Servlet API
- NEERC 17 H. Palindromic Cut 暴力(回文)
- MySQL学习(0) 安装MySql(windows)
- [刷题]UVA11248
- 颜色模式
- 泛型的作用及其基本概念
- leetcode-121. Best Time to Buy and Sell Stock
- 【笔试】:编程实现C++string 类成员函数
- 【小程序】微信小程序-滚动消息通知
- JSP与数据库链接