CF 314B: Sereja and Periods

智能工厂方案落地三张表:技术栈、阶段图、RACI责任矩阵 智能工厂建设方案的本质是可执行的工程指令,而非概念性汇报材料。其核心在于将抽象技术术语(如数字孪生、AI质检)转化为具体协议、型号、接口字段等可验证要素。技术栈清单确保软硬件选型精准对齐产线实际(如OPC UA版本与PLC固件兼容性),实施阶段图以交付物和准入条件倒逼可行性,RACI责任矩阵则厘清跨部门协作边界,避免推诿。这三类结构化工具共同构成方案从纸面走向产线的关键支点,广泛应用于汽车零部件、电子制造等离散制造业的数字化落地场景。 阅读详情

题目链接:http://codeforces.com/contest/314/problem/B


题意:

对于字符串s和正整数n,规定[s,n]=s+s+……+s;

即  ["abc", 2] ="abcabc"

现给出w = [a, b] , q = [c, d]

求最大的p,使得 [q, p]是w的子序列

如无合法p,则输出0



由于CF可以看代码的缘故,一般不写CF题解。

但是觉得这道题确实比较巧妙,于是记录一下。


做这道题时参考了两位神犇的代码:

http://codeforces.com/contest/314/submission/3832474

http://codeforces.com/contest/314/submission/3845338

谢谢!


算法:


解法一:

预处理若从c串的第i位开始匹配,

那么在a串中最多可以循环匹配c串的多少位。


解法二:

借用倍增的思想。

go[dep][get_id(i,j)]表示从字符串a的第i位,字符串c的第j位开始,匹配字符串c的(2^dep)位后

.first表示两个字符串匹配后到达的位置

.second表示“消耗”了多少个a串

注意,很显然在存在合法解的情况下

消耗a串的数量和c串的数量都不会超过int,

但是在不存在合法解的情况下,

.second初始化为INF,经过多次倍增可能会超过int


代码如下:


解法一:

#include<cstdio>
#include<iostream>
#include<sstream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<climits>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<set>
#include<map>
#define INF 0x3f3f3f3f
#define eps 1e-8
using namespace std;

const int MAXN=110;
char a[MAXN],c[MAXN];
int nxt[2][MAXN];

int main() {
    int b,d;
    scanf("%d%d",&b,&d);
    scanf("%s%s",a,c);
    int len1=strlen(a);
    int len2=strlen(c);
    for(int j=0; j<len2; j++) {
        int cur=j;
        nxt[0][j]=0;
        for(int i=0; i<len1; i++) {
            if(c[cur]==a[i]) {
                cur++;
                if(cur==len2) {
                    nxt[0][j]++;
                    cur=0;
                }
            }
        }
        nxt[1][j]=cur;
    }
    long long ans=0LL;
    int cur=0;
    for(int i=0; i<b; i++) {
        ans+=nxt[0][cur];
        cur=nxt[1][cur];
    }
    printf("%I64d\n",ans/d);
    return 0;
}


解法二:

#include<cstdio>
#include<iostream>
#include<sstream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<climits>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<set>
#include<map>
#define INF 0x3f3f3f3f
#define eps 1e-8
using namespace std;

const int MAXN=110;
const int MAXM=30;
char a[MAXN],c[MAXN];
int len1,len2;
pair<int,long long> go[MAXM][MAXN*MAXN];

int get_id(int i, int j) {
    return i*len2+j;
}

long long solve(int dis) {
    int cur=get_id(0,0);
    long long cot=0;
    for (int i=0; i<MAXM; i++) {
        if(dis>>i&1) {
            cot+=go[i][cur].second;
            cur=go[i][cur].first;
        }
    }
    return cot;
}

int main() {
    int b,d;
    scanf("%d%d",&b,&d);
    scanf("%s%s",a,c);
    len1=strlen(a);
    len2=strlen(c);
    for(int i=0; i<len1; i++) {
        for(int j=0; j<len2; j++) {
            int id=get_id(i,j);
            go[0][id]=make_pair(id,INF);
            for(int k=0; k<len1; k++) {
                if(a[(i+k)%len1]==c[j]) {
                    go[0][id]=make_pair((get_id((i+k+1)%len1,(j+1)%len2)),(i==0)||((i+k)/len1));
                    break;
                }
            }
        }
    }
    for(int i=1; i<MAXM; i++) {
        for(int j=0; j<len1*len2; j++) {
            int nxt=go[i-1][j].first;
            go[i][j]=make_pair(go[i-1][nxt].first, go[i-1][j].second+go[i-1][nxt].second);
        }
    }
    int l=0;
    int r=INF;
    while(l<r) {
        int mid=(l+r+1)>>1;
        if(solve(mid)<=b) {
            l=mid;
        } else {
            r=mid-1;
        }
    }
    printf("%d\n",l/(len2*d));
    return 0;
}

PyCharm安装PyQt5及工具(Qt Designer、PyUIC、PyRcc)详细教程来了 Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具的使用方法。 阅读详情

相关推荐

老司机避坑指南:UC3842自举驱动电路发热严重?这样选C39/C37电容值最稳

本文针对UC3842自举驱动电路发热严重的问题,深入剖析了驱动波形边沿速度与损耗的矛盾根源。通过实测数据与热成像分析,重点阐述了关键电容C39/C37的选型策略,提供了从经验公式到量化计算的优化方法,帮助工程师在发热与效率间找到最佳平衡点,并探讨了分立方案与专用驱动IC的适用场景。

lambda的博客 747

CodeForces 314 B.Sereja and Periods 思维+简单dp【转】

Let's introduce the designation , where x is a string, n is a positive integer and operation " + " is the string concatenation operation. For example, [abc, 2] = abcabc. We'll say that string scan be obtained from string t, if we can remove some characters

HJY 418

Power Automate Desktop实战:一键自动登录Chrome网站

本文详细介绍了如何使用Power Automate Desktop实现Chrome网站的一键自动登录,提升工作效率。从环境准备、基础配置到高级技巧与异常处理,全面解析自动化登录流程的构建与优化,特别适合需要频繁登录多个系统的用户。

weixin_29231725的博客 467

[CF314B](Sereja and Periods)

题意 定义[x,n]为n个字符串x首尾相接 给你两个字符串w=[a,b],q=[c,d]; 求一个数ans 使得[ans,q]为w的子串,并要求最大化ans solution 暴力求解 就是aaaaaaaaa(b个a)中找有几个c 关键两点: 1.每个a是重复出现的 2.aa中可能还会出现关键字符(继续匹配),所以每个a串的匹配不是一样的,要么找循环节,要么像我一样仍然枚举b但加速匹配过程...

weixin_30426065的博客 200

java 对接工行聚富通H5聚合支付接口

java 对接工行聚富通H5聚合支付接口

lgl的博客 859

振动分析中相位的确定

更是定位不平衡量角度的关键。是确定振动信号与转子旋转位置之间时间关系的核心步骤,而。以内,以确保校正配重安装角度的有效性。在实际动平衡中,相位角的误差需控制在。在振动分析和动平衡中,

轩辕霸天L 2735

Codeforceds 315D Sereja and Periods【思维+Dp】

D. Sereja and Periods time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Let's introduce the designation , wh

mengxiang000000 925

解决Docker拉取镜像报错:Get https://registry-1.docker.io/v2/: 报错

解决Docker拉取镜像报错: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection问题描述Get "https://registry-1.docker.io/v2/"是docker官方的镜像源,下载很慢的,一般会自己指定国内映射的加速镜像源。

qq_33650333的博客 4173

codeforces 314 (Div 1) 题解

文章目录前言A Sereja and Contestkey题意思路B Sereja and Periodskey题意思路代码C Sereja and Subsequenceskey题意思路D Sereja and Straight Lineskey题意思路E Sereja and Squareskey题意思路后记 前言 远古神题。既然被妖姬挑出来做了,而且做的并不是那么好,那就稍微总结一下。 这场...

xyyxyyx的博客 464

8台 × 8卡 910B NPU之顶尖大模型选型分析

本文对比了2026年主流大语言模型在昇腾910B NPU集群上的部署方案。重点评估了GLM5、MiniMax M2.5、Kimi K2.5、DeepSeek V3.2和Qwen 3.5旗舰版等候选模型,从部署需求(显存占用)、能力表现(基准测试、多模态支持)和NPU生态适配度三个维度进行分析。结果显示DeepSeek V3.2综合表现最优:支持BF16/W8A8/INT4量化,在4TB显存环境下可实现2000+ TPS,首token延迟<100ms,且具备官方NPU支持。备选方案Qwen 3.5旗舰版

FeelTouch Labs 758

SAP_SD模块信用管理-最早未清项判断逾期

在 SAP SD 模块的信用管理(Credit Management) 中,系统可以通过 最早未清项(Oldest Open Item) 来判断客户是否存在逾期,从而影响订单的信用检查结果。例如: 定义最大未清项目%为1%,未清天数为1天,即允许客户“逾期1天的未清应收帐款/该客户的应收帐款余额”最大比例为1%,若超过1%则将被信用冻结。的信用检查功能,用于判断客户是否有账龄过长的未清款项,并据此决定是否允许新的销售订单继续处理。然后在查看客户的信贷信息可以看到,最早的未清信息显示在系统中。

我小时候很黑的博客 863

循环节,CF 314B - Sereja and Periods

我们可以暴力找循环节,但是也可以类似于字符串匹配的方式构建nxt 数组 和 cnt 数组。这样对于 (a, b)而言,我们只需模拟a轮,每次O(1) 跳nxt,累加cnt。对于nxt 和 cnt,我们直接暴力构建即可,因为 a 和 b 的长度都很小。时间复杂度: O(b + |a| |c|)空间复杂度:O(|a| + |c|)cnt[i] 代表 从 c[i] 开始 匹配 一个a,匹配得到的 c 的数目。nxt[i] 代表 从 c[i] 开始 匹配 一个a,结束位置的下一个位置。

EQUINOX1的博客 551

Java Swing教程-16. Swing中的图形绘制

这篇教程介绍了Java Swing中的图形绘制功能,主要内容包括: Graphics类的基本使用 - 介绍了如何重写paintComponent方法实现自定义绘制,以及基本图形绘制方法(线条、矩形、椭圆、多边形等) 文本与图片绘制 - 讲解了文本绘制方法、字体设置和图片加载绘制技术 颜色与字体设置 - 包括预定义颜色、RGB自定义颜色、透明色设置以及字体样式控制 案例实现 - 提供了一个简单绘图程序的框架,支持鼠标绘制不同图形、选择工具和自定义颜色等功能 教程通过代码示例详细演示了各种绘图操作,适合Java

无 233

CodeForces 315D Sereja and Periods (思维DP)

#include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #define ll long long #define lrt int l,int r,int rt #define lson l,m...

满月照亮的路 253

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CodeForces 314B. Sereja and Periods 思维+简单dp

题目题意:给出不超过100长度的两个字符串a、c,以及两个正整数b、d(b,d<=1e7),求最大的q使得ab能找到子串(字符不一定相邻)(bd)qa^b能找到子串(字符不一定相邻) (b^d)^q这个题我的思考角度不大好,唉… 令dp[x]表示c串的第x字符开始匹配,匹配完一个字符串a后,能够匹配多少个整字符串c,并且nex[x]代表下次开始匹配的位置。状态选取的好…之前一直想的是匹配完一个字符

便纵有千种风情 1136

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

CodeForces 314B - Sereja and Periods 很有思维的DP

题意:                   对于一个字符串规定这样一种运算..字符串s与整数k..[s,k]=s+s+s+...k个s..如[abc,2]=abcabc...现在给出w=[a,b],q=[c,d]...问最大的p使得[q,p]为[a,b]的子串         题解:                   练习赛的时候我是找循环节...思路是可行的..但就是搞不对...参考了大

zzyzzy12 1608

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CodeForces 314 B.Sereja and Periods(dp)

Description定义记号[x,n]=x+x+...+x=∑i=1nx[x,n]=x+x+...+x=\sum\limits_{i=1}^nx,其中xx是一个字符串,nn是一个正整数,++表示字符串连接,例如[abc,2]=abcabc[abc,2]=abcabc,如果从字符串tt中删除若干字符后变成字符串ss,则称字符串ss可以从字符串tt中得到,给出两个字符串w=[a,b],q=[c,d]w

ZSQ 683

cf B. Jeff and Periods

http://codeforces.com/contest/352/problem/B 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 int a[100010]; 6 int n; 7 bool ...

weixin_30478757的博客 129

codeforce_314D Sereja and Periods (动态规划)

一道技巧性的DP题,只要知道思路了很容易。

风的记忆 432

codeforces--2014/1/13--A. Sereja and Dima

A. Sereja and Dima time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Sereja and Dima play a game. The rules of the game

随风的专栏 1507

ZOJ 3734: LIKE vs CANDLE

题目链接: http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5069 题目大意: 若干微博账户形成了一个转发树(即一个有根树)。 每个账户有自己的价值,每个账户也有自己的态度(赞或蜡烛)。 如果一个账户的态度是“赞”,它的价值就会被加到“赞”的一边,反之亦然。 你可以从“赞”的一边拿出X 的价值

frog的小池塘 2622

HDOJ 4582: DFS spanning tree

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4582 题目大意: 给出一个有向图。 这个图的前n-1条边构成这个图的一个以节点1为根节点的DFS树。 T-Simple环的定义是:至多有一条边不在这棵DFS树上的环。 问,至少在图上选中多少条边。才使得每个T-simple环都至少有一条边被选中。 算法: 需注意的是,题目

frog的小池塘 2496

CF 341C: Iahub and Permutations

题目链接: http://codeforces.com/contest/341/problem/C 题目大意: 给定一个含有N个位置的序列,某些位置上的数字已经确定,某些位置上的数字没有确定。 求这个序列可能产生多少种错排(a[i] != i)。 算法: DP的方法有很多种。 也可以容斥。

frog的小池塘 2322

POJ 3123 Ticket to Ride

题目链接: http://poj.org/problem?id=3123 题意: 在n个城市间要建立四条铁路线,给定每条线路的起点和终点。 如果某两个城市之间可以建造铁路,那么建造这条铁路将有一定的花费。 求建立四条的最小总费用。 算法: 这道题还是斯坦纳树,以四条线路的起点和终点为关键点。 关键点中显然可能有重复的,不过不影响解题。 注意,最终要求的地图可能是由

frog的小池塘 2031

CF 7D: Palindrome Degree

题目链接:http://codeforces.com/contest/7/problem/D 题意: “等级”的定义是, 若一个长度为len的前缀是回文串, 且它的长度为floor(len/2)的前缀和后缀的“等级”为k, 则它的等级是k+1。 求一个字符串所有前缀的“等级”和。 算法: 我是用manacher算法求的回文串。 manacher算法的介绍很多,比如

frog的小池塘 2027

HDOJ 4689: Derangement

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4689 题目大意: 已知1 ~ N 的全排列。 给出第 i 位置上的数比i大还是小。 求可能的方法数。 算法: 这个DP有点儿绕。 由左向右依次处理,注意只能把已经处理的数填在已经处理的位置上。也就是处理到 i 时只能把数字1 ~ i 填到第1 ~ i 的位

frog的小池塘 1771
上一篇: NOVA再见
下一篇: POJ 2827:Auto-Calculation Machine
frog1902
博客等级 码龄14年 152粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值