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