CodeForces - 1138D Camp Schedule - ( kmp + 构造 )

【迁移学习综述】 迁移学习的目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

给你文本串 s ,模式串 t ,要求给 s 重新排序,使排序后的文本串出现尽可能多的模式串 t 。输出排序后的 s 。
( 字符串为 01 串 )

思路

按照 kmp 匹配的模式来构造,尽可能满足 s [ i ] = t [ j ] ,若是满足不了啦,那就将剩下的位置剩下的数随便匹配。

代码
// Problem: Oulipo
// Contest: Virtual Judge - POJ
// URL: https://vjudge.net/problem/POJ-3461
// Memory Limit: 65 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,Next[maxn],cnt[2];
bool vis[maxn];
char s1[maxn],s2[maxn];

void getnext(char *s,int len)
{
	int k=-1,j=0;
	Next[0]=-1;
	while(j<len)
	{
		if(k==-1||s[j]==s[k])
		{
			k++;
			j++;
			Next[j]=k;
		}
		else k=Next[k];
	}
}
void kmp(char *s1,char *s2,int l1,int l2)
{
	int i=0,j=0,sum=0;
	for(int i=0;i<l1;i++)
	{
		if(s1[i]=='0') cnt[0]++;
		else cnt[1]++;
	}
	while(i<l1)
	{
		if(j==-1||cnt[s2[j]-'0'])
		{
			if(j!=-1&&!vis[i]) s1[i]=s2[j],cnt[s1[i]-'0']--,vis[i]=1;
			else if(j==-1)
			{
				if(cnt[1])
					for(int k=i;k<l1;k++) s1[k]='1'; 
				else
					for(int k=i;k<l1;k++) s1[k]='0'; 
				break;
			}
			i++;
			j++;
		}
		else j=Next[j];
		if(j==l2)
			j=Next[j];
	}
	printf("%s",s1);
}

int main() 
{
	// ios::sync_with_stdio(false);
	// cin.tie(0);cout.tie(0);
	scanf("%s",s1);
	scanf("%s",s2);
	int l1=strlen(s1);
	int l2=strlen(s2);
	getnext(s2,l2);
	kmp(s1,s2,l1,l2);
    return 0;
} 
让 ABAP 再次优雅:全面认知 ABAP Development Tools for SAP HANA(ADT)与可运行示例 本文介绍了ABAP开发工具ADT(ABAP Development Tools for SAP HANA)的核心概念与价值。ADT是基于Eclipse的现代化ABAP集成开发环境,支持ABAP Platform、S/4HANA等后端开发,提供代码编辑、CDS数据建模、质量检查等全流程功能,相比传统SAP GUI具有显著优势。文章详细阐述了ADT与SAP HANA的关系、关键能力模块(如代码重构、CDS建模、质量管控等),并通过一个制造企业案例说明其实际应用场景。最后提供了ADT安装指南和一个完整的ABAP 阅读详情

相关推荐

calibration的“前世今生”——从simulink开发到CANape的XCP标定

整体思路 备注: elf可简单的看作为hex和map的集合,其中包括可执行的程序、变量及其对应的地址(simulink生成代码是也可以勾选生成ASAP2的a2l文件,有变量但变量对应的地址为空,只有编译后才分配地址) 定义变量是观测值还是标定值需要在simulink中的数据字典定义变量存储类型,详见simulink系列。 1. 前期准备A2L的制作 安装完成CanApe软件 , 插上CanApe硬件( 如:vector 1640A)。打开A2L编辑软件 ASAP2 Editor(注意不是ASAP2 Vi

IHTY_NUI的博客 1万+

CodeForces - 1200E (KMP)

https://vjudge.net/contest/350702#problem/D 题意: 给定一行字符串,将其中相邻的有共同前后缀的子串进行合并,求和合并后最短的字符串 思路: KMP 设第一个字符串为a,第二个字符串为b,如果a+b能够进行压缩,实际求b+a的最长的border(最长的公共前后缀长度),利用KMP可以做到这一点 每次把公共部分的前后缀长度求出后,将上一次的结果+除...

小糊涂的博客 789

86 arduino 电机yl_(八)arduino入门:直流电机控制

一、本节介绍在本实验中,您将学习如何使用驱动芯片L293D和SunFounder Uno板控制小型直流(DC)电机的方向和速度。为了使初学者更容易,我们将让直流电机左右旋转,自动加速和减速。二、材料准备1 *小型直流电机1 * L293D1 * Arduino Uno板1 *面包板1 * USB数据线杜邦线三、原理讲解L293D这是一个非常实用的芯片,可以独立控制两台直流电机。在这个实验中,只有一...

weixin_29163857的博客 3567

CodeForces 126B Password (KMP)

题意: 给定字符串S,找到既是S的前缀又是S的后缀同时又在S中间出现过的最长子串T。思路:一眼KMP!  首先要找到一个既是S前缀又是S后缀的最长子串,用KMP的next数组即可求出,重点就是怎么找位于中间位置的子串T 。如果在中间的子串 T 以 S[i]为结尾,那么 T 就是 S[1..i]的公共前后缀。既然是公共前后缀,就可以再次使用 KMP。  又因为中间的子串 T 的结尾只可能在 [2...n-1]之间,所以子串最后的长度就不会超过 max(next[2..n-1])。我们把这个最大值记作nemax

weixin_62802134的博客 839

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3774

Dify+MCP Server打造禅道AI智能助手

Dify AI与MCP Server结合打造的禅道AI智能助手,实现了项目管理智能化升级。该方案通过大语言模型和自动化工作流,提供四大核心功能:1)自动化报表生成,支持多维度数据统计与可视化;2)禅道系统管理操作,简化产品/项目/任务管理流程;3)基于知识库的智能问答系统;4)数据库灵活查询与可视化输出。系统采用分层架构,通过MCP协议实现AI与数据源解耦,解决了传统禅道在数据孤岛、工具碎片化等问题。实际应用验证了其在用户管理、任务创建、Bug处理等场景的高效性,显著提升了项目管理效率。

oNew_Lifeo的博客 1708

CodeForces - 25E Test【KMP】

题目链接:https://codeforces.com/contest/25/problem/E #include <iostream> #include <cstring> #include <algorithm> using namespace std; static const int MAXN=3e5+10; char s[3][MAXN]; int ans,l[3],seq[3],nxt[MAXN]; void get_next(int k) { for

inv0ker的博客 309

【STM32/GD32】Keil uVision生成bin文件:从编译选项到Bootloader升级实战

本文详细讲解了如何在Keil uVision中配置STM32/GD32工程,使其在编译后自动生成Bootloader升级所需的bin文件。通过解析fromelf工具的使用、构建后命令的配置以及内存布局规划,深入阐述了bin文件在固件升级中的核心作用,并提供了串口Bootloader的实战框架与常见问题解决方案。

weixin_29190169的博客 391

【代码超详解】Codeforces 432D. Prefixes and Suffixes(KMP 的 next 数组的应用,46 ms)

传送门 一、题目描述 D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You have a string s = s1s2…s|s|, where |s| is the lengt...

COFACTOR 364

如何用Lmcache+vllm优化KVcache存储?CPU与SSD性能实测对比

本文通过实测对比,详细介绍了如何利用Lmcache+vLLM将大模型推理中的KV Cache卸载至CPU内存或SSD硬盘,以解决长上下文场景下的GPU显存瓶颈。测试数据显示,CPU卸载方案在首字延迟(TTFT)上显著优于SSD方案,但SSD方案在存储成本上更具优势。文章提供了完整的配置指南、性能数据分析和生产环境选型建议。

fire9的博客 985

基于FPGA的NCO实现

NCO实现原理 数字振荡器 输出频率,相位可控的正弦波,精度高,稳定性高,替代VCO,用起来方便也易于操作。 实现方式: 直接调用fpga里面的ip核,以下是IP核的配置方法: 接下来选择输出为单路还是多路: 最后生成ip核时需要注意的事项: 生成时会需要漫长的等待,因此需要如下操作: 最后成功生成: 实现代码: input clk ; input rst_n ; output [13:0]fsin_i ; wire [13:.

m0_46644103的博客 4581

CodeForces - 1200E Compress Words (KMP)

题目链接:点击这里 题目大意: 给定 nnn 个字符串,求 nnn 个字符串按序拼接好后的字符串,拼接规则为找到最大的 i(i≥0)i(i\ge 0)i(i≥0) ,满足第一个单词的长度为ii的后缀和第二个单词长度为 iii 的前缀相等,然后把第二个单词第ii位以后的部分接到第一个单词后面。输出最后那个单词 题目分析: 最长公共前后缀不难想到 KMPKMPKMP ,我们发现如果想合并 aaa 串和 bbb 串,只需要构造一个 b,ab,ab,a 的串即可,对这个串求一下 nextnextnext 数组,然后

羊驼的博客 599

74、光谱成像在电子内窥镜及色彩理论中的应用

本文探讨了光谱成像在电子内窥镜中的应用及其与色彩理论的深度融合。通过分析FICE技术、色彩再现模型及胃黏膜光谱测量,展示了光谱信息在提升医学诊断准确性方面的潜力。同时,系统阐述了颜色的物理属性、标准表示方法、同色异谱现象、颜色测量技术(密度法与比色法)以及CIELAB等均匀颜色空间的构建原理。结合流程图与对比表格,梳理了从光信号获取到颜色处理的完整路径,并展望了人工智能与新型视觉模型在未来医疗成像与色彩科学中的发展方向。

g2h3i4j5的博客 152

CodeForces - 1138D Camp Schedule(KMP,构造)

???? ???? ???? 因为计算子串的时候是可覆盖的,如ababab中有两个abab,所以构造的时候应该根据nxt数组的性质来构造,每次贪心的跳到nxt[ j ] int sum[2]; string s,t; int nxt[MAXN]; void get_nxt(const string & x) { nxt[0]=-1; int i=0,j=-1; int n=sz(x)...

欢迎光临 我的心 208

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Camp Schedule CodeForces - 1138D (KMP按模式串构造)

一年一度紧张又刺激的暑假集训又要来啦!为此,老王开始制定实验室的暑假训练时间表。 经过苦思冥想,老王终于安排出了一个时间表s。他把时间表表示为二进制字符串,训练为”1“,休息为”0“。 后来,老王翻知乎突然发现了一个”超有效哒时间表“t,知乎上说,这个时间表可以使同学收获最大。 老王决定修改自己的时间表,使暑假训练时间表中”超有效哒时间表“出现次数最多,并且休息和训练的天数不应该...

博客 423

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

1138.D Camp Schedule

题目:http://codeforces.com/contest/1138/problem/D /* 1.这只是一道KMP算法的题。。。。字符串匹配的问题。 2.KMP算法 : 重点在next[],next[i]记录了当i处的值不匹配时,跳转到 next[i]的位置。 eg: a a a b b a a (空格忽略) next -1 0 1 -1...

qq_39003419的博客 426

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Codeforces Contest 1138 problem D Camp Schedule —— KMP求一个字符串的最长相同前后缀

The new camp by widely-known over the country Spring Programming Camp is going to start soon. Hence, all the team of friendly curators and teachers started composing the camp’s schedule. After some co...

天翼之城的博客 437

【KMP】改变父串元素位置,最多组出多少子串 Codeforces Round #545 (Div. 2) D. Camp Schedule

Codeforces Round #545 (Div. 2) D. Camp Schedule http://codeforces.com/contest/1138/problem/D 给你父串和子串(都用01表示),问你改变父串的元素位置,使得子串在父串中出现次数最多,问你怎么做 上kmp的nxt数组得到子串前后缀相同最大长度 然后预处理出子串和父串0和1的个数 然后分类讨论 #...

qq_41037114的博客 186

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

https://codeforces.com/contest/1138/problem/D 看了半天,才发现要用kmp,不过kmp一个多月前学会了就没用过,都不会写了,又复习了一遍。 思路:利用kmp的next数组,可以知道按最长前缀后缀一样的长度来输出,最后再补上剩下的,没什么难的,就是南想到kmp #include &lt;bits/stdc++.h&gt; #define fi fi...

Endeavor_G的博客 339

D. Camp Schedule

题目链接:http://codeforces.com/problemset/problem/1138/D 题意:输入一个字符串S,和字符串t,(s,t都由‘0’,‘1’组成),s串中的‘0’,‘1’个数不变,要使s中包含最多的子串t,求s串; 可将s串重组,只要0,1个数不变就行,求t的前缀,看是否有相同,即kmp;来构造s串 #include <iostream> #incl...

cheerful_man的博客 414

Codeforces Round #545 (Div. 2) D. Camp Schedule(KMP思想+贪心)

题目链接:http://codeforces.com/contest/1138/problem/D 题目大意 背景不读,只把编程要求领出来, 就是给定两个串, 把第一个串重新组合使得第二个串在其中出现的次数最多。 题目分析 明显的kmp题目, 我们利用下nxt数组的求法, 这样我们可以找到一个长度, 这个长度代表着原串前后缀一样的最大长度且长度小于串长度, 那么我们不难发现,可以得到...

满月照亮的路 280

Codeforces Round #545 (Div. 2) D. Camp Schedule //kmp模板

http://codeforces.com/contest/1138/problem/D 重组01串s,使得包含尽量多的子串t 所以要求出字符串的前缀后后缀相同的最大长度。直接kmp #include<bits/stdc++.h> using namespace std; #define mod 100000007 #define LL long long char...

Rshs 250

Codeforces Round #545 (Div. 2) D. Camp Schedule(A,B,C,D)

题目链接:http://codeforces.com/contest/1138/problem 第一题(暴力): #include&lt;bits/stdc++.h&gt; using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)&lt;(z);(x)++) #define ...

满月照亮的路 233

CodeForces - 1137B (kmp)

题目链接:https://vjudge.net/contest/350917#problem/B 思路: 因为要包含最多的字符串,所以在匹配到s2最后一个位置时利用kmp的pre数组找到前面的最大匹配位置就好了。 代码: #include <bits/stdc++.h> using namespace std; const int N = 5e5+10; char...

积少成多,水滴石穿 343

codeforces 526D(kmp,数学)

description One day Om Nom found a thread with n beads of different colors. He decided to cut the first several beads from this thread to make a bead necklace and present it to his girlfriend Om Nell...

a1035719430的博客 451

codeforces 631 D. Messenger(kmp变形)

https://codeforces.com/contest/631/problem/D 题意:给出n,m两个串,给出形式为字母出现次数+字母,问m在n中出现的次数 思路:首先把两个字符串相邻相同字母的字符串直接合并,当m<=2时直接暴力求答案,当m>2时,如果m要出现在n中,那么m除了开头和结尾两个字母出现次数,中间字母及次数都应该完全相同,这就变成一了个kmp问题,只不过匹配变成了...

- 回忆゛ 254
上一篇: CodeForces - 625B War of the Corporations( kmp )
下一篇: CodeForces - 126B Password( kmp )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值