hdu 4666 Hyperspace
曼哈顿距离,两个点设为(x1,y1),(x2,y2),其距离为|x1-x2|+|y1-y2|
#include <cstdio>
#include <set>
#include <cstring>
#include <cstdlib>
using namespace std;
struct node
{
int pos;
int sum;
bool operator < (const node &p) const
{
return p.sum>sum;
}
node (int x,int y)
{
pos=x;
sum=y;
}
};
set<node> s[34];
int n,m,cnt;
int f_a[34][5],v[5];
bool d[60010];
void dfs(int cur)
{
if(cur==m)
{
for(int i=0; i<m; ++i) f_a[cnt][i]=v[i];
s[cnt++].clear();
return;
}
v[cur]=1;
dfs(cur+1);
v[cur]=-1;
dfs(cur+1);
}
void solve(int cur)
{
for(int i=0; i<cnt; ++i)
{
int a=0;
for(int j=0; j<m; ++j) a+=v[j]*f_a[i][j];
s[i].insert(node(cur,a));
}
}
void del()
{
int sum=0;
for(int i=0; i<cnt; ++i)
{
set<node>::iterator p,q;
while(s[i].size())
{
p=s[i].begin();
if(d[p->pos]) s[i].erase(*p);
else break;
}
while(s[i].size())
{
q=s[i].end();
--q;
if(d[q->pos]) s[i].erase(*q);
else break;
}
if(!s[i].size()) continue;
sum=max(sum,q->sum - p->sum);
}
printf("%d\n",sum);
}
int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF)
{
int f,pos;
cnt=0;
memset(d,0,sizeof(bool)*(n+1));
dfs(0);
for(int i=1; i<=n; ++i)
{
scanf("%d",&f);
if(!f) for(int j=0; j<m; ++j) scanf("%d",&v[j]);
else
{
scanf("%d",&pos);
d[pos]=1;
}
if(!f) solve(i);
del();
}
}
return 0;
}
hdu 4666 Hyperspace的更多相关文章
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 Hyperspace(曼哈顿距离)
题目链接 这是HDU第400个题. #include <cstdio> #include <cstring> #include <set> #include < ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- hdu 4666 Hyperspace(多维度最远曼哈顿距离)
献上博文一篇http://hi.baidu.com/byplane747/item/53ca46c159e654bc0d0a7b8d 设维度为k,维护(1<<k)个优先队列,用来保存0~( ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
- HDU 4666
http://acm.hdu.edu.cn/showproblem.php?pid=4666 求m维最远曼哈顿距离 借鉴别人的思路http://www.cnblogs.com/jackge/archi ...
- HDU 4666 最远曼哈顿距离
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4666 关于最远曼哈顿距离的介绍: http://blog.csdn.net/taozifish/ar ...
- hdu 4666 最大曼哈顿距离
思路:这题我是看了题目后,上百度搜了一下才知道还有求最大曼哈顿距离的方法.直接把代码copy过来,研读一下,知道了代码实现机制,自然就很容易想到用优先队列来维护每种状态下的xi,yi之和的最大值最小值 ...
随机推荐
- android requestDisallowInterceptTouchEvent用途
ViewPager来实现左右滑动切换tab.假设tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比方想滑动tab项中的可水平滑动的控件,却导致tab切换. 由于Android事件机制是从父 ...
- 开发专题指南: JEECG高速微云开发平台前言
JEECG微云高速开发平台-前言 1. 前言 1.1. 技术背景 随着WEB UI 框架(EasyUI/Jquery UI/Ext/DWZ)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也能够生成统 ...
- How to get multi-touch working(Linux and Andriod)
1.在hid-ids.h中加入vid pid 2.在hid-multitouch..c->mt_devices[] 中加入 { ...
- ASP.NET MVC3.0或4.0设置二级域名的方法
之前我就想做二级域名指向同一个IP同一个程序无非是在路由匹配规则上做文章也就是对Url的重写的一种思路.我用了半天时间上网查阅了相关资料并做了Demo测试是完全 以的,在这分享给大家... 假如网站主 ...
- u盘启动盘制作工具
u盘启动盘制作工具http://www.dabaicai.biz/ 系统镜像文件下载:http://xt.qingdiangongsi.cn/xtxz/
- 在MVC中如何愉快使用Ajax
前言: 这个故事要从我老大与客户谈需求开始说起.前几天,遇见一个逗比客户,不知道是听了哪个逗比程序员的临终遗言...让我们给他做一个手机端的Web应用出来,还说要使用MVC来做(不是App).马币,客 ...
- ORACLE网络配置大全没有比这个更详细的【weber出品】
一.起篇 现在怎么说也是互联网时代,数据库也要联网,很多朋友学习Oracle的时候无外乎搭建的是以下两种学习环境: 1.直接在windows环境下安装Oracle后直接sqlplus连接. 2.在wi ...
- Mediawiki.org的PHP编码约定
http://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP assignment作为expression来用看起来像个错误(looks su ...
- iOS应用崩溃日志分析-备用
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...
- Caffe : Layer Catalogue(2)
TanH / Hyperbolic Tangent 类型(type):TanH CPU 实现: ./src/caffe/layers/tanh_layer.cpp CUDA.GPU实现: ./src/ ...