【链接】 我是链接,点我呀:)

【题意】

相当于问你这m个数组的任意长度公共子串的个数

【题解】

枚举第1个数组以i为起点的子串。
假设i..j是以i开头的子串能匹配的最长的长度。
(这个j可以给2..m这些数组用一个类似链表的东西很快得到,O((j-i+1)*M)的复杂度即可完成。
那么我们会发现,我们不需要重新再从i+1开始枚举。
因为i..j这一段的任意一个子串都是满足要求(公共子串)的。
而它有len*(1+len)/2个子串
那么我们从j+1开始继续上述步骤就Ok了。
注意m=1的时候。。别死循环了。。。j加一个上界n哦.

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--) using namespace std; const int N = 1e5;
const int M = 10; int a[M+2][N+10];
int n,m; int main()
{
scanf("%d%d",&n,&m);
rep1(i,1,n) scanf("%d",&a[1][i]);
for (int i = 2;i <= m;i++){
rep1(j,1,n)
{
int x;
scanf("%d",&x);
a[i][x] = j;
}
}
int last = 0;
long long ans = 0;
for (int i = 1;i <= n;i++){
int k = i;
while (1){
int ok = 1;
rep1(j,2,m)
if (k+1<=n && a[j][a[1][k]]+1==a[j][a[1][k+1]])
ok++;
if (ok==m && k+1<=n){
k++;
}else break;
}
ans = ans + 1LL*(1+k-i+1)*(k-i+1)/2;
i = k;
}
printf("%lld\n",ans);
return 0;
}

【Codeforces Round #519 by Botan Investments D】Mysterious Crime的更多相关文章

  1. 【Codeforces Round #519 by Botan Investments E】Train Hard, Win Easy

    [链接] 我是链接,点我呀:) [题意] [题解] 设每个人做第一题.第二题的分数分别为x,y 我们先假设没有仇视关系. 即每两个人都能进行一次训练. 那么 对于第i个人. 考虑第j个人对它的贡献 如 ...

  2. 【Codeforces Round #519 by Botan Investments A】 Elections

    [链接] 我是链接,点我呀:) [题意] [题解] 枚举k 那么另外一个人的得票就是nk-sum(ai) 找到最小的满足nk-sum(ai)>sum(ai)的k就ok了 [代码] #includ ...

  3. 【 Codeforces Round #519 by Botan Investments B】Lost Array

    [链接] 我是链接,点我呀:) [题意] [题解] 枚举k 不难根据a得到x[0..k-1] 然后再根据a[k+1..n]来验证一下得到的x是否正确就好. [代码] #include <bits ...

  4. 【Codeforces Round #519 by Botan Investments C】 Smallest Word

    [链接] 我是链接,点我呀:) [题意] [题解] 模拟了一两下.. 然后发现. 对于每一个前缀. 组成的新的最小字典序的字符串 要么是s[i]+reverse(前i-1个字符经过操作形成的最大字典序 ...

  5. Codeforces Round #519 by Botan Investments

    Codeforces Round #519 by Botan Investments #include<bits/stdc++.h> #include<iostream> #i ...

  6. Codeforces Round #519 by Botan Investments(前五题题解)

    开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...

  7. Codeforces Round #519 by Botan Investments F. Make It One

    https://codeforces.com/contest/1043/problem/F 题意 给你n个数,求一个最小集合,这个集合里面数的最大公因数等于1 1<=n<=3e5 1< ...

  8. Codeforces Round #519 by Botan Investments翻车记

    A:枚举答案即可.注意答案最大可达201,因为这个wa了一发瞬间爆炸. #include<iostream> #include<cstdio> #include<cmat ...

  9. 【Codeforces Round #519】

    A:https://www.cnblogs.com/myx12345/p/9872082.html B:https://www.cnblogs.com/myx12345/p/9872124.html ...

随机推荐

  1. 【Linux】Ubuntu 开机默认亮度改动方法

    换了ubuntu 之后.发现开机屏幕都是"最大亮度",每次都要到设置中手动调节,非常麻烦.于是想到去改动这个设置.Google一通,别人可行的办法到我这就没用了.郁闷.最后是在st ...

  2. Apache日志优化

    apache执行时会记录其处理的全部请求的相关信息.同一时候,也会记录在处理过程中发生异常状况的相关信息. server能够用多种格式将与请求相关的活动信息记录在多个日志文件里,只是却仅仅能记录一份错 ...

  3. LeetCode——Valid Number

    Validate if a given string is numeric. Some examples: "0" => true " 0.1 " =&g ...

  4. @ConfigurationProperties注解

    @Value获取值和@ConfigurationProperties获取值比较 |            | @ConfigurationProperties | @Value | | ------- ...

  5. 常见的DP优化类型

    常见的DP优化类型 1单调队列直接优化 如果a[i]单调增的话,显然可以用减单调队列直接存f[j]进行优化. 2斜率不等式 即实现转移方程中的i,j分离.b单调减,a单调增(可选). 令: 在队首,如 ...

  6. poi读写Excel

    poi读写Excel 对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细 ...

  7. 操作系统-虚拟机-百科:VM

    ylbtech-操作系统-虚拟机-百科:VM 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的 ...

  8. 浅讲ajax

    1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器 ...

  9. Appium + python - input操作实例

    import osimport time as t adb = 'adb shell input tap 400 500'os.system(adb) t.sleep(5) class keyeven ...

  10. ROS-URDF-活动关节

    前言:介绍活动关节,并使机器人活动起来. 参考自:http://wiki.ros.org/urdf/Tutorials/Building%20a%20Movable%20Robot%20Model%2 ...