CF 613C(Necklace-构造法)
来源:互联网 发布:鼎域名邸房价走势 编辑:程序博客网 时间:2024/06/03 03:20
给你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_backconst 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;}
0 0
- CF 613C(Necklace-构造法)
- [构造]CodeForces 613C Necklace
- CF 568 C 构造
- CF - 733C 构造 + 贪心
- CF 558C(Amr and Chemistry-构造法)
- cf#342-C - K-special Tables-构造
- CF 528C 欧拉回路构造
- CF 803C Maximal GCD 枚举,构造
- 【cf 487C】【数论+构造】【根据前缀积取模构造序列】
- CF 526D Om Nom and Necklace
- CF 559B(Equivalent Strings-构造法)
- CF#275 (Div. 2) C(数学构造)
- CF 22 C 带割点的图的构造
- cf 487C Prefix Product Sequence 构造+逆元
- CF Round#381(div2)C 思维+构造
- CF 862C Mahmoud and Ehab and the xor 构造
- CF 312C. The Closest Pair 简单构造
- CF 553B 构造
- HDU 1010 Tempter of the Bone(DFS+奇偶剪枝)
- ldd3随书源码移植
- 叠框
- 实现ASCII码字符集到Unicode字符集之间的转换
- Lua学习笔记-table中的混合风格&多项式求和
- CF 613C(Necklace-构造法)
- AT&T(GAS)汇编指令小集
- css学习笔记20160124框模型
- 【五校联考1day2】送你一颗圣诞树
- 快速排序算法
- 21.2 关于动态链接库的其他话题
- iOS从通讯录中选择联系人
- Leetcode243: Find Median from Data Stream
- 2014年第五届蓝桥杯C/C++程序设计本科B组省赛 蚂蚁感冒(编程大题)