大赛将至,摆在你面前的是n道题目,第 i(1 ≤ i ≤ n) 道题目能提升 ai 点智力值,代码量为 bi KB,无聊值为 ci ,求至少提升m点智力值的情况下,所做题目代码量之和*无聊值之和最小为多少。

 Input
  第一行两个整数n,m(0<n<=400)
  接下来n行每行三个整数,ai,bi,ci(0<bi,ci<=1000,0<ai<=800)。
  0<m<=Σai<=800
 Output
  一个数,至少提升m点智力值的情况下,所做题目代码量之和*无聊值之和的最小值。

  思路和求最小乘积生成树一样。。。不同的就是具体计算的时候是01背包而不是求mst。。。

  大概就是将一个方案的b值之和看成X坐标,c值之和看成Y坐标。那么答案的方案肯定就在所有点组成的凸包的左下部分上。

  直接丢题解网址了...http://www.51nod.com/onlineJudge/problemSolution.html#!problemId=1614

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstdlib>
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define d double
#define ld long double
const int maxn=; struct zs{int x,y;ll v;}f[maxn],a[maxn];
ll ANS,inf=1ll<<;int SMA;
int A[maxn];
int i,j,k,n,m; int ra,fh;char rx;
inline int read(){
rx=getchar(),ra=,fh=;
while(rx<''&&rx!='-')rx=getchar();
if(rx=='-')fh=-,rx=getchar();
while(rx>='')ra=ra*+rx-,rx=getchar();return ra*fh;
} //bool operator <(zs a,zs b){return a.v<b.v;}
zs operator +(zs a,zs b){return (zs){a.x+b.x,a.y+b.y,a.v+b.v};}
zs operator -(zs a,zs b){return (zs){a.x-b.x,a.y-b.y,a.v-b.v};}
inline int cross(zs a,zs b){return a.x*b.y-a.y*b.x;} inline void upd(zs &a,zs &b,zs &c){if(b.v+c.v<a.v)a=b+c;}
inline zs get(){
register int i,j,k;zs ans=(zs){,,inf};
for(i=;i<=SMA;i++)f[i].v=inf;
for(i=;i<=n;i++)
for(j=SMA,k=j-A[i];j>=A[i];j--,k--)upd(f[j],f[k],a[i]);
for(j=m;j<=SMA;j++){
if(f[j].v<ans.v)ans=f[j];
if(1ll*f[j].x*f[j].y<ANS)ANS=1ll*f[j].x*f[j].y;
}
return ans;
}
inline void run(zs A,zs B){
for(register int i=;i<=n;i++)a[i].v=a[i].x*(A.y-B.y)+a[i].y*(B.x-A.x);
zs C=get();
if(cross(B-A,C-A)>=)return;
run(A,C),run(C,B);
} int main(){
n=read(),m=read();
for(i=;i<=n;i++)A[i]=read(),a[i].x=read(),a[i].y=read(),SMA+=A[i]; ANS=inf;
for(i=;i<=n;i++)a[i].v=a[i].x;zs A=get();
for(i=;i<=n;i++)a[i].v=a[i].y;zs B=get();//printf("sty:%d (%d,%d) stx:%d (%d,%d)\n",A.v,A.x,A.y,B.v,B.x,B.y);
//printf("ANS:%lld\n",ANS);
run(A,B);
printf("%lld\n",ANS);
}

[51nod1614]刷题计划的更多相关文章

  1. Codeforces刷题计划

    Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...

  2. BZOJ第一页刷题计划

    BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...

  3. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  4. leetcode每日刷题计划-简单篇day5

    刷题成习惯以后感觉挺好的 Num 27 移除元素 Remove Element 跟那个排序去掉相同的一样,len标记然后新的不重复的直接放到len class Solution { public: i ...

  5. leetcode每日刷题计划-简单篇day3

    收到swe提前批面试hhh算是ep挂了的后续 努力刷题呀争取今年冲进去! Num 21 合并两个有序链表 Merge Two Sorted Lists 注意新开的链表用来输出结果的是ListNode ...

  6. leetcode每日刷题计划-简单篇day1

    orzorz开始刷题 争取坚持每周平均下来简单题一天能做两道题吧 非常简单的题奇奇怪怪的错误orz越不做越菜 Num 7 整数反转 Reverse Integer 刚开始多给了一个变量来回折腾占地方, ...

  7. NOI Online 赛前刷题计划

    Day 1 模拟 链接:Day 1  模拟 题单:P1042 乒乓球  字符串 P1015 回文数  高精 + 进制 P1088 火星人  搜索 + 数论 P1604 B进制星球  高精 + 进制 D ...

  8. Noip刷题计划

    写在前面 去年也想刷10年NOIP来着..结果刷到13年就没动力了233... 今年一定要完成目标啊!! "愿你明日重生,醒时心存冬阳" 2018年 题目 首次得分 出错原因 考点 ...

  9. Leetcode 刷题计划

    Two Sum    21.4%    Medium Given an array of integers, return indices of the two numbers such that t ...

随机推荐

  1. iOS NSString 文本不同的颜色 标题+文本字体大小 行间距/删除不需要的字符 /以及自适应高度

    #import <Foundation/Foundation.h> @interface TextsForRow : NSObject @property(nonatomic,copy)N ...

  2. 每周.NET前沿技术文章摘要(2017-05-24)

    汇总国外.NET社区相关文章,覆盖.NET ,ASP.NET等内容: .NET Free eBook/Guide on '.NET Microservices – Architecture for C ...

  3. ArcGIS 网络分析[2.2] 服务区分析

    什么是服务区? 我们先提一个很常见的社会现象:一个医院,如果要发起抢救,那么10分钟内能去多远? 时间就是生命,当结合道路网的阻力进行最短路径分析时,得到的可达的覆盖区域,这个区域就是服务区. 服务区 ...

  4. 虚拟机创建流程中neutron代码分析(一)

    前言: 在openstack的学习当中有一说法就是网络占学习时间的百分之七十.这个说法或许有夸大的成分,但不可否认的是openstack中的 网络是及其重要的部分,并且难度也是相当大.试图通过nova ...

  5. 自建MySQL5.6数据库查询优化

    1.优化前查询速度 2.优化后查询速度 3.优化配置 innodb_buffer_pool_size=4Ginnodb_log_file_size=4Gmax_connections=1024inno ...

  6. ES6 函数的扩展2

    8.2 rest参数 ES6引入rest参数(形式为"-变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象了. arguments对象并没有数组的方法,re ...

  7. thinkphp 3.1.3 redis 只能读取 无法写入的问题

    找到thinkphp的目录 thinkphp\Extend\Driver\Cache    下面的Redis    大概在81行足有 // if(is_int($expire)) { // redis ...

  8. UTC 通用格式时间 转换为 时间戳,并格式化为2017-01-01 12:00:00

    在使用阿里云oss获取文件列表是,发现时间格式是这样的 2016-09-20T13:45:04.000Z (尼玛,是什么鬼), 经过度娘的解答,发现这就是传说中的 UTC通用格式时间 问题来了,怎么转 ...

  9. Netty入门之HelloWorld

    Netty系列入门之HelloWorld(一) 一. 简介 Netty is a NIO client server framework which enables quick and easy de ...

  10. JQuery.lazyload 图片延迟加载

    1.引入  jquery.lazyload.js 2. 延时加载的方式 <script type="text/javascript">  $(function() {  ...