题目链接

bzoj5068: 友好的生物

题解

最大化这个东西\(\sum_{i=1}^{k-1} | a_{x,i}-a_{y,i} | - | a_{x,k}-a_{y,k} |\)

去掉绝对值号,也就是就是求这个式子 \(\sum_{i=1}^{k-1}±(a_{x,i}-a_{y,i}) - | a_{x,k} - a_{y,k} |\) 的最大值

对与前面的 \(i\) 式取 正负号 一定会有一个方案使每个 \(a_{x,i}-a_{y,i}\) 不负

装压枚举每个\(i\)的符号,对于 \(a_{x,k}\) 从小到大排序,维护前缀最小值更新答案

代码

  1. #include<cmath>
  2. #include<cstdio>
  3. #include<algorithm>
  4. inline int read() {
  5. int x = 0,f = 1;
  6. char c = getchar();
  7. while(c < '0' || c > '9'){if(c == '-')f = - 1; c = getchar(); }
  8. while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
  9. return x * f;
  10. }
  11. #define INF 0x3f3f3f3f
  12. int n,k;
  13. struct A {
  14. int d[10],id;
  15. bool operator < (const A &a)const {
  16. return d[k] < a.d[k];
  17. }
  18. } a[100007];
  19. int c[76];
  20. int main() {
  21. n = read(),k = read() - 1;
  22. for(int i = 0;i <= k;++ i) c[i] = read();
  23. for(int i = 1;i <= n;++ i) {
  24. a[i].id = i;
  25. for(int j = 0;j <= k;++ j) a[i].d[j] = read(),a[i].d[j] *= c[j];
  26. }
  27. std::sort(a + 1,a + n + 1);
  28. int ans = 0,id1,id2;
  29. for(int s = 0;s < (1 << k); ++ s) {
  30. int minn = INF, id;
  31. for(int i = 1;i <= n;++ i) {
  32. int ss = 0;
  33. for(int j = 0;j < k;++ j)
  34. if(s & (1 << j)) ss += a[i].d[j];
  35. else ss -= a[i].d[j];
  36. ss -= a[i].d[k ];
  37. if(ans < ss - minn) ans = ss - minn,id1 = a[i].id,id2 = id;
  38. if(minn > ss) minn = ss,id = a[i].id;
  39. }
  40. }
  41. printf("%d\n",ans);
  42. return 0;
  43. }

bzoj5068: 友好的生物的更多相关文章

  1. BZOJ5068: 友好的生物(状压 贪心)

    题意 题目链接 Sol 又是一道神仙题??.. 把绝对值拆开之后状压前面的符号?.. 下界显然,但是上界为啥是对的呀qwq.. #include<bits/stdc++.h> using ...

  2. 洛咕 P4131 [WC2005]友好的生物

    洛咕 P4131 [WC2005]友好的生物 首先可以发现\(C\)是没有用的,可以乘进所有的权值里面做 考虑没有最后一维的限制,那么两个生物的友好值就是 \(\sum_{i=1}^k|a_i-b_i ...

  3. [WC 2005]友好的生物

    Description $W$ 星球是一个和地球一样气候适宜.物种聚集的星球.经过多年的研究,外星生物学家们已经发现了数万种生物,而且这个数字还在不断增大. $W$ 星球上的生物很有趣,有些生物之间很 ...

  4. bzoj 5068: 友好的生物

    大意: n个生物, 每个生物有k种属性, 友好度通过下式计算. , C为给定非负数组, 求友好度最大值. k比较小, 求的是最大值并且$C_i$非负, 所以可以暴力枚举正负情况去绝对值号. #incl ...

  5. Luogu4131 WC2005 友好的生物 状压DP

    传送门 首先$C_i$是没有意义的,因为可以直接让$d_i \times= C_i$,答案也是一样的 所以我们现在考虑求$(\sum_{i=1}^{K-1} |d_{p,i}-d_{q,i}|) - ...

  6. BZOJ.5068.友好的生物(思路)

    题目链接 \(Description\) 求\[\max\{\sum_{i=1}^{k-1}(C_i*|a_{x,i}-a_{y,i}|)-C_k*|a_{x,k}-a_{y,k}|\}\] \(So ...

  7. [WC2005]友好的生物

    description 洛谷 求 \[max_{1\le i<j\le n}\{\sum_{s=1}^{k-1}(C_s-|D_{is}-D_{js}|)-(C_k-|D_{ik}-D_{jk} ...

  8. NOIp2018集训test-9-23

    这个NOI模拟题怕是比你们的NOIp模拟题要简单哦.. 友好的生物 应该是一道简单题,但是机房只有辉神一个人想到正解似乎. 被我kd-tree水过去了(这不是kd-tree的裸题吗???(不是)) / ...

  9. [Z] 北大一牛人生物转申CS的经历

    http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...

随机推荐

  1. Python内置的操作系统模块(os)与解释器交互模块(sys)

    Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Pyth ...

  2. GUI起头

    package com.lovo.frame; import java.awt.Color;import java.awt.Container;import java.awt.Font;import ...

  3. 给radio加自己的样式(图片)

    $('.choice').click(function() { var display1 = $("#check").prop("checked"); cons ...

  4. HDU 5528 反演

    $f(m)=\sum\limits_{i=1}^{m-1}\sum\limits_{j=1}^{m-1}[(ij,m) \ne m]$,$g(n)=\sum\limits_{m|n}f(m)$,$1 ...

  5. scrapy 简单防封

    设置爬取间隔 setting.py from random import random DOWNLOAD_DELAY = random()* ps:此次的爬取间隔,在读取seeting文件确定,并非每 ...

  6. sh脚本学习之:变量

    变量的创建 环境配置 /etc/profile =>~/.bash_profile(~/.bash_login,~/.profile) => ~/.bashrc sh声明 name=&qu ...

  7. PHP中GET和POST区别

    1. get是从服务器上获取数据,post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过H ...

  8. python技巧 使用值来排序一个字典

    In [8]: a={'x':11,'y':22,'c':4} In [9]: import operator In [10]: sorted(a.items(),key=operator.itemg ...

  9. 第10月第20天 afnetwork like MKNetworkEngine http post

    1. + (AFHTTPRequestOperation *)requestSellerWithCompletion:(requestFinishedCompletionBlock)successBl ...

  10. 使用phpstorm+wamp实现php代码实时调试审计

    转载自:https://www.bugbank.cn/q/article/5853afaffc0bf4f010ee6ac3.html php调试有N多好用的工具,最近研究到phpstorm配合wamp ...