思路:

参考了http://codeforces.com/blog/entry/62797,把第一个序列重标号成1,2,3,...,n,在剩下的序列中寻找形如x, x + 1, x + 2, ...的连续子段即可。

实现:

 #include <iostream>
#include <vector>
#include <cstring>
using namespace std;
typedef long long ll; const int INF = 0x3f3f3f3f; int a[][], reach[][], n, m; int main()
{
while (scanf("%d %d", &n, &m) != EOF)
{
memset(reach, , sizeof reach);
for (int i = ; i <= m; i++)
{
for (int j = ; j <= n; j++)
scanf("%d", &a[i][j]);
}
vector<int> v(n + );
for (int i = ; i <= n; i++) v[a[][i]] = i;
for (int i = ; i <= m; i++)
{
for (int j = ; j <= n; j++)
a[i][j] = v[a[i][j]];
}
for (int i = ; i <= n; i++) reach[][i] = n;
for (int i = ; i <= m; i++)
{
int j = , start = ;
while (j <= n)
{
while (j + <= n && a[i][j + ] == a[i][j] + ) j++;
while (start <= j) { reach[i][a[i][start]] = a[i][j]; start++; }
start = ++j;
}
}
ll ans = ;
for (int i = ; i <= n; i++)
{
int minn = INF;
for (int j = ; j <= m; j++)
if (reach[j][i])
minn = min(minn, reach[j][i] - i + );
if (minn != INF) ans += minn;
}
printf("%lld\n", ans);
}
return ;
}

最新文章

  1. 学习angular2
  2. SharePoint 自定义的列表页面中添加javascript的一个 For循环语句后,该页面就打不开了。
  3. [转]非常实用的15款开源PHP类库
  4. 使用OpenXML操作Office文档
  5. HDU 5067
  6. Careercup - Microsoft面试题 - 6314866323226624
  7. 学习面试题Day06
  8. SharePoint2010 自定义代码登录方法
  9. spring与mybatis,strut2整合连接sqlserver不的不说的那点事儿
  10. proxy 利用get拦截,实现一个生成各种DOM节点的通用函数dom。
  11. fragment 数据传递,传值,通信
  12. 阿里云centos 搭建SVN
  13. Chapter 5 Blood Type——25
  14. Solve Error: &quot;errcode&quot;: 85005, &quot;errmsg&quot;: &quot;appid not bind weapp hint&quot;
  15. 【原创】angularjs1.3.0源码解析之执行流程
  16. Qt5.9静态库编译VS2015-x64
  17. (C#基础)Linq学习理解
  18. nginx 官方docker镜像使用教程
  19. Bootloader之uBoot简介(转)
  20. Spring-在IDEA2016中创建maven管理的SpringMVC项目

热门文章

  1. 基于aspect实现AOP——xml配置的其他操作
  2. SqlSession
  3. alsa音频驱动框架
  4. 896C
  5. Windows服务卸载服务窗口仍显示的问题
  6. 【Data Structure &amp; Algorithm】求子数组的最大和
  7. HDU - 3410 Passing the Message 单调递减栈
  8. 【转】Visual Studio 选择相同变量高亮
  9. IOS Carthage安装、使用
  10. swift4.0 方法监听Selector写法总结