有 n 种主武器,m 种副武器。每种武器有一个基础分数k种属性值 X[i] 。

选出一种主武器 mw 和一种副武器 sw,使得两种武器的分数和 + 每个属性的差值尽量大。(参考下面的式子)

多维的最远曼哈顿距离。

因为对于每一种属性对答案的贡献,要么是 Xmw[i] - Xsw[i] ,要么是 Xsw[i] - Xmv[i]。

枚举每个主武器所有属性的符号,副武器的符号与主武器相反。

然后每次从主武器和副武器里面分别找一个属性值和基础分数的总和最大的,用这两个最大值的和更新答案。

因为k <= 5,所以枚举所有符号的复杂度是 2^k <= 32,总复杂度是 O(2^k * nk)。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int maxn = + ;
const LL INF = 1e19/; int n, m, k, t;
LL a[maxn][], b[maxn][];
LL sum; int main()
{
scanf("%d", &t);
for (int ca = ; ca <= t; ca++)
{
LL ans = ;
scanf("%d%d%d", &n, &m, &k);
for (int i = ; i <= n; i++)
for (int j = ; j <= k; j++) scanf("%lld", &a[i][j]); for (int i = ; i <= m; i++)
for (int j = ; j <= k; j++) scanf("%lld", &b[i][j]); for (int s = ; s <= (<<k)-; s++)
{
LL max1 = -INF, max2 = -INF;
for (int i = ; i <= n; i++)
{
sum = a[i][];
for (int j = ; j <= k; j++)
sum += a[i][j]*(s>>(j-) & ? :-); max1 = max(max1, sum);
} for (int i = ; i <= m; i++)
{
sum = b[i][];
for (int j = ; j <= k; j++)
sum += b[i][j]*(s>>(j-) & ? -:); max2 = max(max2, sum);
} ans = max(ans, max1+max2);
} printf("%lld\n", ans);
}
}

2018 Multi-University Training Contest 10 CSGO(HDU - 6435)(最远曼哈顿距离)的更多相关文章

  1. HDU 4666 最远曼哈顿距离

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4666 关于最远曼哈顿距离的介绍: http://blog.csdn.net/taozifish/ar ...

  2. 2018 Nowcoder Multi-University Training Contest 10

    Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...

  3. hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)

    CRB and Tree                                                             Time Limit: 8000/4000 MS (J ...

  4. 2015 Multi-University Training Contest 10 hdu 5406 CRB and Apple

    CRB and Apple Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  5. 2015 Multi-University Training Contest 10 hdu 5412 CRB and Queries

    CRB and Queries Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  6. 2016 Multi-University Training Contest 10

    solved 7/11 2016 Multi-University Training Contest 10 题解链接 分类讨论 1001 Median(BH) 题意: 有长度为n排好序的序列,给两段子 ...

  7. [二分,multiset] 2019 Multi-University Training Contest 10 Welcome Party

    Welcome Party Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)T ...

  8. 2015 Multi-University Training Contest 10(9/11)

    2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...

  9. hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

随机推荐

  1. setTimeout的异步传输机制

    setTimeout是异步的,在设置完setTimeout后,指定代码会在设定的时间后加入到任务队列,但并不是立即执行,js是单线程语言,所有的代码按顺序执行,即同步执行,同步执行的代码放在执行队列中 ...

  2. 去掉 Ctrl + A 全选

    import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public ...

  3. 线程池ThreadPoolExecutor的学习

    我们知道,ExecutorService是一个抽象出线程池的一个接口,然后我们在使用线程池的时候,用的是Executors工具类中的一系列newCachedThreadPool() 等类似的方法,这些 ...

  4. Batch梯度下降

    1.之前讲到随机梯度下降法(SGD),如果每次将batch个样本输入给模型,并更新一次,那么就成了batch梯度下降了. 2.batch梯度下降显然能够提高算法效率,同时相对于一个样本,batch个样 ...

  5. 洛谷P1081 开车旅行70分

    https://www.luogu.org/problem/show?pid=1081 太遗憾了明明写出来了,却把最小值初始值弄小了,从第二个点开始就不可能对了.70分! #include<io ...

  6. 微信支付(java版本)_统一下单

    最近工作接触到微信支付,刚开始解决微信支付很神秘,接触之后发现并没有那么神秘,就是有很多坑,在开发的时候需要注意,整理出来: 1.准备工作 首先需要登录微信支付公众平台阅读接口文档,地址:https: ...

  7. EF批量插入数据耗时对比

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 【Java】 jar解压与压缩

    jar解压与压缩 命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名 # 解压,到当前目录 jar -xvf source.jar # 打包,不进行压缩 ja ...

  9. Outlook 客户端无法通过 MAPI over HTTP协议 连接

    随着Exchange 版本更新升级,是否进行验证客户端建立MapiHttp连接所需的服务器设置已正确配置.即使服务器,负载均衡器和反向代理的所有设置都正确,您可能会遇到连接到Exchange Serv ...

  10. userBean-作用范围session

    package com.java1234.model; public class Student { private String name;private int age; public Strin ...