HDU4666 Hyperspace(曼哈顿)
2024-08-29 16:02:03
题目链接。
分析:
这是多校的一个题,当时没做出来。学长说让用multiset。
用multiset将每一个数的1<<dim个状态全部保存。假设状态 i, 最远曼哈顿距离应当是 max[i]-min[i], 但如果知道 i 的相反的状态就可以转化成 max[i]+min[(~i)&(1<<dim-1)]. 这和 x-y = x + (-y) 是一个道理.
AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <stack>
#include <set> using namespace std; const int maxn = +;
const int dem = ; //维数
const int INF = (<<); int dim, x[maxn][dem]; int main(){
int n, ord; while(scanf("%d %d", &n, &dim) == ) {
multiset<int> ms[];
multiset<int>::iterator it; for(int i=; i<=n; i++) {
scanf("%d", &ord);
if(ord == ) {
for(int j=; j<dim; j++) {
scanf("%d", &x[i][j]);
} for(int j=; j<(<<dim); j++) {
int t = j, s = ;
for(int k=; k<dim; k++) {
if(t & ) s += x[i][k];
else s -= x[i][k];
t >>= ;
}
ms[j].insert(s);
} } else { //ord == 1 scanf("%d", &ord);
for(int j=; j<<<dim; j++) {
int t = j, s = ;
for(int k=; k<dim; k++) {
if(t & ) s += x[ord][k];
else s -= x[ord][k];
t >>= ;
} it = ms[j].find(s);
ms[j].erase(it);
}
} int ans = ;
for(int j=; j<(<<dim); j++) {
int k = ((~j) & ((<<dim)-));
int t1, t2;
it = ms[j].end(); //multiset内部是升序排列
it--;
t1 = *it;
it = ms[k].end();
it--;
t2 = *it;
ans = max(ans, t2+t1);
} printf("%d\n", ans);
}
} return ;
}
最新文章
- JavaScript中style, currentStyle和 getComputedStyle的异同
- 进入meta模式关闭背光灯
- 轻松实现ajax登录时让浏览器保存密码
- php中的常用数组函数(一)(比较多个数组的差集的函数们 array_diff_assoc() array_diff() array_diff_key() array_diff_ukey() array_diff_uassoc())
- 【C#】3.算法温故而知新 - 快速排序
- xxxx
- fastJson泛型如何转换
- (转)Yale CAS + .net Client 实现 SSO(1)
- Xamarin.Forms-VS安装调试错误
- effective c++ 条款9 do not call virtual function in constructor or deconstructor
- 使用PHP实现文件上传和多文件上传
- 将Editplus添加到右键打开菜单
- Display 和Visible 区别
- node.js学习4--------------------- 根据不同路径来响应内容,以及中文乱码的解决
- 痞子衡嵌入式:恩智浦半导体全系无线(BLE, Zigbee, Thread, 2.4G, Sub-1G)微控制器芯片一览
- 配置SAP GUI FOR HTML(通过WEB方式登录)
- [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】
- 【做题】arc068_e-Snuke Line——利用特殊性质分讨
- [PHP]防止表单重复提交的几种方法
- Eclipse 插件安装报错问题(已解决)
热门文章
- android scrollview组件禁止滑动的方法
- Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法
- const常量折叠
- Drawable与Bitmap(转)
- codevs 4909 寂寞的堆(写的好丑0.0)
- try{...} catch {...} finally{...} 各种情况代码的执行情况
- (转)iFrame高度自适应
- ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
- Rechability的简单使用
- 64位操作系统下IIS报“试图加载格式不正确的程序”错误