题目链接

\(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;
}

最新文章

  1. 随手编程---快速排序(QuickSort)-Java实现
  2. mongodb语法备份(转)
  3. auto(c++11)
  4. 用jquery实现简单的表单验证
  5. LinkedHashMap 和 LRU算法实现
  6. poj1160 dp
  7. 抛掉kendoUI的MultiSelect,自己实现 DropDownList MultiSelect
  8. (中等) POJ 2528 Mayor&#39;s posters , 离散+线段树。
  9. 11g oracle 用户密码过期问题
  10. order by按照指定记录排序
  11. freemarker写select组件报错总结(六)
  12. SmartSql 快速使用指南
  13. Java复制、移动和删除文件
  14. 微信小程序创建一个新项目
  15. 使用ipns 为ipfs 系统自定义域名
  16. Eclipse配置问题
  17. 【BZOJ3709】 [PA2014]Bohater(贪心)
  18. haskell学习资料
  19. 【BZOJ】1647: [Usaco2007 Open]Fliptile 翻格子游戏(暴力)
  20. 07----popo up 弹窗

热门文章

  1. node.js通过edge访问.net动态链接库
  2. sh脚本学习之: 命令处理
  3. javascript柯里化
  4. &lt;td&gt;内容超出自动换行
  5. (FFT)A+B Problem
  6. 基于Disruptor并发框架的分类任务并发
  7. java iterator
  8. sphinx 同时使用多个索引进行检索探究
  9. linux:查询软件是否安装以及删除
  10. jQuery-属性操着