614E - Necklace

思路:如果奇数超过1个,那么答案是0;否则,所有数的gcd就是答案。

构造方案:每个数都除以gcd,如果奇数个仍旧不超过1个,找奇数个那个在中间(如果没有奇数默认a),其他的平均分到两边。

如果奇数个数超过1个,为了保证中间点之间的每个字母个数是偶数个,那么就拿上种情况的两个构造一段(两个对称拼成一段)。

代码

#include<bits/stdc++.h>
using namespace std;
int a[];
const int N=2e6;
char s[N];
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
cin>>n;
int cnt=;
for(int i=;i<n;i++)
{
cin>>a[i];
if(a[i]&)cnt++;
}
if(n==)
{
cout<<a[]<<endl;
for(int i=;i<a[];i++)
cout<<'a';
cout<<endl;
return ;
}
if(cnt>=)
{
cout<<<<endl;
for(int i=;i<n;i++)
{
for(int j=;j<a[i];j++)cout<<(char)(i+'a');
}
cout<<endl;
return ;
}
int ans=gcd(a[],a[]);
for(int i=;i<n;i++)
ans=gcd(ans,a[i]);
int l=1e6,r=1e6+;
int index=;
for(int i=;i<n;i++)
{
a[i]/=ans;
if(a[i]&)index=i;
}
cnt=;
for(int i=;i<n;i++)
{
if(a[i]&)cnt++;
}
for(int i=;i<a[index];i++)
{
s[r++]='a'+index;
//cout<<s[r-1]<<endl;
}
bool flag=true;
for(int i=;i<n;i++)
{
if(i==index)continue;
while(a[i]!=)
if(flag)
{
s[l--]='a'+i;
a[i]--;
flag=false;
}
else
{
s[r++]='a'+i;
a[i]--;
flag=true;
}
}
string as;
for(int i=l+;i<r;i++)as+=s[i];
if(cnt>=)for(int i=r-;i>l;i--)as+=s[i];
cout<<ans<<endl;
if(cnt>=)ans/=;
for(int i=;i<ans;i++)
cout<<as;
cout<<endl;
return ;
}

Codeforces 614E - Necklace的更多相关文章

  1. [CodeForces - 614E] E - Necklace

    E - Necklace Ivan wants to make a necklace as a present to his beloved girl. A necklace is a cyclic ...

  2. Codeforces Round #339 (Div. 1) C. Necklace 构造题

    C. Necklace 题目连接: http://www.codeforces.com/contest/613/problem/C Description Ivan wants to make a n ...

  3. Codeforces 526D - Om Nom and Necklace 【KMP】

    ZeptoLab Code Rush 2015 D. Om Nom and Necklace [题意] 给出一个字符串s,判断其各个前缀是否是 ABABA…ABA的形式(A和B都可以为空,且A有Q+1 ...

  4. Codeforces - ZeptoLab Code Rush 2015 - D. Om Nom and Necklace:字符串

    D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standa ...

  5. 【Codeforces 526D】Om Nom and Necklace

    Codeforces 526 D 题意:给一个字符串,求每个前缀是否能表示成\(A+B+A+B+\dots+A\)(\(k\)个\(A+B\))的形式. 思路1:求出所有前缀的哈希值,以便求每个子串的 ...

  6. Codeforces 526D Om Nom and Necklace (KMP)

    http://codeforces.com/problemset/problem/526/D 题意 给定一个串 T,对它的每一个前缀能否写成 A+B+A+B+...+B+A+B+A+B+...+B+A ...

  7. Codeforces 526.D Om Nom and Necklace

    D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. CodeForces 526D Om Nom and Necklace

    洛谷题目页面传送门 & CodeForces题目页面传送门 给定字符串\(a\),求它的每一个前缀,是否能被表示成\(m+1\)个字符串\(A\)和\(m\)个字符串\(B\)交错相连的形式, ...

  9. Codeforces 1361C - Johnny and Megan's Necklace(欧拉回路)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这个题作为 D1C 还是蛮合适的-- 首先不难发现答案不超过 \(20\),所以可以直接暴力枚举答案并 check 答案是否 ...

随机推荐

  1. mvc actionresult返回各种文件

    public ActionResult ReviewFile(string folderName, string fileBasename, string extendName) { //以后根据后缀 ...

  2. VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)

    上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类. 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Con ...

  3. css3 弹性盒模型 变化

    如果你使用google搜索Flexbox,你会发现很多过时的信息.这里将告诉你如何迅速的辨别你需要的信息. 如果你正在查找有关于Flexbox的博客资料,你看到了“display:box;”或者“bo ...

  4. 【tensorflow】pip 安装失败的原因

    linux系统旧版本:   pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27- ...

  5. python webdriver api-操作日期元素的方法

    操作日期元素 第一种方式直接向输入框输入日期 dateInputBox = self.driver.find_element_by_id("datepicker") dateInp ...

  6. ES6学习笔记之map、set与数组、对象的对比

    ES6 ES5中的数据结构,主要是用Array和Object.在ES6中主要新增了Set和Map数据结构.到目前为止,常用的数据结构有四种Array.Object.Set.Map.下面话不多说了,来一 ...

  7. 2018跳槽面试必备之深入理解 Java 多线程核心知识

    导语:多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线 ...

  8. MySQL 字符串拼接

    MySQL 字符串拼接 在Mysql 数据库中存在两种字符串连接操作.具体操作如下 1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,c ...

  9. windows tomcat web应用以及eclipse console乱码解决方法

    在windows下,如果vm文件名为UTF-8格式,则显示乱码(velocity写出的不乱码): 改回GBK,则不再乱码.

  10. redhat6.4 elasticsearch1.7.3安装配置

    利用elasticsearch管理集群索引, 今天刚好需要重新调整elasticsearch的最大内存, 所以自己安装了练手 附件: elasticsearch 附件:elasticsearch-he ...