洛咕 P4131 [WC2005]友好的生物


首先可以发现\(C\)是没有用的,可以乘进所有的权值里面做

考虑没有最后一维的限制,那么两个生物的友好值就是

\(\sum_{i=1}^k|a_i-b_i|\)

这个绝对值就很麻烦了。

但是可以换个思路想,既然是绝对值那么一定\(\geq 0\),所以两个生物的友好值是

\(\max\left(\sum_{i=1}^k(a_i-b_i)(-1)^{c_i}\right)\)

其中\(c\)取遍所有的01数组。正确性是显然的,因为其他的都没有答案大。

那么这道题\(k\leq 5\),不考虑最后一维就是\(k=4\)。

上面的式子分开来考虑:

\(\max\left(\sum_{i=1}^ka_i(-1)^{c_i}+\sum_{i=1}^kb_i(-1)^{c_i+1}\right)\)

那么思路就很清晰了,对每个\(c\)记\(\max\left(\sum_{i=1}^kw_i(-1)^{c_i}\right)\)(记为\(Max_c\))以及取这个最大值的生物,

答案就是\(\max_{c_i+d_i=1}(Max_c+Max_d)\)

但是还有最后一维的限制,所以把生物按照最后一维排序,依次先和Max更新答案,再更新Max。在更新\(Max\)的时候减去最后一维更新,更新答案的时候加上最后一维

#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
struct yyb{int a[4],b,i;}s[100010];
int S[100010][1<<4];
il bool operator<(const yyb&a,const yyb&b){return a.b<b.b;}
int Mx[1<<4],f[1<<4],C[6];
int main(){
int n=gi(),k=gi(),U=(1<<4)-1;
for(int i=0;i<k;++i)C[i]=gi();
for(int i=1;i<=n;++i){
for(int j=0;j<k-1;++j)s[i].a[j]=gi()*C[j];
for(int j=k-1;j<4;++j)s[i].a[j]=0;
s[i].b=gi()*C[k-1];
s[i].i=i;
}
k=4;
std::sort(s+1,s+n+1);
for(int i=1;i<=n;++i)
for(int j=0;j<1<<k;++j)
for(int l=0;l<k;++l)
if((1<<l)&j)S[i][j]+=s[i].a[l];
else S[i][j]-=s[i].a[l];
for(int i=0;i<1<<k;++i)Mx[i]=S[1][i]+s[1].b,f[i]=s[1].i;
int ans=-1e9,a=0,b=0;
#define chkans(t,_a,_b) {if((t)>ans)ans=(t),a=(_a),b=(_b);}
for(int i=2;i<=n;++i){
for(int j=0;j<1<<k;++j)chkans(Mx[U^j]+S[i][j]-s[i].b,s[i].i,f[U^j]);
for(int j=0;j<1<<k;++j)if(Mx[j]<S[i][j]+s[i].b)Mx[j]=S[i][j]+s[i].b,f[j]=s[i].i;
}
printf("%d %d\n%d\n",a,b,ans);
return 0;
}

洛咕 P4131 [WC2005]友好的生物的更多相关文章

  1. [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} ...

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

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

  3. 洛咕3312 [SDOI2014]数表

    洛咕3312 [SDOI2014]数表 终于独立写出一道题了...真tm开心(还是先写完题解在写的) 先无视a的限制,设\(f[i]\)表示i的约数之和 不妨设\(n<m\) \(Ans=\su ...

  4. 洛咕 P3700 [CQOI2017]小Q的表格

    洛咕 P3700 [CQOI2017]小Q的表格 神仙题orz 首先推一下给的两个式子中的第二个 \(b\cdot F(a,a+b)=(a+b)\cdot F(a,b)\) 先简单的想,\(F(a,a ...

  5. 洛咕 P2336 [SCOI2012]喵星球上的点名

    洛咕 P2336 [SCOI2012]喵星球上的点名 先求出SA和height,一个点名串对应的就是一段区间,还有很多个点,就转化成了 有很多个区间,很多个点集,对每个区间计算和多少个点集有交,对每个 ...

  6. bzoj5068: 友好的生物

    题目链接 bzoj5068: 友好的生物 题解 最大化这个东西\(\sum_{i=1}^{k-1} | a_{x,i}-a_{y,i} | - | a_{x,k}-a_{y,k} |\) 去掉绝对值号 ...

  7. 洛咕 P4528 [CTSC2008]图腾

    洛咕 P4528 [CTSC2008]图腾 神题orz. 先约定abcd表示\(1\leq A<B<C<D\leq n\),而且\(y_a,y_b,y_c,y_d\)的排名正好是\( ...

  8. 洛咕P3250 [HNOI2016]网络 整体二分

    这题太神仙了必须写博客... 显然可以想到二分答案.二分一个答案mid,如果所有长度\(\geq mid\)的路径都过x,那么答案一定\(<mid\),否则答案\(\geq mid\). 那么就 ...

  9. 洛咕 P2480 [SDOI2010]古代猪文

    洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...

随机推荐

  1. javascript版format函数,方便实现复杂字串连接

    javascript版format函数,方便实现复杂字串连接 String.prototype.format = function () { var args = arguments; console ...

  2. AppHangB1:explorer进程停止与Windows交互

    现象:Windows 7,打开 “计算机” 的时候,资源管理器卡死,如图所示. 解决方法:卸载 CAD迷你看图软件,利用 CCleaner 清除注册表.

  3. http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码

    http协议的状态码 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101( ...

  4. jenkins 安卓打包生成二维码下载

    先来张图看看吧 构思 jenkins gradle 打包apk文件,python myqr 模块生成二维码 放入nginx 访问图片的路径,apk安装包放在 nginx 下载目录. 环境 centos ...

  5. NCE2

    1.A private conversation Last week I went to the theatre. I had a very good seat. The play was very ...

  6. Spring Boot Mybatis-Plus

    Mybatis-Plus 是对 Mybatis-Plus 的一些扩充. 在 Spring Boot 中进行集成的时候其实基本上和 mybatis 是一致的. 在你的配置文件中.配置 你的 entity ...

  7. 用windows自带的fsutil修改稀疏文件大小成功,但文件内容似乎丢失

    fsutil sparse setflag. fsutil sparse setrange 10M对应字节,1G对应字节.. 看文件属性,实际尺寸是小了,但内容似乎也丢了..因为自己把该文件做成虚拟盘 ...

  8. [USACO09JAN]Earthquake Damage

    嘟嘟嘟 刚开始因为没看到只能走没有损坏的农场,磨叽了20多分钟……不管了,写题解吧. 首先如果一个点不能到达原点,那么和他相邻的点也不能到达原点,所以刚开始我们把不能走的点和他相邻的点都打上标记,然后 ...

  9. HBase学习之路 (二)HBase集群安装

    前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是java编 ...

  10. 手动安装sublime插件babel-sublime

    (一)手动安装babel 在开发reactjs开发使用sublime时,想要代码高亮显示,需要安装babel-sublime插件,在Preferences中的Package Control菜单搜索In ...