Codeforces Round #519D. Mysterious Crime(模拟+递推)

使用 ArxivLoader 从 arXiv 加载学术文献并实现高效文档处理 arXiv是一个开放获取的学术存储平台,涵盖了物理、数学、计算机科学等多个领域的 200 万篇学术论文。这些文献中包含了如逻辑推理、机器学习等热门领域的最新研究进展。通过使用 ArxivLoader,我们可以轻松地搜索和加载 arXiv 上的学术文献,并将其转换为文本以供分析或应用于下游任务,例如问答系统、摘要生成或知识图谱构建。有时我们并不需要完整的文献内容,而是只需要摘要用于快速预览。可以使用 get_summaries_as_docs()# 获取文献摘要# 查看第一篇摘要。 阅读详情

题目链接

题意

有m个长度为n的串,问其中公共的子串一共有多少个。

题解

这题第一想法是用后缀数组lcp暴力计数,但这样不是爆内存就是爆时间……仔细观察可以发现,每个序列都是一个 1 ∼ n 1\sim n 1∼n的排列,我们可以以第一个串为样式,将第一个串中的所有子串枚举出来,然后依次判断,这里枚举需要一个技巧。

假设第一个串的 s [ i + 1 , i + 2 ] s[i+1,i+2] s[i+1,i+2]在每个串中都出现,那么如果 s [ i , i + 1 ] s[i,i+1] s[i,i+1]在每个串中都出现的话, s [ i , i + 2 ] s[i,i+2] s[i,i+2]也都出现过。(注意这是一个排列,所以在每个串中每个数仅出现一次)

同理 s [ i , i + 2 ] s[i,i+2] s[i,i+2]如果都出现的话,当 s [ i − 1 , i ] s[i-1,i] s[i−1,i]都出现的话,那么 s [ i − 1 , i + 2 ] s[i-1,i+2] s[i−1,i+2]也都出现。 以此类推,我们发现只要判断每个 s [ k , k + 1 ] s[k,k+1] s[k,k+1]是否出现就可以推出所有的情况。
从后往前做即可。
我们可以很容易的用一个 p o s [ i ] [ j ] pos[i][j] pos[i][j]记录在第 i i i个串中,数字 j j j出现的位置。现在我们从后往前枚举第一个串的每个数字,用¥len[i]记录串 [ i , n ] , [ i + 1 , n ] … [ n , n ] [i,n],[i+1,n]\dots [n,n] [i,n],[i+1,n]…[n,n]出现的次数,比如12345,我们先考虑数字5,这肯定在所有串中都出现,所以 l e n [ 5 ] = 1 len[5] = 1 len[5]=1,现在考虑数字4,如果45都出现,那么就相当于加上5出现次数和4的次数,即 l e n [ 4 ] = l e n [ 5 ] + 1 len[4] = len[5]+1 len[4]=len[5]+1,再考虑数字3,如果34成立,那么345肯定成立,所以一旦34成立,那么相当于4出现的次数加上5出现的次数再上上3出现的次数len[3] = len[4]+1,否则len[3] = 1。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;

int a[15][maxn], pos[15][maxn];
int len[maxn];
int main() {
	int n,m;
	scanf("%d%d", &n, &m);
	for(int i = 0; i < m; ++i)
		for(int j = 1; j <= n; ++j) {
			scanf("%d", &a[i][j]);
			pos[i][a[i][j]] = j;
		}
	long long ans = 0;
	for(int i = n; i >= 1; --i) {
		len[i] = 1;
		bool ok = true;
		for(int j = 1; j < m; ++j) {
			int p = pos[j][a[0][i]];
			if(p+1 > n || i+1 > n || a[j][p+1] != a[0][i+1])
				ok = false;
		}
		if(ok) len[i] = len[i+1]+1;
		// cout << len[i] << endl;
		ans += len[i];
	}
	printf("%lld\n", ans);

	return 0;
}
ExpressLRS(ELRS)接收机技术全景:从历史演进、技术底层到产业生态全解析——上 ExpressLRS(ELRS)是一种由全球开源社区驱动的双向射频遥控链路协议栈,其接收机作为核心终端,承担信号接收解调、遥控指令解析、飞控数据交互与遥测回传等关键功能。自2018年问世以来,ELRS凭借极致性能、低成本、开放生态和强兼容性,从航模DIY方案发展为消费级无人机领域的事实标准,并逐步渗透工业级场景。 ELRS接收机采用模块化分层架构,支持2.4GHz和900MHz双频段,通过LoRa、FLRC、FSK多调制模式实现低延迟与远距离平衡。其核心技术包括自适应跳频抗干扰、TDD双向链路和极简数据包。 阅读详情

相关推荐

如何使你的直流电机闭环?(PID讲解)

看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解

a2001444的博客 1万+

codeforces 1557 C Moamen and XOR(递推、分类讨论)

codeforces 1557 C Moamen and XOR 题目链接 题目标签 递推、分类讨论 题目大意 有一个由nnn个大小不超过2k2^k2k的非负整数组成的数组aaa ,问有多少组aaa满足条件a1&a2&a3……&an≥a1⊕a2⊕a3……⊕an{a_1}\&{a_2}\&{a_3}……\&{a_n}\geq{a_1}⊕{a_2}⊕{a_3}……⊕{a_n}a1​&a2​&a3​……&an​≥a1​⊕a2​⊕a3​……

屋檐听雨丶 394

TI Sitara PRU可编程实时单元:工业自动化中的硬实时协处理器解析

在嵌入式系统与工业自动化领域,实时性和确定性是核心需求。实时性指系统对外部事件做出响应的可预测时间,确定性则要求响应时间严格一致,不受其他任务干扰。其技术原理通常通过专用硬件或实时操作系统实现,例如采用独立于主CPU的协处理器来处理高精度时序任务。这种设计的技术价值在于,它能将主CPU从高实时性要求的任务中解放出来,专注于复杂业务逻辑,同时确保关键IO操作达到纳秒级延迟和极低抖动。应用场景广泛覆盖伺服电机控制、工业通信协议加速和多接口扩展等。本文聚焦的TI Sitara系列PRU(可编程实时单元),正是此类

weixin_42526068的博客 284

Codeforces 417 C

Football Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u SubmitStatus Description One day, at the "Russian Code Cup" event it was decided ...

weixin_30763397的博客 209

Autodesk软件网络授权破解

Autodesk 全系列产品网络授权破解 此网络许可授权破解文件及方法适用Autodesk 绝大部分的产品, 安装网络许可证管理器Autodesk网络许可证管理器x64位官方下载地址( https://knowledge.autodesk.com/sites/default/files/file_downloads/nlm11.14.1.3_ipv4_ipv6_win64.msi ) Autod...

weixin_33919950的博客 8264

RK3568/RK3588之修改8250驱动实现RS485收发的自动切换

在串口发送前,若为485,则将控制引脚拉为发送状态,在发送后,循环查看是否发送完成,若发送完成则将引脚置回读状态,如此一来,就能实现在内核测控制方向切换,而不会因为延时造成数据丢失,经过测试此办法可行。全部修改完成后,重新编译生成内核文件和设备树文件,烧写到板子上即可。

哒宰的博客 3118

CodeForces - 429B Working out(递推)

B. Working outtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputSummer is coming! It's time for Iahub and Iahubina to work out, as they both want to...

surprisezang的博客 302

SAP SLT DMIS 2018_1_752 究竟是什么意思?

把读懂,并不需要背太多编号。你只要记住:它就是DMIS 2018发行线里、面向的那一档组件版本,承载SLT 3.0的功能集。面向项目落地,要点就是三件事:看清平台基线、对齐DMIS支持包、走官方安装与补丁路径。如此,S/4到HANA,抑或S/4到BigQuery的复制链路,都会变得既稳定又可维护。DMIS 2018是新技术发行,基于,覆盖SLT全场景(SAP Learning)。DMIS_2018的安装与下载路径、通过SAINT安装的官方步骤(Installation Guide PDF)。源系统与。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 224

Codeforces1065G Fibonacci Suffix 【递推】【二分答案】

题目分析: 首先为了简便起见我们把前$15$的答案找出来,免得我们还要特判$200$以内之类的麻烦事。 然后我们从$16$开始递推。考虑猜测第i位是$0$还是$1$(这本质上是个二分)。一开始先猜是$1$,然后求是$0$的有多少个,与当前的$k$判断确认$0$和$1$。 然后考虑到某种情况就不输出的情况,实际上就是末尾的这个$ans$正好合法。 然后递推的时候除了将两个串原本出现的加起来,...

weixin_30701521的博客 254

嵌入式Linux&Android开发-TP调试

目录 一、修改DTS,添加新的I2C设备 二、修改Makefile,Kconfig 三、tp调试时的问题排查 一、修改DTS,添加新的I2C设备 &i2c4 { status = "okay"; clock-frequency = <400000>; gslX680@40 { compatible = "gslX680"; reg = <0x40>; touch-gpio = <&gp

嵌入式成长手册 572

全志T527-TP9930-Camera

TP9930 驱动模块主要实现将 4 路的 AHD/TVI/CVBS Camera 的数据转换为 BT656/BT1120 数据,从而实现在 T527 端来对数据进行处理和送显。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3237

CodeForces - 1327E Count The Blocks (递推)

题目链接:https://vjudge.net/problem/CodeForces-1327E 分析 看样例很快可以发现n=1,i=1和n=2,i=2的答案相同。 再手算一下n=3时,答案为2610 180 10,n=4时,为34200 2610 180 10。 这样可以发现一个规律,即(n,i)的答案与(n-1,i-1)的答案是相同的,递推出(n-i+1,1)的答案也是相同的,而如果直接算(...

TK_wang_的博客 241

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别的关系。本文改进是基于ResNet18、ResNet34、ResNet50、ResNet101,文章中均以提供,本专栏的改进内容全网独一份深度改进RT-DETR非那种无效Neck部分改进,

Snu77的博客 3171

Codeforces Round #519 D - Mysterious Crime

题目 题意:   在m组数,每组有n个数(数的范围1-n)中,找到某些序列 使它是每组数的一个公共子序列,问这样的某些序列的个数? 思路: 不难想出答案ans是≥n的。 创立一个next数组,使每组中第i个数的next 是第i+1个数,即 nex[ a[i] ] = a[ i+1 ] (实际上设next是二维数组)。对第一组中的第i...

ampg66396的博客 144

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Codeforces Round #519 by Botan Investments D】Mysterious Crime

【链接】 我是链接,点我呀:) 【题意】 相当于问你这m个数组的任意长度公共子串的个数 【题解】 枚举第1个数组以i为起点的子串。 假设i..j是以i开头的子串能匹配的最长的长度。 (这个j可以给2..m这些数组用一个类似链表的东西很快得到,O((j-i+1)M)的复杂度即可完成。 那么我们会发现,我们不需要重新再从i+1开始枚举。 因为i..j这一段的任意一个子串都是满...

92

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Codeforces Round #519 D. Mysterious Crime(思维)(1043D)

  题目链接:http://codeforces.com/contest/1043/problem/D        题意是给了n个数1-n,然后有1-m行,每行是一个1-n的排列数(不能重复),然后问这m行的公共子串有多少个。        显然暴力是不可取的...思路是我们先将每一行的一个数的前一个数存起来(相当于一个前驱数组),这样我们查找第i个数的时候就可以直接知道第i-1个数了,然...

Charles_Zaqdt的博客 583

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Codeforces Round#519 D. Mysterious Crime【想法题】

【题意】:给你m个长度为n的排列,m&lt;=10,n&lt;=100000,让你求有多少种不同的公共子串。 【题解】:就目前而言,如果是在多个字符串中求不同的公共子串个数,还不是一个能在较低复杂度下就能解决的问题,所以这道题一定是有它自己特殊的地方:排列(permutaion)。因为是排列,那么每一个数字只会出现一次,那我们就能记录每一个字符串中每一个数字后面跟着的是谁,那么判断是否存在某个子...

顾业鸣 230

[题解]Codeforces Round #519 - D. Mysterious Crime

【题目】 D. Mysterious Crime 【描述】 有m个n排列,求一共有多少个公共子段。 数据范围:1<=n<=100000,1<=m<=10 【思路】 对于第一个排列来说,如果第k个位置开始往后L长的子段是一个公共的子段,那么从k开始往后数1,2,...,L-1长的子段都是公共的子段;如果第k个位置开始往后L长的子段是一个公共的子段,但第k个位置开始...

weixin_33717117的博客 156

codeforces 903D Almost Difference(递推式)

题意很简单,自己读吧思路: 对于 1,2,3,1,3,记录前缀和,思考前面的所有数到这个数的情况 a[i]*(i-1) - sum[i-1],即不考虑(a[i]-1和a[i]+1的数时,前面所有数到a[i]的结果,因为对于每个a[i]-1,相当于多加了一个1,对于每个a[i]+1,相当于多减了个1,所以用map统计前面每个数出现的次数。最后再把距离为1的数补回来即可。代码如下:#include<

henuzxy 585

Codeforces B. The Number of Products(递推)

传送门 思路:用递推就好了(我没有想到)。 #include<iostream> using namespace std; const int MAXN = 2e5+5; long long dp1[MAXN], dp2[MAXN]; //以i为结尾的,有dp1[i]个区间含有奇数个负数,dp2[i]个区间含有偶数个负数 long long a[MAXN]; int main(){...

qq_42944230的博客 428

codeforces 1472 C Long Jumps 递推

题面 题意 题解 开始想的的是直接模拟题意,遍历一遍然后求最大,TLE,继续优化,可以加记忆化搜索,把遍历过的标记,还是TLE 其实是一个递推,直接从后往前遍历即可 代码 #include<bits/stdc++.h> using namespace std; const int N = 2e5 + 10; typedef long long ll; ll t, n; ll a[N]; ll dp[N]; int main() { cin >> t;

qq_44791484的博客 407

Codeforces 892 B. Wrath (递推)(思维)

题意 每个人都有一个长度为 li 的武器,相邻的两个人之间距离为 1 ,同一时间所有人使用武器攻击左边的人,问最后存活下来的人数。 显然,最右侧的人一定是可以存活下来的。 我们维护一个 cntcnt 代表右侧延伸到当前位置的武器长度, 若 cnt>0说明当前位置在别人的攻击范围内,否则 ans+1 。 更新 cnt为 max(cnt−1,ai)看对于 ii 来说是否可以攻击到更远的位置。 时...

Victor的博客 372

codeforces 399 B. Code For 1 递推 规律

题目链接http://codeforces.com/contest/768/problem/B题意给一个数x,0<=x<=250x, 0 <= x <= 2^{50},当这个数大于1时,就把这个数变为x / 2, x % 2, x / 2的序列(这里的除法是整数除法),然后对这个序列接着进行这个操作,直到序列的所有数小于2。随后给出两个数l,r,0<=r−l<=105l, r, 0 <= r - l

Brassica_的菜园 851

codeforces - 789C 【分类+简单递推】

codeforces - 789C 【分类+简单递推】 1 #include <bits/stdc++.h> 2 #define rep(i,a,b) for(int i = a;i <= b;++ i) 3 #define per(i,a,b) for(int i = a;i >= b;-- i) ...

weixin_30888707的博客 672

Codeforces 892B Wrath (递推)

题目链接:点击打开链接 题目大意:每个人手里都有一个武器,武器的长度决定他们可以杀死前面多少个人的人数,只要铃声响起就可以开始刺杀,问铃声落下后,还有多少人活着? 解题思路:一开始我用暴力去写,抱着试试的心态,结果意料之中的TLE,然后还是死磕着从左往右遍历,但是想不出,然后想着从右往左,依次遍历,根据题意,最右边的人一定不会死,所有从他手里的武器的长度入手,开个变量依次维护可刺杀人数的最大值

猴子姑娘呀的博客 565
上一篇: Codeforces Round #519 by Botan Investments E. Train Hard, Win Easy(思维+贪心)
下一篇: Codeforces Round #519 by Botan Investments F. Make It One(容斥+组合数学)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值