[WC2005]友好的生物
description
洛谷
求
\]
data range
\]
solution
拆绝对值。
一开始的想法是3维CDQ套线段树 5维偏序
对于前\(k-1\)位,直接\(2^{k-1}\)枚举每一个数的正负情况。
对于最后一位,排序即可拆掉绝对值。
居然还被卡了空间
Code
#include<bits/stdc++.h>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<cassert>
#include<ctime>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define F "a"
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define RG register
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PI;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const dd eps=1e-6;
const int mod=1e4;
const int N=1000010;
const dd pi=acos(-1);
const int inf=2147483647;
const ll INF=1e18+1;
const ll P=100000;
inline ll read(){
RG ll data=0,w=1;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();
return data*w;
}
inline void file(){
srand(time(NULL)+rand());
freopen(F".in","r",stdin);
freopen(F".out","w",stdout);
}
#define fi first
#define se second
int n,k,S,c[5],v[64],x,y,ans;
pair<int,int> pre[64],suf[64],L,R,Ans;
struct wild{int d[5],id;}w[N];
bool cmp(wild x,wild y){return x.d[k-1]<y.d[k-1];}
int main()
{
n=read();k=read();S=(1<<(k-1))-1;
for(RG int i=0;i<k;i++)c[i]=read();
for(RG int i=1;i<=n;i++){
w[i].id=i;
for(RG int j=0;j<k;j++)w[i].d[j]=c[j]*read();
}
sort(w+1,w+n+1,cmp);
for(RG int s=0;s<=S;s++)pre[s]=suf[s]=(PI){-1e9,0};
for(RG int i=1;i<=n;i++){
for(RG int s=0,f=S;s<=S;s++,f=((~s)&S)){
v[s]=0;
for(RG int j=0;j<k-1;j++)
(s&(1<<j))?v[s]+=w[i].d[j]:v[s]-=w[i].d[j];
if(ans<pre[f].fi+v[s]-w[i].d[k-1]){
ans=pre[f].fi+v[s]-w[i].d[k-1];
x=w[i].id;y=pre[f].se;
if(x>y)swap(x,y);
}
}
for(RG int s=0;s<=S;s++)
pre[s]=max(pre[s],(PI){v[s]+w[i].d[k-1],w[i].id});
}
for(RG int i=n;i;i--){
for(RG int s=0,f=S;s<=S;s++,f=((~s)&S)){
v[s]=0;
for(RG int j=0;j<k-1;j++)
(s&(1<<j))?v[s]+=w[i].d[j]:v[s]-=w[i].d[j];
if(ans<suf[f].fi+v[s]+w[i].d[k-1]){
ans=suf[f].fi+v[s]+w[i].d[k-1];
x=w[i].id;y=suf[f].se;
if(x>y)swap(x,y);
}
}
for(RG int s=0;s<=S;s++)
suf[s]=max(suf[s],(PI){v[s]-w[i].d[k-1],w[i].id});
}
printf("%d %d\n%d\n",x,y,ans);
return 0;
}
[WC2005]友好的生物的更多相关文章
- 洛咕 P4131 [WC2005]友好的生物
洛咕 P4131 [WC2005]友好的生物 首先可以发现\(C\)是没有用的,可以乘进所有的权值里面做 考虑没有最后一维的限制,那么两个生物的友好值就是 \(\sum_{i=1}^k|a_i-b_i ...
- Luogu4131 WC2005 友好的生物 状压DP
传送门 首先$C_i$是没有意义的,因为可以直接让$d_i \times= C_i$,答案也是一样的 所以我们现在考虑求$(\sum_{i=1}^{K-1} |d_{p,i}-d_{q,i}|) - ...
- bzoj5068: 友好的生物
题目链接 bzoj5068: 友好的生物 题解 最大化这个东西\(\sum_{i=1}^{k-1} | a_{x,i}-a_{y,i} | - | a_{x,k}-a_{y,k} |\) 去掉绝对值号 ...
- [WC 2005]友好的生物
Description $W$ 星球是一个和地球一样气候适宜.物种聚集的星球.经过多年的研究,外星生物学家们已经发现了数万种生物,而且这个数字还在不断增大. $W$ 星球上的生物很有趣,有些生物之间很 ...
- bzoj 5068: 友好的生物
大意: n个生物, 每个生物有k种属性, 友好度通过下式计算. , C为给定非负数组, 求友好度最大值. k比较小, 求的是最大值并且$C_i$非负, 所以可以暴力枚举正负情况去绝对值号. #incl ...
- 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 ...
- BZOJ5068: 友好的生物(状压 贪心)
题意 题目链接 Sol 又是一道神仙题??.. 把绝对值拆开之后状压前面的符号?.. 下界显然,但是上界为啥是对的呀qwq.. #include<bits/stdc++.h> using ...
- NOIp2018集训test-9-23
这个NOI模拟题怕是比你们的NOIp模拟题要简单哦.. 友好的生物 应该是一道简单题,但是机房只有辉神一个人想到正解似乎. 被我kd-tree水过去了(这不是kd-tree的裸题吗???(不是)) / ...
- [Z] 北大一牛人生物转申CS的经历
http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...
随机推荐
- linux 解压命令大全[转]
本文转自: http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包: ...
- 汽车后市场:数据入口在哪里?不看你就OUT啦!
当前中国汽车后服务市场基本可分七个大类:包括养护.维修.改装.二手车.汽车配件.相关电商及金融保险等,汽车后市场整个产业链对数据服务都有刚性需求. 数据能为行业服务提高效率,提升商家对于客户以及业务的 ...
- 微信小程序如何性能测试?
背景: 微信小程序作为手机页面的一种,相比传统的网站和应用来说存在比较特殊的地方: 1. 开发者往往对程序做了限制,只能通过微信客户端访问 2. 通过微信的Oauth进行认证 这样往往会导致我们的 ...
- python操作符及其循环语句(非常全)
//2018.10.14 1. Windows + R可以直接进行运行cmd 2. Random.randint(a,b):产生a-b的任意一个整数,在IDLE里面运行时需要注意在前面写好调用impo ...
- 【转】unity 热更新思路和实现
声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确 ...
- [转载]启动tomcat时,一直卡在Deploying web application directory这块的解决方案
转载:https://www.cnblogs.com/mycifeng/p/6972446.html 本来今天正常往服务器上扔一个tomcat 部署一个项目的, 最后再启动tomcat 的时候 发现项 ...
- Fluent Python: Classmethod vs Staticmethod
Fluent Python一书9.4节比较了 Classmethod 和 Staticmethod 两个装饰器的区别: 给出的结论是一个非常有用(Classmethod), 一个不太有用(Static ...
- codeforces 295C Greg and Friends(BFS+DP)
One day Greg and his friends were walking in the forest. Overall there were n people walking, includ ...
- 【转】NodeJS on Nginx: 使用nginx反向代理处理静态页面
最近OurJS后台已经从纯node.js迁移到了Nginx+NodeJS上来了,感觉性能提升了不少,特与大家分享. Nginx ("engine x") 是一个高性能的 HTTP ...
- 【转】Backbone.js学习笔记(二)细说MVC
文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...