JZOJ 1307 Jail
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,jwi,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相关推荐
- jzoj 1307. Jail
分类讨论16种情况??? 码量超长,想了会儿数据结构后就弃疗打暴力了. 正解时间复杂度为O(2d * n * d) 我们枚举坐标的每个数的正负性. 然后在对于每种情况暴力弄出n个点的贡献. 由于两两之 ...
- JZOJ 5461 购物 —— 贪心
题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...
- 世界隐形冠军比拼:德国1307家、美国366家、中国68家
来源:股权投资论坛 目录 一.隐形冠军的概念二.隐形冠军的四个特征三.隐形冠军为何隐形四.隐形冠军到底有多牛五.如何成为隐形冠军六.中国隐形冠军多吗 1 隐形冠军的概念 "隐形冠军" ...
- 通过ezjail创建和管理jail虚拟机
在公司的环境中,需要快速和大量的部署jail虚拟机,原先的make world的方式就显得非常力不从心.大家都知道,make world就算在双四核的机器上也是极慢的:通过查阅freebsd的官方文档 ...
- mysql无法创建存储过程问题 ERROR 1307 (HY000)
今天由于需要批量生成一些游戏账号,所以打算用存储过程来实现,这样速度会快很多.结果却是用了大量时间,主要原因是mysql server不知道出了点什么问题,运行创建procedure的语句,一直报错. ...
- [wikioi 1307][poj 2054]欧少堆(乱搞)
题目:http://www.wikioi.com/problem/1307/ 题意:给你一个树,上面有n个节点,每个节点都有一个价值p,求一个n个节点的排列顺序,是的Σi*p[i]最小(要求父节点一定 ...
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...
- [jzoj NOIP2018模拟 11.01]
很庆幸打了这场模拟赛,因为这一场爆零 好像上次纪中的某场比赛我也出现了同样的问题,光是计算时间复杂度而忘记了空间的限制.想必是比上次惨的,考场上就写了两题而这两题都因为MLE爆零了.而且我T2还码了7 ...
- 51nod 1307 绳子与重物 (标记父节点更新即可)
1307 绳子与重物 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量为Wi,绳子的最大负重为Ci. ...
最新文章
- wp7 给TextBox设置圆角边框
- android alertdialog 背景透明,Android Alertdialog弹出框设置半透明背景
- 知云文献翻译打不开_文献翻译工具-知云文献翻译
- python 等值面 插值_利用numpy/scipy从三维阵列计算等值面
- [转载] Python字符串isdecimal() isdigit()isnumeric()等判断方法的区分。
- 快递企业如何完成运单订阅消息的推送
- 浅析我国地球科学研究现状及其它
- linux创建邮件列表,如何订阅linux-kernel邮件列表
- 物联网操作系统系列文章之-软件平台的力量
- 原生JavaScript的评分星星
- 2019新年Flag
- mysql设计高考倒计时_HTML/CSS+JS制作一个高考倒计时页面
- 【Wireshark】快速上手Wireshark
- 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器
- OneNET物联网平台06 消息队列MQ服务开启与配置
- Unity3d Dotween DOPath 设置了SetLookAt物体未看向路径的各种问题
- 用STM32F103单片机控制电调制动无刷电机
- amd服务器和intel服务器性能,服务器CPU内存性能哪家强?AMD or Intel?
- UG许可证错误-96
- DSP广告扣费方式:推广渠道如何结算统计CPA/CPS难题?
热门文章
- My future of programming
- VsCode使用Git连接Gitee和GitHub
- 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
- modbus poll 6.3.1破解版 附注册码
- 无法加载文件,因为在此系统上禁止运行脚本。
- python中的header是什么意思_python中header是什么意思啊
- 气象ts评分_中国气象局--国家气候中心--气候系统监测·诊断·预测·评估
- bzoj4399 魔法少女LJJ 线段树合并
- mysql dump 10.13 下载_mysqldump.exe 文件下载
- 暨大 c语言复试 2015,暨南大学历年复试真题合集.pdf