为了物尽其用,Next求出最多有哪部分能重复使用,然后重复使用就行了……

const int maxn = 5e5 + 5;
char s[maxn], t[maxn];
int cnts0, cnts1, cntt0, cntt1;
int Next[maxn]; int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> (s + 1) >> (t + 1);
int lens = strlen(s + 1), lent = strlen(t + 1); for (int i = 1; i <= lens; i++) {
if (s[i] == '1') cnts1++;
else cnts0++;
} Next[1] = 0;
for (int i = 2, j = 0; i <= lent; i++) {
while (j > 0 && t[i] != t[j + 1]) j = Next[j];
if (t[i] == t[j + 1]) j++;
Next[i] = j;
} for (int i = Next[lent] + 1; i <= lent; i++) {
if (t[i] == '1') cntt1++;
else cntt0++;
} for (int i = 1; i <= lent; i++) {
if (t[i] == '1' && cnts1) cout << 1, cnts1--;
else if (t[i] == '0' && cnts0) cout << 0, cnts0--;
}
int k = min(cntt0 ? cnts0 / cntt0 : inf, cntt1 ? cnts1 / cntt1 : inf);
while (k--) {
for (int i = Next[lent] + 1; i <= lent; i++) {
if (t[i] == '1') cout << 1, cnts1--;
else cout << 0, cnts0--;
}
}
while (cnts1--) cout << 1;
while (cnts0--) cout << 0; return 0;
}

Codeforces 1137B(kmp next数组构造)的更多相关文章

  1. Many Equal Substrings CodeForces - 1029A (kmp next数组应用)

    题目大意 题目看样例也能猜到就是输出最短的循环串. 吐槽 明明是div3第一题为啥子还会用到kmp的知识? 解法 这个题仔细看发现是求最长可去除的后缀,也就是说去除跟下一个相同的字符串还能连接起来.这 ...

  2. HDU 1358 Period(KMP next数组运用)

    Period Problem Description For each prefix of a given string S with N characters (each character has ...

  3. Common Divisors CodeForces - 182D || kmp最小循环节

    Common Divisors CodeForces - 182D 思路:用kmp求next数组的方法求出两个字符串的最小循环节长度(http://blog.csdn.net/acraz/articl ...

  4. HDU 3333 | Codeforces 703D 树状数组、离散化

    HDU 3333:http://acm.hdu.edu.cn/showproblem.php?pid=3333 这两个题是类似的,都是离线处理查询,对每次查询的区间的右端点进行排序.这里我们需要离散化 ...

  5. [leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例

    LeetCode 跟树结构相关的题目的测试用例中大多是通过String数组来构造树.例如{2,#,3,#,4,#,5,#,6},可以构造出如下的树(将树结构逆时针选择90度显示): 6         ...

  6. POJ2406 Power Strings(KMP,后缀数组)

    这题可以用后缀数组,KMP方法做 后缀数组做法开始想不出来,看的题解,方法是枚举串长len的约数k,看lcp(suffix(0), suffix(k))的长度是否为n- k ,若为真则len / k即 ...

  7. POJ 2406 KMP/后缀数组

    题目链接:http://poj.org/problem?id=2406 题意:给定一个字符串,求由一个子串循环n次后可得到原串,输出n[即输出字符串的最大循环次数] 思路一:KMP求最小循环机,然后就 ...

  8. PHP利用数组构造JSON

    问题起因 以往都是直接用构造数组的形式构造json 例子: $arr = array("A"=>"1","B"=>"2 ...

  9. kmp next数组的理解(挺好的一篇文章 ,原来kmp最初的next是这样的啊,很好理解)

    KMP算法的next[]数组通俗解释   我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我 ...

随机推荐

  1. 人生苦短之Python类的一二三

    在Python中,类也是以class开头定义的.我们定义一个动物类,它有名字和年龄,在java变量有实例变量和局部变量,方法内的变量是局部变量,类里面的变量是实例变量.那么在Python中的类及其属性 ...

  2. Java 出现“Illegal key size”错误的解决方案

    用AES加密时出现"java.security.InvalidKeyException: Illegal key size"异常. 如果密钥大于128, 会抛出上述异常.因为密钥长 ...

  3. 灵活使用rewrite

    Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外 ...

  4. 分布式session之redis解决方案实现

    一.首先Session Session 是客户端与服务器通讯会话技术, 比如浏览器登陆.记录整个浏览会话信息.session存放在服务器,关闭浏览器不会失效. Session实现原理 客户对向服务器端 ...

  5. JavaScript中浮点数的保留小数位数的问题

    方法一 简介:如题! 繁琐版... 代码如下: var significantFigure= function(value,figure){                 var arr=(valu ...

  6. Linux:普通用户不能执行ifconfig命令问题

    有客户现场服务器禁用了root帐号,在普通帐号下,执行ifconfig,提示bash:ifconfig command not found: 导致业务系统无法用普通帐号获取ifcnofig的MAC地址 ...

  7. linux应用之samba服务的安装及配置(centos)

    一.安装方式: 本文通过yum来重新进行Samba服务器的安装与配置. 二.Samba的简介: Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Me ...

  8. 配置ADT

    配置ADT环境变量打开PATH,添加变量值:F:\android-sdk-windows\tools

  9. 【Codeforces】879D. Teams Formation 思维+模拟

    题意 给定$n$个数,重复拼接$m$次,相邻$k$个重复的可消除,问最后序列中有多少个数 首先可以发现当$k>=n$时,如果要使$n$个数可以被消除,那么$n$个数必须一样,否则$n$个数不能被 ...

  10. codeforces 701A A. Cards(水题)

    题目链接: A. Cards 题意: 问两个数的和相同,怎么组合; AC代码: #include <iostream> #include <cstdio> #include & ...