链接:http://codeforces.com/contest/1138/problem/D

啊啊啊啊啊啊,自闭啊,比赛的时候判断条件 if(s1[i-1]=='0') aa++;写成了 if(s1[i]=='0') aa++;少写了个-1,被hack了,上分场变成了掉分场。

思路;

题目需要t字符串出现次数最多,那么找到最大的重叠部分就好了,然后依次加上就好了

主要就是要找到字符串t与本身的重叠部分,,假设有两个t,第一个t不变,第二个t向右移动:

比如:

10101010

-10101010 ->  一直向右移直到重叠部分相等

如:

10101010

-- 10101010   如这种情况 重叠部分为: 101010 ,题目需要最多的t字符串,我们只需要先摆上一个 t ,然后每补上一次t重叠部分这样就可以多出现一次t.最后算下能出现几次,输出出来,剩余的0和1直接跟在后面输出。

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define mid int m = (l + r) >> 1
#define ll long long
const int M = 1e5 + ;
string s,s1;
int main()
{
int a=,b=,a1=,b1=;
cin>>s;
int len = s.size();
cin>>s1;
int len1 = s1.size();
for(int i = ;i < len;i ++){
if(s[i]=='') a++;
else b++;
}
for(int i = ;i < len1;i ++){
if(s1[i]=='') a1++;
else b1++;
}
int k;
if(a1==) k = b/b1;
else if(b1 == ) k = a/a1;
else k = min(a/a1,b/b1);
if(k==){
cout<<s<<endl;
}
else{
int en = len1;
int aa = ,bb = ,aa1 = ,bb1 =;
for(int i = ;i < len1;i ++){
int flag = ;
if(s1[i-]=='') aa++;
else bb++;
if(s1[len1-i]=='') aa1++;
else bb1++;
if(aa!=aa1||bb!=bb1) continue;
for(int j = ;j < len1-i;j ++){
if(s1[i+j]!=s1[j]){
flag = ;
break;
}
}
if(flag == ){
en = i;
break;
}
}
//cout<<en<<endl;
int a2 = ;int b2 = ;
if(en != len1){
for(int i = len1 - en;i < len1;i ++){
if(s1[i]=='') a2++;
else b2++;
}
}
else {
a2 = a1,b2 = b1;
}
a-=a1; b-=b1;
cout<<s1;
int k1;
if(a2==) k1 = b/b2;
else if(b2 == ) k1 = a/a2;
else k1 = min(a/a2,b/b2);
for(int i = ;i <= k1;i ++){
for(int j = len1-en;j < len1;j ++)
cout<<s1[j];
}
a -= a2*k1; b -= b2*k1;
for(int i = ;i <= a;i ++)
cout<<;
for(int i = ;i <= b;i ++)
cout<<;
cout<<endl;
}
}

Codeforces Round #545 (Div. 2) D的更多相关文章

  1. Codeforces Round #545 (Div. 1) 简要题解

    这里没有翻译 Codeforces Round #545 (Div. 1) T1 对于每行每列分别离散化,求出大于这个位置的数字的个数即可. # include <bits/stdc++.h&g ...

  2. Codeforces Round #545 (Div. 2) D 贪心 + kmp

    https://codeforces.com/contest/1138/problem/D 题意 两个01串s和t,s中字符能相互交换,问最多能得到多少个(可交叉)的t 题解 即将s中的01塞进t中, ...

  3. Codeforces Round #545 (Div. 1) Solution

    人生第一场Div. 1 结果因为想D想太久不晓得Floyd判环法.C不会拆点.E想了个奇奇怪怪的set+堆+一堆乱七八糟的标记的贼难写的做法滚粗了qwq靠手速上分qwqqq A. Skyscraper ...

  4. Codeforces Round #545 (Div. 2)(D. Camp Schedule)

    题目链接:http://codeforces.com/contest/1138/problem/D 题目大意:给你两个字符串s1和s2(只包含0和1),对于s1中,你可以调换任意两个字符的位置.问你最 ...

  5. Codeforces Round #545 (Div. 2)(B. Circus)

    题目链接:http://codeforces.com/contest/1138/problem/B 题目大意:贼绕口的题目,就是给你两个字符串s1,s2,然后每一个人代表一列,第一列代表技能一每个人是 ...

  6. Codeforces Round #545 (Div. 2) E 强连通块 + dag上求最大路径 + 将状态看成点建图

    https://codeforces.com/contest/1138/problem/E 题意 有n个城市(1e5),有m条单向边(1e5),每一周有d天(50),对于每个城市假如在某一天为1表示这 ...

  7. Codeforces Round #545 (Div. 2) 交互 + 推公式

    https://codeforces.com/contest/1138/problem/F 题意 有一条长为t的链,一个长为c的环,定义终点为链和环相连环上的第一个点,现在有10个人在起点,你每次可以 ...

  8. Codeforces Round #545 (Div. 2)-Camp Schedule

    题目要求,给定一个s序列,一个p序列,问能不能对s做相应的调整,使得s序列中,有尽可能多的p子串(可以重复) 最开始我拿到这个题目,也是一点头绪都没有,如何做调整呢? 首先考虑如何会有尽可能多的子串, ...

  9. CodeForces Round #545 Div.2

    A. Sushi for Two 代码: #include <bits/stdc++.h> using namespace std; ; ; int a[maxn], vis[maxn]; ...

随机推荐

  1. Achievements

    看了Suma,觉得懂了85%以上. 两个月可以学这么多.方法是不懂的就学就行了. 最近学了:字符串,网络流,线段树,斯特林反演,多项式与生成函数,一些数论等.

  2. Floyd最短路(带路径输出)

    摘要(以下内容来自百度) Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似. 该算法名称以创始人之一.1978年图灵奖获得者. ...

  3. linux如何查看所有的用户(user)、用户组(group)、密码(password/passwd)

    linux如何查看所有的用户和组信息_百度经验https://jingyan.baidu.com/article/a681b0de159b093b184346a7.html linux添加用户.用户组 ...

  4. symfony框架

    Symfony是一个完整的框架结构,设计用来帮助并加速网络应用的开发. 1)安装 symfony的安装还是比较简单的,而且提供了多种安装的方式,详情可以看官网手册 问题: cURL error 60: ...

  5. PHP之CLI模式

    转载: http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html 所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都 ...

  6. javascript中的 return false和return true

    关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ...

  7. Azure系列2.1.8 —— BlockEntry

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  8. ArrayList的扩容机制

    一.ArrayList的扩容机制 1.扩容的计算方式是向右位移,即:newSize = this.size + (this.size>>1).向右位移,只有在当前值为偶数时,才是除以2:奇 ...

  9. springmvc中model可以封装的数据类型

    查看源码可以知道,model中可以存放的数据类型 Model addAttribute(String var1, @Nullable Object var2); Model addAttribute( ...

  10. postman+jenkins+newman自动化api接口测试

    一.下载nodejs https://nodejs.org/zh-cn/download/ 二.linux下解压 xz -d node-v8.11.3-linux-x64.tar.xz tar xf ...