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

基于FPGA的数据采集系统(一) 整体系统设计 本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下: 图1:FPGA数据采集系统框图 从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.. 阅读详情

题目链接

题意

有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;
}
本地快速部署谷歌开放模型Gemma教程(基于Ollama) 谷歌最近发布了新一代开源AI模型Gemma,此次发布的 Gemma 相比自家的 Gemini 更加轻量级,模型权重也一并开源。不仅可以在笔记本电脑上运行,而且还免费可商用,支持中文。运行速度飞快。 阅读详情

相关推荐

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 803

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

ESD镜像解密与转换全攻略:从esd-decrypter到WinNTSetup的完整流程

本文详细解析了ESD镜像的加密特性与压缩优势,并提供了从解密到转换的完整实战指南。核心步骤包括使用esd-decrypter工具解密ESD文件为WIM格式,以及如何结合WinNTSetup进行灵活的系统安装或进一步封装为可引导的ISO镜像,帮助用户高效处理官方Windows安装镜像。

weixin_29207439的博客 452

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

压缩包密码破解工具ZIP Cracker2.0.1.2 正式版

一款多功能文件密码破解工具,支持ZIP、RAR、Office等主流加密格式,提供CPU/GPU双模式破解。该软件采用黑客风格界面,具备环境自检修复功能,支持实时监控硬件使用率。内置hashcat等专业破解工具,通过拖拽文件即可快速破解,GPU模式速度可达CPU的10-100倍。最新版本优化了中文路径支持,并提升了启动速度。

bfq05234214的博客 483

手把手教你学Simulink——基于Simulink的PMSM MTPA + FW 全速域平滑切换策略

本文提出一种基于Simulink的PMSM全速域平滑切换控制策略,通过融合MTPA和弱磁控制(FW)实现基速附近的无冲击过渡。在过渡区采用加权融合电流给定方法,使电流超调<5%、转速波动<2%,全速域效率>90%。文章详细介绍了系统架构、核心算法及Simulink建模步骤,包括融合控制器设计、切换逻辑实现和参数优化。仿真结果表明,该方法相比传统硬切换显著改善了动态性能,并扩展了调速范围。同时提供了可直接复用的工程模板和MATLAB代码,为电机控制工程师提供了实用的全速域控制解决方案。

MHD0815的博客 81

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

本地 AI 自由!OpenClaw+Ollama 双系统部署教程(Windows/Linux),零成本离线跑大模型

本文详细介绍了如何在Windows和Linux双系统中部署OpenClaw AI助手,并通过Ollama对接本地大模型实现完全离线使用。教程包含环境准备、OpenClaw安装配置、Ollama本地模型部署、系统对接等完整流程,特别强调隐私安全和零Token消耗的优势。针对不同操作系统提供具体命令,并给出常见问题解决方案,即使是新手也能快速搭建专属本地AI助手。最终实现的方案无需联网、无使用成本,且能保障数据隐私安全。

2501_93651177的博客 7231

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

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

weixin_30701521的博客 254

[实践篇]13.13 再来梳理一下HAB的设计原理

HAB全称为Hypervisor Abstraction,即硬件抽象,主要用于提供对HOST OS硬件资源的访问。

从0到1,突破自己 7261

Android16 RK3576修改亮度调节为线性调节

文章摘要: 本文分析了Android系统中亮度调节的非线性问题,并提供了线性化改造方案。首先通过追踪Settings和SystemUI代码,发现亮度调节使用了BrightnessUtils类中的非线性Gamma空间转换算法。然后重点修改了BrightnessUtils类,将原有的Hybrid Log Gamma(HLG)算法替换为简单的线性映射公式。最后在自定义工具窗口中实现了基于系统标准接口的亮度调节功能,通过SeekBar的0-100%百分比值线性映射到1-255的系统亮度值。改造后的亮度调节更加直观,

tzj1058756809的博客 76

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

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 455

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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、付费专栏及课程。

余额充值