题意:

给定 n个物品A 和 m个物品B;每个物品都有一个值 s 和 k 个属性值 x[i],

问:从n个物品中选一个 i,m个物品里选一个 j,ans = i_s + j_s + Sigma( | i_x[t]  -  j_x[t] | ,  t : [0,k-1] );  求 ans 的最大值

思路:

如果 Sigma部分求差值绝对值哪里不是绝对值的话,那样对于 i 物品中 x[i] 全部求和就OK了;

现在加上绝对值后我们不知道绝对值后的值是什么,但是我们能确定的是 |a-b| = a-b 或者 b-a,这两种情况

所以我们可以把最大ans 式子看做: i_s + j_s + (# * i_x[0]) + (# * i_x[1]) ... + (# * i_x[k-1])  + (# * j_x[0]) + ... (# * j_x[k-1]);

其中 # 表示正负号, 即 物品 i - j 时,相对应的 x[t] 可能是本身相减,也可能同时变负后相减,即每个 x[t] 对应了两种情况,至于k个属性,那就是 2^k 中不同的状态,

这些状态中, 每个从n个中取最大值,然后计算m个物品中的每种状态的值,用n个中最大的减去,取最大值

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 7;
const int maxd = 30 + 7;struct node {ll s;ll x[6];ll t[maxd];
}a[maxn], b[maxn];
ll max_[maxd];
ll ans[maxd];int main() {int T; scanf("%d", &T);while(T--) {int n, m, k;scanf("%d%d%d", &n, &m, &k);memset(max_, 0, sizeof max_);int k_ = (1<<k);for(int i = 1; i <= n; ++i) {scanf("%lld", &a[i].s);for(int j = 0; j < k; ++j) {scanf("%lld", &a[i].x[j]);}for(int j = 0; j < k_; ++j) {ll t = a[i].s;for(int pos = 0; pos < k; ++pos) {if(j&(1<<pos)) {t += (-1)*(a[i].x[pos]);}else t += a[i].x[pos];}max_[j] = max(max_[j], t);}}memset(ans, 0, sizeof ans);for(int i = 1; i <= m; ++i) {scanf("%lld", &b[i].s);for(int j = 0; j < k; ++j) {scanf("%lld", &b[i].x[j]);}for(int j = 0; j < k_; ++j) {ll t = -b[i].s;for(int pos = 0; pos < k; ++pos) {if(j&(1<<pos)) {t += (-1)*(b[i].x[pos]);}else t += (b[i].x[pos]);}ans[j] = max(ans[j], max_[j]-t);}}ll anss = 0;for(int i = 0; i < k_; ++i) {anss = max(anss, ans[i]);}printf("%lld\n", anss);}return 0;
}

HDU - 6435 Problem J. CSGO 多维最远曼哈顿距离+原理 2018多校-10相关推荐

  1. [HDU 4666]Hyperspace[最远曼哈顿距离][STL]

    题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...

  2. HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】

    这个题是动态的求最远曼哈顿距离.做法和POJ 2926 Requirements一样,都是通过二进制枚举符号的情况. 每插入一个节点都要询问最大值和最小值,因此用一个优先队列或者堆维护就可以了. #i ...

  3. 曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|.

    曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|. 我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生 ...

  4. Problem J: 学生成绩统计表

    Problem J: 学生成绩统计表 Time Limit: 1 Sec   Memory Limit: 16 MB Submit: 902   Solved: 416 [ Submit][ Stat ...

  5. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  6. HDU 6343.Problem L. Graph Theory Homework-数学 (2018 Multi-University Training Contest 4 1012)

    6343.Problem L. Graph Theory Homework 官方题解: 一篇写的很好的博客: HDU 6343 - Problem L. Graph Theory Homework - ...

  7. 2019 ICPC World Finals Problem J. Miniature Golf

    2019 ICPC World Finals Problem J. Miniature Golf Solution 设lll为l0l_0l0​时iii的总分为si,l0s_{i,l_0}si,l0​​ ...

  8. Problem J: 神医胡青牛

    Problem J: 神医胡青牛 题目: 胡青牛是"倚天屠龙记"中的神医,每天都有N多(N<=2000)的人来求他治病,这些人排成一队,从1开始编号直到N ,每个人手里都拿着 ...

  9. 华农oj Problem J: 幻化【贪心/抽屉原理】

    Problem J: 幻化 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 18 Solved: 3 [Submit][Status][Web Board ...

最新文章

  1. 主流机器学习[xgb, lgb, Keras, LR]
  2. 函数计算进行自动化运维专题
  3. PHP __compare 魔术方法的实现
  4. 【Leetcode】大神总结的所有TopK问题模板(基于快速排序)
  5. 火线妹在线求偶,想找高质量男朋,粉丝:有没有绯闻心里没数?
  6. Smart field 1 how is smartField controller loaded - how is main view defined in manifest.json
  7. 非常有用的并发控制-倒计时器CountDownLatc
  8. 中国开发者数量全球第二,C 语言一跌再跌!GitHub 年度报告重磅发布
  9. 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结
  10. 沃尔沃XC40纯电版官宣降价至29.9万元起
  11. Hibernate之事务处理
  12. 线性模型第4讲:弹性网络
  13. Spring Mvc前台访问报404
  14. python -- 拉勾网爬虫模拟登录
  15. Linux网络适配器不见了,linux – lspci未显示HyperV网络适配器
  16. LeetCode 413.等差数列的划分
  17. 精致生活品味相伴,Barsetto百胜图BAC025B胶囊咖啡机测评
  18. 英语口语网站免费学习资源大全
  19. 【中级软考】【耦合、内聚】模块独立性衡量之内聚的七种类型(偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚)
  20. 极路由1S升级系统之后再刷机学习记录

热门文章

  1. 基于动态阈值检测丝网破损
  2. linux nc命令--功能强大的网络工具
  3. Audio-AudioRecord create(一)
  4. 对于客户的需求-我连对暗号的机会都没有
  5. 华为荣耀6 安装失败
  6. 互联网项目管理 序言
  7. 实体店借力整合让客户倍增,掌握了这个诀窍,你的生意不再难做!
  8. 给初学者的RxJava2.0教程(七)
  9. 基于p5.js的简单绘画系统
  10. pythonpath是什么_在PYTHONPATH中到底应该设置什么?