Luogu P1648 看守
Luogu P1648 看守
题意简述
有n个d维的点,输出这些点两两之间曼哈顿距离中的最大值
数据范围
n<=1e6,d<=4
思路
暴力?时间复杂度O(\(n^2d\))
考虑这样的一个式子
\]
因为我们是求最大值,那么,我们把绝对值去掉似乎也无妨
对于每一个点,记录\(2^d\)个数,每一个二进制数就表示当这一维取正/负时的取值
例如
如果这个点的坐标为(1,2,3)那么000就表示 -1-2-3=-6 ,001就表示 -1-2+3=0
我们不难发现,当两个二进制数每一位恰好相反时,把这两个值加起来就表示一个“曼哈顿距离”(去掉了绝对值)
因为d非常小,所以我们可以对于每一个点枚举\(2^d\)个状态,然后对于每一类状态记录一个最大值
统计答案是把相反的两个加起来即可
代码
#include<bits/stdc++.h>
using namespace std;
const int sz=1e6+1;
int n,d;
int cnt,ans;
int a[sz][5];
int f[16][sz];
int main(){
scanf("%d%d",&n,&d);
for(int i=1;i<=n;i++) for(int j=1;j<=d;j++) scanf("%d",&a[i][j]);
cnt=1<<d;
for(int i=0;i<cnt;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=d;k++){
if(i&1<<(k-1)) f[i][j]+=a[j][k];
else f[i][j]-=a[j][k];
}
for(int i=1;i<cnt;i++){
int l=INT_MAX,r=INT_MIN;
for(int j=1;j<=n;j++){
l=min(l,f[i][j]);
r=max(r,f[i][j]);
}
ans=max(ans,r-l);
}
printf("%d",ans);
}
Luogu P1648 看守的更多相关文章
- 【题解】Luogu P1648 看守
原题传送门:P1648 看守 这题目让求得的是d维( d <=4 )空间中n个点( 2 <= N <= 1000000 )之间最大的哈曼顿距离 模拟,emm,能拿30分,不错 因为d ...
- 【洛谷】P1648 看守 (数学)
题目链接 直接暴力搞\(O(n^2)\)显然是布星滴. 试想,若是一维,最远距离就是最大值减最小值. 现在推广到二维,因为有绝对值的存在,所以有四种情况 \((x1+y1) - (x2+y2), (x ...
- P1648 看守
传送门 以二维的两个点\((x1,y1),(x2,y2)\)为例,那么他们之间的曼哈顿距离肯定为一下四个之一\((x1-x2)+(y1-y2)\),\((x2-x1)+(y1-y2)\),\((x1- ...
- Luogu 魔法学院杯-第二弹(萌新的第一法blog)
虽然有点久远 还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题 沉迷游戏,伤感情 #include <queue> ...
- luogu p1268 树的重量——构造,真正考验编程能力
题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...
- [luogu P2170] 选学霸(并查集+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...
- [luogu P2647] 最大收益(贪心+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...
- Luogu 考前模拟Round. 1
A.情书 题目:http://www.luogu.org/problem/show?pid=2264 赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句 赛后:卧槽 怎么只有40 B.小 ...
- [Swust OJ 402]--皇宫看守(树形dp)
题目链接:http://acm.swust.edu.cn/problem/402/ Time limit(ms): 5000 Memory limit(kb): 65535 Description ...
随机推荐
- CentOS7 下面安装jdk1.8
1. 卸载已有的jdk rpm -qa |grep jdk |xargs rpm -e --nodeps 2. 使用xftp上传 jdk 的文件我这里上传的是 jdk-8u121-linux-x64. ...
- [转帖]Linux 硬件和系统配置查看命令小结
https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...
- [FreeBuff]Trojan.Miner.gbq挖矿病毒分析报告
Trojan.Miner.gbq挖矿病毒分析报告 https://www.freebuf.com/articles/network/196594.html 竟然还有端口转发... 这哥们.. 江民安全 ...
- IntelliJ IDEA使用教程(非常全面)
这个编辑器我就不再多做介绍了.直接开始新建maven hello world 的Java web项目啦 你电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上吧. ...
- Java语言支持的3种变量类型
类变量(静态变量):独立于方法之外的变量,用 static 修饰. 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰. 局部变量:类的方法中的变量. 例子如下: public ...
- BugFree 安装
BugFree基于PHP和MySQL开发,是免费且开发源代码的缺陷管理系统.服务器端在Linux和Windows平台上都可以运行:客户端无需安装任何软件,通过IE,FireFox等浏览器就可以自由使用 ...
- Java反射交换两个整型变量的值
在一次面试中,做了这么一道题"交换两个整型变量的值",当时看到这个题目之后,会心一笑,这也太简单了--直接使用中间变量交换不就可以了吗?但是,面试官却说不需要返回值,在调用的地方, ...
- 循环神经网络RNN及LSTM
一.循环神经网络RNN RNN综述 https://juejin.im/entry/5b97e36cf265da0aa81be239 RNN中为什么要采用tanh而不是ReLu作为激活函数? htt ...
- Xamarin + MvvmCross 安装 Part 1
前言 最近,由于工作需要,公司准备开发移动端APP.临近年底,公司不准备大面招人,由于公司一直基于.net平台进行开发,本人自告奋勇,准备先用xamarin做下移动开发.开始了在网上不停的google ...
- hibernate一对多映射文件的配置
其中一个Customer对应多个LinkMan Customer的映射文件 Customer.hbm.xml-------------->一对多 <?xml version="1 ...