CF 613C(Necklace-构造法)
2016-01-24 16:24
495 查看
给你n (1 ≤ n ≤ 26)种颜色的珠子,每种ai个,你需要把它们全部使用连成环,使其从‘某处’断开后形成的串是回文的,这样的某处尽可能多。求出任意一种方案
构造
构造
#include <iostream> #include <cmath> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <vector> #include <map> #include <functional> #include <cstdlib> #include <queue> #include <stack> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define ForD(i,n) for(int i=n;i;i--) #define MEM(s) memset(s,0,sizeof(s)); #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Forp(x) for(int p=pre[x];p;p=next[p]) #define RepD(i,n) for(int i=n;i>=0;i--) #define pb push_back const int maxn = 100000 + 10; int n,a[maxn]; vector<int> v1,v2; int gcd(int a,int b){if (!b) return a;return gcd(b,a%b);} void pri(){ For(i,n) For(j,a[i]) printf("%c",i+'a'-1); cout<<endl; } int main() { cin>>n; int tot=0; For(i,n) { cin>>a[i]; tot+=a[i]; if (a[i]&1) v1.pb(i); else if (a[i]) v2.pb(i); } int m1=v1.size(),m2=v2.size(); if (m1+m2==1) { cout<<tot<<endl; pri(); return 0; } int g=0; For(i,n) g=gcd(a[i],g); if (tot&1) { if (m1>=2) { cout<<"0"<<endl; pri(); return 0; } cout<<g<<endl; a[v1[0]]-=g; For(k,g) { For(i,n) For(j,a[i]/g/2) printf("%c",i+'a'-1); printf("%c",v1[0]+'a'-1); ForD(i,n) For(j,a[i]/g/2) printf("%c",i+'a'-1); } cout<<endl; } else { if (m1) { cout<<"0"<<endl; pri(); return 0; } cout<<g<<endl; For(k,g) { if (k&1) For(i,n) For(j,a[i]/g) printf("%c",i+'a'-1); else ForD(i,n) For(j,a[i]/g) printf("%c",i+'a'-1); } cout<<endl; } return 0; }
相关文章推荐
- poj3159 Candies(差分约束,最短路)
- Codeforces 617A Elephant 【水题】
- 21.1 关于库的基本知识
- BestCoder Round #69 (div.2)-Baby Ming and phone number(模拟)
- ldd3随书源码移植
- Django项目让本地和服务器环境数据库配置自动切换
- Android 通过Base64上传图片到服务器
- SVN 一次性提交多个目录中文件的方法
- File file:/data1/hadoop/yarn/local/usercache/hp/appcache/application_* does not exi
- 80.Longest Common Prefix
- 云计算基础架构
- Intent传递数据从一个Activity到另一个Activity
- 【技术研究-泛型1】泛型基础——C++模板
- set方法内存分析(1)
- poj3253
- 监考风波
- jQuery form 表单验证插件(fieldValue)校验表单
- 外部接口 -- 密文校验与数据传输
- 【读书有感】——你只是看起来很努力
- 俄罗斯方块,我的java学习之路,小游戏