博客
关于我
AtCoder Beginner Contest 100 D - Patisserie ABC[思维]
阅读量:535 次
发布时间:2019-03-08

本文共 994 字,大约阅读时间需要 3 分钟。

题意:n个物品,每个物品有三个属性a,b,c(可能正,可能负) .现在取m个,使得|sigma a| + |sigma b| + |sigma c| 最大化

思路:考虑绝对值里的符号.每个绝对值里的符号取值无非有2种情况. 趋向   极负/极正  .那么就有2*2*2=8种符号可能.每次排序nlogn,按i*a+j*b+c*k排序.8种情况必有一种情况满足要求

#include
#define PI acos(-1.0)#define pb push_back#define F first#define S secondusing namespace std;typedef long long ll;const int N=1e5+5;//ll a[N],sum[N];struct node{ ll a,b,c;}p[N];int n,m,i,j,k;bool cmp(node x,node y){ return x.a*i+x.b*j+x.c*k>y.a*i+y.b*j+y.c*k;}int main(void){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin >> n>>m; ll ans=0; for(int i=1;i<=n;i++) cin >>p[i].a>>p[i].b >>p[i].c; for( i=-1;i<=1;i+=2){// i,j,k分别代表绝对值里的符号趋向 for( j=-1;j<=1;j+=2){ for( k=-1;k<=1;k+=2){ sort(p+1,p+1+n,cmp); ll t[4]={0}; for(int te=1;te<=m;te++) t[1]+=p[te].a,t[2]+=p[te].b,t[3]+=p[te].c; ans=max(ans,t[1]*i+t[2]*j+t[3]*k); } } } cout << ans << endl; return 0;}

转载地址:http://xykiz.baihongyu.com/

你可能感兴趣的文章
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>
MySQL单实例或多实例启动脚本
查看>>
MySQL压缩包方式安装,傻瓜式教学
查看>>
MySQL原理、设计与应用全面解析
查看>>
MySQL原理简介—1.SQL的执行流程
查看>>
MySQL参数调优详解
查看>>
mysql参考触发条件_MySQL 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
MySql各种查询
查看>>
mysql同主机下 复制一个数据库所有文件到另一个数据库
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>