CF 366E Dima and Magic Guitar(最远哈密顿距离)
题目链接:http://codeforces.com/problemset/problem/366/E
题意:给出一个n*m的数字矩阵A,每个矩阵元素的范围[1,K]。给出一个长度为s的数字串B,B的每个元素的范围[1,K]。将B中的每个元素t用A中的一个位置(i,j)代替,满足A[i][j]=B[t]。这样就得到一个长度为s的位置序列。定义相邻两个位置的距离为曼哈顿距离,定义序列的最大距离为每两个相邻元素距离最大值。求一种替换方案使得序列的最大距离最大。
思路:最后转化成两个位置集合S1,S2,使得从S1、S2中各拿出一个元素使得曼哈顿距离最大。设两个点A(x1,y1),B(x2,y2),。因为是绝对值,所以|x1-x2|+|y1-y2|就是
(x1-x2)+(y1-y2)
-(x1-x2)+(y1-y2)
(x1-x2)-(y1-y2)
-(x1-x2)-(y1-y2)
中的最大值。因此我们对于每个位置(x,y)记录x+y,x-y,-x+y,-x-y。也就是将所有点分四种保存。那么两个点距离的最大值必然在某一种中为两个数的差值。
int n,m,K,s,a[N][N];
set<int> S[10][4];
int b[100005],c[10][10]; int main()
{
Rush(n)
{
RD(m,K,s);
int i,j,k;
FOR0(i,10) FOR0(j,4) S[i][j].clear();
FOR1(i,n) FOR1(j,m)
{
int x;
RD(x);
S[x][0].insert(-i-j);
S[x][1].insert(-i+j);
S[x][2].insert(i-j);
S[x][3].insert(i+j);
}
clr(c,0);
FOR1(i,s)
{
RD(b[i]);
if(i>1) c[b[i]][b[i-1]]=c[b[i-1]][b[i]]=1;
}
int ans=0;
set<int>::iterator it;
FOR1(i,9) FOR1(j,9) if(c[i][j])
{
FOR0(k,4) for(it=S[i][k].begin();it!=S[i][k].end();it++)
{
upMax(ans,abs(*it-*S[j][k].rbegin()));
upMax(ans,abs(*it-*S[j][k].begin()));
}
}
PR(ans);
}
}
CF 366E Dima and Magic Guitar(最远哈密顿距离)的更多相关文章
- CF 366E - Dima and Magic Guitar 最远曼哈顿距离
题目:http://codeforces.com/problemset/problem/366/E 事实上就是找 n * m 矩阵中数字 x 和 数字 y 的最远距离. 方法參照武森的论文<浅谈 ...
- cf E. Dima and Magic Guitar
http://codeforces.com/contest/366/problem/E |x1-x2|+|y1-y2|有四种情况 1.-(x1-x2)+(y1-y2); 2.(x1-x2)-(y1-y ...
- Dima and Magic Guitar CodeForces - 366E
Dima and Magic Guitar CodeForces - 366E 题意: http://blog.csdn.net/u011026968/article/details/38716425 ...
- 最远 Manhattan 距离
最远 Manhattan 距离 处理问题 K维空间下的n个点,求两点最远曼哈顿距离 思路 以二维为例介绍算法思想,即可类推到k维.对于P,Q两点,曼哈顿距离|Px-Qx|+|Py-Qy|可看作(±Px ...
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- poj 2926:Requirements(最远曼哈顿距离,入门题)
Requirements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3908 Accepted: 1318 Desc ...
- POJ-2926 Requirements 最远曼哈顿距离
题目链接:http://poj.org/problem?id=2926 题意:求5维空间的点集中的最远曼哈顿距离.. 降维处理,推荐2009武森<浅谈信息学竞赛中的“0”和“1”>以及&l ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
随机推荐
- 在MAC平台下编译Ngnix ,由于MD5算法不能编译通过 解决办法
近期想学习Ngnix 代码,前些日子,对”自己下手狠一次“, 买了MAC 本. 所以想在Mac 上编译,是必须的,不然对不起自己的内心. 不巧遇到了MD5算法编译的问题 src/core/ngx_cr ...
- 升级Mac osx 10.10 后安装php 的mcrypt extension
昨天折腾到凌晨四点多,今天又到这个点,终于成功了,心情比较复杂,先记录一下,改日再整理,此刻头昏脑胀,只想蒙头大睡. 发的问题,还没人回复,自己找到答案了,英语比较蹩脚,凑合看.. http://st ...
- 【python】网络爬虫抓取图片
利用python抓取网络图片的步骤: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片 今天我们用http://www.umei ...
- 微信消息处理JAXP-sax解析
package cn.zhaokai.sax; import java.io.IOException; import java.io.InputStream; import java.io.Print ...
- 常见的装置与其在Linux当中的档名
需要特别留意的是硬盘机(不论是IDE/SCSI/U盘都一样),每个磁碟机的磁盘分区(partition)不同时, 其磁碟档名还会改变呢!下一小节我们会介绍磁盘分区的相关概念啦!需要特别注意的是磁带机的 ...
- Array.Copy
var bt = new byte[] { 0x03, 0x00, 0x01, 0xD9, 0x23 }; var result = new byte[] { 0x01, 0x00, 0x03, 0x ...
- ViewController 优化
解决问题:部分复杂页面的Controller过于庞大,不利于维护与复用: 复杂的页面大多是基于tableview的页面.复杂页面的代码大致可分为两部分(复杂的View布局用Nib实现的话,一般大家都是 ...
- 【BZOJ】【2132】圈地计划
网络流/最小割 Orz Hzwer 这类大概是最小割建模中的经典应用吧…… 黑白染色,然后反转黑色的技巧感觉很巧妙!这个转化太神奇了…… /****************************** ...
- 【BZOJ】【1430】小猴打架
排列组合 蛮逗的…… 这题题干描述的就一股浓浓的Kruskal的气息……很容易就想到是求一个n个点的完全图的生成树个数,然后由于有序,再乘一个n-1的排列数(n-1条边的全排列)即(n-1)! 但是我 ...
- WinForm员工信息表
先搞一个panel,然后里面放label.