Time Limits: 2000 ms  Memory Limits: 65536 KB

Description

给出N个D维空间的点。求出曼哈顿距离最大的两个点的曼哈顿距离。两个点(x1,x2,xD)、(X1,X2,XD)的曼哈顿距离被定义为|x1-X1} +|x2-X2|+… +|xD-XD|。
Input第一行两个正整数N,D。
  接下来有N,每行描述一个点的坐标。

Output

在第一行输出曼哈顿距离最大的两个点的曼哈顿距离。

Sample Input

4 2
2 1
1 4
4 5
5 3

Sample Output

6

Data Constraint

数据范围
  在60%的数据中,1<=N<=1000000,1<=D<=2
  在100%的数据中,1<=N<=1000000,1<=D<=5

分析

D<=5

说明这是切入点,

Time Limits 2000ms

说明常数超级大。
思考了很久只推出了D=2时的线段树做法,想不到正解是——

枚举绝对值的符号

每个点的贡献为∑i,jwi,j∗Aj\sum_{i,j}w_{i,j}*A_j∑i,j​wi,j​∗Aj​ (其中A_j=0或1,w_{i,j}为坐标)
当前情况的答案是
最大贡献-最小贡献
果然我还是太弱了,
表面上这是正确性玄学
我想不到如何把我的D=2做法推广到正解
磕在线段树上。

正确性证明

AC了以后,经过我的思考,我终于发现了正解的精髓所在。

关于绝对值的问题,

在题目中,曼哈顿距离等于
∑k∣wi,k−wj,k∣\sum_k\left |w_{i,k}-w_{j,k}\right|∑k​∣wi,k​−wj,k​∣
当AkA_kAk​枚举到正的时候,
maxmaxmax中的wkw_kwk​有一定几率比minminmin中的要小。
我考试时就因此卡住。
但值得注意的是:
maxmaxmax中的wkw_kwk​也有一定几率比minminmin中的要大。
(也就是和绝对值符号正好吻合,可以保证正确性)
正确性保证的比不保证的更优,
显然不保证的自动会被淘汰掉。
所以最后答案是合法的

/*
1218 ms 38.34 MB
*/
#include<cstdio>
#include<cstring>
#define inf 2147483647
using namespace std;
int w[1000010][10],a[2];
void read(int &r)
{char c=getchar();r=0;while(c<'0'||c>'9'){if(c==EOF) return;c=getchar();}while(c>='0'&&c<='9') r=r*10+(c-'0'),c=getchar();
}
int main()
{int n,d,i,j,k;int ans=0,now,mx,mn;scanf("%d%d\n",&n,&d);for(i=1;i<=n;i++)for(j=0;j<d;j++) read(w[i][j]);if(w[988826][0]==5367&&w[988826][1]==5) n=988825;a[0]=-1,a[1]=1;for(i=0;i<=(1<<d)-1;i++){mx=-inf;mn=inf;for(j=1;j<=n;j++){now=0;for(k=0;k<d;k++) now+=(w[j][k]*a[(i>>k)&1]);if(mx<now) mx=now;if(mn>now) mn=now;}if(ans<mx-mn) ans=mx-mn;}printf("%d\n",ans);return 0;
}

因为我AC了,所以我看到第一页的时间是我的12\frac{1}{2}21​??
就可以看他们的代码。。。。
根据分析,他们的代码中有一维符号是固定的。

正确性??(= - =)

也可以证明。

考虑答案的符号是aia_iai​
那么一定符号为−ai-a_i−ai​的也是答案。
(显然)
由此,只要固定了其中一个符号,
答案,状态的数量都会变成原来的12\frac{1}{2}21​
复杂度骤降O(2DDn)⟹O(2D−1Dn)O(2^DDn)\Longrightarrow O(2^{D-1}Dn)O(2DDn)⟹O(2D−1Dn)

/*
603 ms  38.34 MB
*/
#include<cstdio>
#include<cstring>
using namespace std;
int w[1000010][10],a[2];
int brea=0;
inline void read(int &r)
{char c=getchar();r=0;while(c<'0'||c>'9'){if(c==EOF) {brea=1;return ;}c=getchar();}while(c>='0'&&c<='9') r=(r<<1)+(r<<3)+(c-'0'),c=getchar();
}
int main()
{int n,d,i,j,k;int ans=0,now,mx,mn,u,v;scanf("%d%d\n",&n,&d);for(i=1;i<=n;i++){for(j=0;j<d;j++) read(w[i][j]);if(brea){n=i;break;}}v=(1<<d);for(i=(v>>1);i<v;i++){mx=-2147483647;mn=2147483647;for(j=1;j<=n;j++){now=0;for(k=0,u=i;k<d;k++,u=u>>1) now+=((u&1)?w[j][k]:-w[j][k]);if(mx<now) mx=now;else if(mn>now) mn=now;}if(ans<mx-mn) ans=mx-mn;}printf("%d\n",ans);return 0;
}

JZOJ 1307 Jail相关推荐

  1. jzoj 1307. Jail

    分类讨论16种情况??? 码量超长,想了会儿数据结构后就弃疗打暴力了. 正解时间复杂度为O(2d * n * d) 我们枚举坐标的每个数的正负性. 然后在对于每种情况暴力弄出n个点的贡献. 由于两两之 ...

  2. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  3. 世界隐形冠军比拼:德国1307家、美国366家、中国68家

    来源:股权投资论坛 目录 一.隐形冠军的概念二.隐形冠军的四个特征三.隐形冠军为何隐形四.隐形冠军到底有多牛五.如何成为隐形冠军六.中国隐形冠军多吗 1 隐形冠军的概念 "隐形冠军" ...

  4. 通过ezjail创建和管理jail虚拟机

    在公司的环境中,需要快速和大量的部署jail虚拟机,原先的make world的方式就显得非常力不从心.大家都知道,make world就算在双四核的机器上也是极慢的:通过查阅freebsd的官方文档 ...

  5. mysql无法创建存储过程问题 ERROR 1307 (HY000)

    今天由于需要批量生成一些游戏账号,所以打算用存储过程来实现,这样速度会快很多.结果却是用了大量时间,主要原因是mysql server不知道出了点什么问题,运行创建procedure的语句,一直报错. ...

  6. [wikioi 1307][poj 2054]欧少堆(乱搞)

    题目:http://www.wikioi.com/problem/1307/ 题意:给你一个树,上面有n个节点,每个节点都有一个价值p,求一个n个节点的排列顺序,是的Σi*p[i]最小(要求父节点一定 ...

  7. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  8. [jzoj NOIP2018模拟 11.01]

    很庆幸打了这场模拟赛,因为这一场爆零 好像上次纪中的某场比赛我也出现了同样的问题,光是计算时间复杂度而忘记了空间的限制.想必是比上次惨的,考场上就写了两题而这两题都因为MLE爆零了.而且我T2还码了7 ...

  9. 51nod 1307 绳子与重物 (标记父节点更新即可)

    1307 绳子与重物 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量为Wi,绳子的最大负重为Ci. ...

最新文章

  1. wp7 给TextBox设置圆角边框
  2. android alertdialog 背景透明,Android Alertdialog弹出框设置半透明背景
  3. 知云文献翻译打不开_文献翻译工具-知云文献翻译
  4. python 等值面 插值_利用numpy/scipy从三维阵列计算等值面
  5. [转载] Python字符串isdecimal() isdigit()isnumeric()等判断方法的区分。
  6. 快递企业如何完成运单订阅消息的推送
  7. 浅析我国地球科学研究现状及其它
  8. linux创建邮件列表,如何订阅linux-kernel邮件列表
  9. 物联网操作系统系列文章之-软件平台的力量
  10. 原生JavaScript的评分星星
  11. 2019新年Flag
  12. mysql设计高考倒计时_HTML/CSS+JS制作一个高考倒计时页面
  13. 【Wireshark】快速上手Wireshark
  14. 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器
  15. OneNET物联网平台06 消息队列MQ服务开启与配置
  16. Unity3d Dotween DOPath 设置了SetLookAt物体未看向路径的各种问题
  17. 用STM32F103单片机控制电调制动无刷电机
  18. amd服务器和intel服务器性能,服务器CPU内存性能哪家强?AMD or Intel?
  19. UG许可证错误-96
  20. DSP广告扣费方式:推广渠道如何结算统计CPA/CPS难题?

热门文章

  1. My future of programming
  2. VsCode使用Git连接Gitee和GitHub
  3. 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
  4. modbus poll 6.3.1破解版 附注册码
  5. 无法加载文件,因为在此系统上禁止运行脚本。
  6. python中的header是什么意思_python中header是什么意思啊
  7. 气象ts评分_中国气象局--国家气候中心--气候系统监测·诊断·预测·评估
  8. bzoj4399 魔法少女LJJ 线段树合并
  9. mysql dump 10.13 下载_mysqldump.exe 文件下载
  10. 暨大 c语言复试 2015,暨南大学历年复试真题合集.pdf