[51nod1614]刷题计划
大赛将至,摆在你面前的是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]刷题计划的更多相关文章
- Codeforces刷题计划
Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...
- BZOJ第一页刷题计划
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...
- 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划
[NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...
- leetcode每日刷题计划-简单篇day5
刷题成习惯以后感觉挺好的 Num 27 移除元素 Remove Element 跟那个排序去掉相同的一样,len标记然后新的不重复的直接放到len class Solution { public: i ...
- leetcode每日刷题计划-简单篇day3
收到swe提前批面试hhh算是ep挂了的后续 努力刷题呀争取今年冲进去! Num 21 合并两个有序链表 Merge Two Sorted Lists 注意新开的链表用来输出结果的是ListNode ...
- leetcode每日刷题计划-简单篇day1
orzorz开始刷题 争取坚持每周平均下来简单题一天能做两道题吧 非常简单的题奇奇怪怪的错误orz越不做越菜 Num 7 整数反转 Reverse Integer 刚开始多给了一个变量来回折腾占地方, ...
- NOI Online 赛前刷题计划
Day 1 模拟 链接:Day 1 模拟 题单:P1042 乒乓球 字符串 P1015 回文数 高精 + 进制 P1088 火星人 搜索 + 数论 P1604 B进制星球 高精 + 进制 D ...
- Noip刷题计划
写在前面 去年也想刷10年NOIP来着..结果刷到13年就没动力了233... 今年一定要完成目标啊!! "愿你明日重生,醒时心存冬阳" 2018年 题目 首次得分 出错原因 考点 ...
- Leetcode 刷题计划
Two Sum 21.4% Medium Given an array of integers, return indices of the two numbers such that t ...
随机推荐
- iOS 通过UIControl,自定义控件
如:自定义一个可以点击的 图文 #import <UIKit/UIKit.h> @interface UD_Button : UIControl @property(nonatomic,s ...
- PE格式第三讲扩展,VA,RVA,FA(RAW),模块地址的概念
PE格式第三讲扩展,VA,RVA,FA的概念 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (vi ...
- spring_boot_pay支付宝,微信,银联支付详细代码案例
spring-boot-pay 支付服务:支付宝,微信,银联详细代码案例(除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试),项目启动前请仔细阅读 注意事项 . 友情提示 ...
- [编织消息框架][netty源码分析]1分析切入点
在分析源码之前有几个疑问 1.BOSS线程如何转交给handle(业务)线程2.职业链在那个阶段执行3.socket accept 后转给上层对象是谁4.netty控流算法 另外要了解netty的对象 ...
- 转:java 可设置最大内存
测试方法:在命令行下用 java -XmxXXXXM -version ,比如:java -Xmx1024M -version命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大 ...
- selenium WebDriver 八种定位方式源码
/* * 多种元素定位方式 */ package com.sfwork; import java.util.List; import org.openqa.selenium.By; import or ...
- Python中的单例模式的几种实现方式的优缺点及优化
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- jQuery 效果函数(三)
方法 描述 animate() 对被选元素应用“自定义”的动画 clearQueue() 对被选元素移除所有排队的函数(仍未运行的) delay() 对被选元素的所有排队函数(仍未运行)设置延迟 de ...
- eclipse启动tomcat不能访问解决
tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomcat,在 ...
- HTTP首部解析
HTTP首部解析 转载请注明出处:HTTP首部解析 文章目录 1.与HTTP协议相关的Web服务器 2.HTTP首部 与HTTP协议相关的Web服务器 在说明HTTP首部相关知识之前,有必要先了解一下 ...