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 ...
随机推荐
- oninput事件和onchange事件区别
onchange事件 触发条件:在域内容更改时触发,也可用于单选框和复选框改变后触发 作用对象:select.input.textarea oninput事件 触发条件:在域内容更改时触发(严格说在用 ...
- [转帖]linux下的CPU、内存、IO、网络的压力测试
linux下的CPU.内存.IO.网络的压力测试 https://www.cnblogs.com/zhuochong/p/10185881.html 一.对CPU进行简单测试: 1.通过bc命令计算特 ...
- ActiveMQ入门案例-生产者代码实现
<–start–> 使用Java程序操作ActiveMQ生产消息,代码的复杂度较高,但也没有默写下来的必要. 开发ActiveMQ首先需要导入activemq-all.jar包,如果是ma ...
- RPC框架-RMI、RPC和CORBA的区别
关键词:RMI RPC CORBA简 介:本篇文章重点阐述RMI,附带介绍RPC和CORBA Java远程方法调用(Java RMI)是一组实现了远程方法调用(rmi)的API. java RMI是远 ...
- 介绍Ajax与jQuery技术
Ajxs技术(异步的JavaScript与XML)已有多种技术的组合 Ajax的优点是什么? 1.可以实现客户端的异步请求操作2.进而在不需要刷新页面的情况下与服务器进行通信,减少用户的等待时间3.减 ...
- Nginx安装- CentOS7
1.确认是否具备安装环境 g++ -v 如果不打印则不具备. 解决办法:联网执行如下命令 yum install gcc yum install gcc-c++ 2.需要材料 pcre-8.37.t ...
- elasticsearch的映射
一.简介: 映射:在创建索引时,可以预先定义字段的类型(映射类型,也就是type,一个索引可以有一个或多个类型)及相关属性. Elasticsearch会根据JSON源数据的基础类型猜测你想要的字段映 ...
- python 钉钉机器人发送消息
import json import requests def sendmessage(message): url = 'https://oapi.dingtalk.com/robot/send?ac ...
- <resultMap>中 <collection>的使用
public class Question implements Serializable { private int id; //问题Id private int accountId; //用户id ...
- bmi
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...