首页 > 其他分享 >B. Camp Schedule

B. Camp Schedule

时间:2024-07-18 11:56:18浏览次数:7  
标签:匹配 Schedule int s2 s1 Camp long size

原题链接

题解

先想算法,再验证

假设最优排列,使得 \(t\) 在 s 的第 i 个位置第一次匹配,那么 i 之前的数都浪费掉了,我们可以将其收起来放到后面用

所以,最优排列一定可以是从第一个位置开始匹配

为了最大化利用数字,每右移若干个位置就要有一次匹配,而对于每一次成功匹配,最少要右移 kmp 次才能再次匹配

所以第一次排列后,每次往后面添加最长相同前后缀的剩余部分

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

int len[500005]={0};

void solve()
{
    string s1,s2;
    cin>>s1>>s2;
    int len1=s1.size(),len2=s2.size();
    s1=' '+s1;
    s2=' '+s2;

    int it=0;
    for(int i=2;i<=len2;i++)
    {
        while(it&&s2[it+1]!=s2[i]) it=len[it];
        if(it+1<i&&s2[it+1]==s2[i]) len[i]=++it;
    }

    //puts("1");
    int cnt[2]={0};
    for(int i=1;i<=len1;i++) cnt[s1[i]-'0']++;

    for(int i=1;i<=len1;i++)
    {
        //printf("i:%d\n",i);
        if(i<=len2)
        {
            int c=s2[i]-'0';
            if(cnt[c])
            {
                cnt[c]--;
                cout<<c;
            }
            else
            {
                c=1-c;
                cnt[c]--;
                cout<<c;
            }
        }
        else
        {
            int id=(i-len2-1)%(len2-len[len2])+1+len[len2];
            int c=s2[id]-'0';
            if(cnt[c])
            {
                cnt[c]--;
                cout<<c;
            }
            else
            {
                c=1-c;
                cnt[c]--;
                cout<<c;
            }
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}


标签:匹配,Schedule,int,s2,s1,Camp,long,size
From: https://www.cnblogs.com/pure4knowledge/p/18309227

相关文章

  • @Schedule定时任务+分布式环境一些踩过的坑~【送源码】
    定时任务的实现方式多种多样,框架也是层出不穷。“本文所谈及的是SpringBoot本身所带有的@EnableScheduling 、 @Scheduled实现定时任务的方式。以及采用这种方式,在分布式调度中可能会出现的问题,又针对为什么会发生这种问题?又该如何解决,做出了一些叙述。为了适合......
  • 祝贺小鹏汽车Gallardot同学成为Apache DolphinScheduler Committer!
    社区迎来新committer!这次是来自小鹏汽车的Gallardot,看看他与ApacheDolphinScheduler社区的故事吧。对话社区Q1:您为ApacheDolphinScheduler社区提交过哪些贡献(包括代码和非代码)?请具体描述您的贡献。A:我主要专注于提升ApacheDolphinScheduler在云原生Kubernetes支持和系......
  • flask 定时任务(APScheduler)使用current_app app_context()上下文
    前言:描述:flask定时任务调用的方法中使用了current_app.logger.info()记录日志报错 报错代码raiseRuntimeError(unbound_message)fromNoneRuntimeError:Workingoutsideofapplicationcontext.Thistypicallymeansthatyouattemptedtousefunctionality......
  • 讲师招募 | Apache DolphinScheduler Meetup诚邀您共建开源!
    随着ApacheDolphinScheduler在全球范围内的快速发展,我们的用户群体和社区活动也在不断扩大。为了进一步丰富我们的社区内容,分享更多有价值的知识和经验,我们诚挚地邀请您加入我们,成为ApacheDolphinScheduler社区的分享嘉宾。Meetup是什么?ApacheDolphinScheduler是一个云原......
  • Quartz动态添加scheduler
    引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId><version>2.2.9.RELEASE</version></dependency>代码实现packagenet.evecom.iaplatfor......
  • CSCI-GA.2250-001 Scheduler
    ProgrammingAssignment#2(Lab2):Scheduler/DispatcherClassCSCI-GA.2250-001Summ2024In  this  lab  we  explore  the  implementation  and  effects  of different  scheduling policies  discussed  in  class  on  a  set......
  • Apache DolphinScheduler如何开启开机自启动功能?
    转载自东华果汁哥ApacheDolphinScheduler是一个分布式、去中心化的大数据工作流调度系统,支持大数据任务调度。若要设置DolphinScheduler开机自启动,通常需要将其配置为系统服务。以下是一般步骤,具体操作可能因操作系统的不同而有所差异:Linux系统创建系统服务文件:编辑一......
  • Apache DolphinScheduler 与 AWS 的 EMR/Redshift 集成实践分享
    引言这篇文章将给大家讲解关于DolphinScheduler与AWS的EMR和Redshift的集成实践,通过本文希望大家能更深入地了解AWS智能湖仓架构,以及DolphinScheduler在实际应用中的重要性。AWS智能湖仓架构首先,我们来看一下AWS经典的智能湖仓架构图。这张图展示了以S3为核心的数据湖,围绕数......
  • Apache DolphinScheduler社区又一PMC获推选通过!
    PROFILE姓名:程鑫公司:阿里云职位:开发工程师GithubID:rickchengx从事领域:大数据调度系统开发兴趣爱好:健身推举理由他于2022年8月2日开始了他的DolphinScheduler之旅,在社区工作了将近两年,并于2023年5月12日成为Committer。成为Committer后的一年里,他继续保持高涨的热情......
  • Dolphinscheduler调度Kettle
    1、Dolphinscheduler-worker节点安装Kettle安装目录/opt/soft/data-integration2、配置资源仓库,将资源仓库配置文件 repositories.xml文件拷贝到安装目录仓库名称:mysql-repository仓库访问用户:guest仓库访问密码:guest3、创建Kettle任务,并保存到资源仓库任务创建略。任务......