题目链接

\(Description\)

求\[\max\{\sum_{i=1}^{k-1}(C_i*|a_{x,i}-a_{y,i}|)-C_k*|a_{x,k}-a_{y,k}|\}\]

\(Solution\)

首先可以直接将\(C_k\)乘到\(a_{i,k}\)里。然后我们要求\(\max\{\sum_{i=1}^{k-1}|a_{x,i}-a_{y,i}|-|a_{x,k}-a_{y,k}|\}\)
因为只需要求某两个数的最大值,所以我们把绝对值改掉,求:\[\max\{\sum_{i=1}^{k-1}\pm(a_{x,i}-a_{y,i})-|a_{x,k}-a_{y,k}|\}\]
然后按\(a_{j,k}\)排序,\(2^{k-1}\)枚举\(a_{j,i}\)的符号,一定存在一种情况使得\(a_{x,i}-a_{y,i}\)都为正。
枚举符号后维护前缀最小值就行了。

复杂度\(O(n2^{k-1})\)。

//3120kb    232ms
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 350000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=1e5+5;int K;
char IN[MAXIN],*SS=IN,*TT=IN;
struct Node
{int a[5];bool operator <(const Node &x)const{return a[K]<x.a[K];}
}A[N];inline int read()
{int now=0,f=1;register char c=gc();for(;!isdigit(c);c=='-'&&(f=-1),c=gc());for(;isdigit(c);now=now*10+c-'0',c=gc());return now*f;
}int main()
{int n=read(),C[7]; K=read()-1;for(int i=0; i<=K; ++i) C[i]=read();for(int i=1; i<=n; ++i)for(int j=0; j<=K; ++j) A[i].a[j]=read()*C[j];std::sort(A+1,A+1+n); int ans=-1e8;for(int s=0,lim=1<<K+1; s<lim; ++s){int mn=1e8;for(int i=1; i<=n; ++i){int now=-A[i].a[K];//这个忘了== for(int j=0; j<K; ++j)if(s>>j&1) now+=A[i].a[j];else now-=A[i].a[j];ans=std::max(ans,now-mn), mn=std::min(mn,now);}}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/9647747.html

BZOJ.5068.友好的生物(思路)相关推荐

  1. [BZOJ]5068: 友好的生物 放缩

    Solution 猜到复杂度--却依然不会做-- 这个方法感觉和不等式证明中的放缩法有点类似,所以我个人这样称呼-- 先把CiC_iCi​乘进去,把式子写出来:∑i=1k−1∣ai−bi∣−∣ak−b ...

  2. BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)

    BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...

  3. bzoj 4300 绝世好题 —— 思路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4300 记录一下 mx[j] 表示以第 j 位上是1的元素结尾的子序列长度最大值,转移即可. ...

  4. [枚举] COGS 1580 [WC2005]友好的生物

    论文:陈启峰--一张一弛,解题之道 详见论文 篇幅过长 不摘录了 #include<cstdio> #include<cstdlib> #include<algorith ...

  5. [HNOI 2011]卡农

    Description 题库链接 在集合 \(S=\{1,2,...,n\}\) 中选出 \(m\) 个子集,满足三点性质: 所有选出的 \(m\) 个子集都不能为空. 所有选出的 \(m\) 个子集 ...

  6. lfu算法实现java_LFU五种实现方式,从简单到复杂

    前言 最近刷力扣题,对于我这种 0 基础来说,真的是脑壳疼啊.这个月我估计都是中等和困难题,没有简单题了. 幸好,力扣上有各种大牛给写题解.看着他们行云流水的代码,真的是羡慕不已.让我印象最深刻的就是 ...

  7. mysql adduser_SQL创建登陆用户和赋予权限

    js 封装设计cookie http://www.imooc.com/article/12700/p> bzoj 3033 太鼓达人 思路:首先一定是2^m次方的总数.用二进制从 000 一直到 ...

  8. linux如何运行java程序,Linux环境下运行简单java程序

    一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...

  9. Auto.js Pro安卓免ROOT引流脚本开发系列教程23网易公开课(1)-前言

    APP名称 网易公开课 APP版本 安卓客户端:v6.8.1 APP简介 网易公开课提供来自世界一流名校和著名机构的上万集精品视频课程,涵盖各类热门领域,与Web版保持同步更新.速度流畅,画面高清.支 ...

最新文章

  1. 百度工具栏不显示出来_解决win10系统桌面应用图标显示不出来的问题
  2. 各类web服务器 http access log获取用户和代理ip
  3. Leetcode 103. 二叉树的锯齿形层序遍历 (每日一题 20210924)
  4. split 将字符串分割成字符串数组
  5. 微信小程序php实现登陆的代码,微信小程序实现微信登录
  6. 【我的物联网成长记11】8招带你玩转规则引擎
  7. 新手建网站笔记(四)--快捷键
  8. Linux用awk处理文本数据
  9. Microsoft Press免费电子书地址
  10. 设置kafka_2.13-3.0.0开机自启动
  11. 例外被抛出且未被接住--服务端与客户端隐藏
  12. dial协议服务器可以禁吗,Radius协议   1812  radius
  13. Auto 3dmax安装资源
  14. Js控制页面刷新(局部刷新全页面刷新)
  15. 键盘调节台式计算机声音,电脑键盘打字声音特效_键盘打字声音特效
  16. 健身行业大洗牌 Keep还会有未来吗?
  17. MySQL日志(一)—— 慢查询日志slow log
  18. 【总结】Android 应用测试总结
  19. 广告投放相关专业名词整理
  20. 卡片左右滑动 带动任务条滑动 vue

热门文章

  1. 几分钟了解阿里云云服务器ECS
  2. FreeRTOS 事件标志组 ——提高篇
  3. *2 echo、printf、mkdir命令的应用
  4. Maven pom.xml配置详解(三)
  5. 常见浏览器兼容性问题与解决方案
  6. how many libraries within Cambridge?
  7. ubuntu 11.10 添加分辨率
  8. c#后台线程更新界面
  9. 号称要打败阿尔法狗的DeepZenGo 高调挑战人类
  10. curl请求本地域名问题