HDU5697 刷题计划 dp+最小乘积生成树

分析:就是不断递归寻找靠近边界的最优解

学习博客(必须先看这个):

1:http://www.cnblogs.com/autsky-jadek/p/3959446.html

2:http://blog.csdn.net/u013849646/article/details/51524748

注:这里用的最小乘积生成树的思想,和dp结合

     每次找满足条件的最优的点,只不过BZOJ裸题的满足条件是形成一棵树

     这个题是大于m,生成树借用最小生成树进行求解最优,大于m用dp进行求解最优

#include <stdio.h>
#include <algorithm>
using namespace std;
const int N = 8e2+5;
typedef long long LL;
struct point{int x, y;point(int x=0,int y=0):x(x),y(y){}point operator -(const point &rhs)const{return point(x-rhs.x,y-rhs.y);}point operator +(const point &rhs)const{return point(x+rhs.x,y+rhs.y);}
};
LL cross(point a,point b){return 1ll*a.x*b.y-1ll*a.y*b.x;
}
int n,m,sum;
int a[N],b[N],c[N];
point p[N];
LL dp[N],f[N],ans;
point get(){p[0]=point(0,0),dp[0]=0;for(int i=1;i<=sum;++i)dp[i]=1LL<<60;for(int i=1;i<=n;++i){for(int j=sum;j>=a[i];--j){if(dp[j]>dp[j-a[i]]+f[i]){dp[j]=dp[j-a[i]]+f[i];p[j]=p[j-a[i]]+point(b[i],c[i]); }}}int ret=m;LL tot=1LL*p[ret].x*p[ret].y;for(int i=m+1;i<=sum;++i){if(dp[i]<dp[ret]||dp[i]==dp[ret]&&1ll*p[i].x*p[i].y<tot)ret=i,tot=1ll*p[i].x*p[i].y;}ans=min(ans,tot);return p[ret];
}
void solve(point A,point B){for(int i=1;i<=n;++i)f[i]=1ll*c[i]*(B.x-A.x)+1ll*b[i]*(A.y-B.y);point C=get();if(cross(B-A,C-A)>=0)return;solve(A,C);solve(C,B);
}
int main(){while(~scanf("%d%d",&n,&m)){sum=0;for(int i=1;i<=n;++i){scanf("%d%d%d",&a[i],&b[i],&c[i]);sum+=a[i];}ans=1LL<<60;for(int i=1;i<=n;++i)f[i]=b[i];point A=get();for(int i=1;i<=n;++i)f[i]=c[i];point B=get();solve(A,B);printf("%I64d\n",ans);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/shuguangzw/p/5634463.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pos加盟申请php_ThinkPHP万能表单程序源码 报名预约加盟申请调查表单程序源码

平台声明&#xff1a;本商品由平台商家发布&#xff0c;如果本商品源码侵犯了您的利益请在上方价格右侧或联系平台客服举报。微信表单-实现各行业的报名、预约、加盟申请、问卷调查等应用01.自定义表单模型(自定义字段支持字符串、数字、单选、多选、下拉、日历、时间、邮件、省…

分析Java中的三种不同变量的区别

1、首先分析Java中的三种不同变量的区别&#xff0c;如下表所示 概念默认值其他类变量 也叫静态变量&#xff0c;是类中独立于方法之外的变量 用static 修饰 有默认初始值&#xff0c;系统自动初始化。 如boolean默认为false. 可以被public&#xff0c;protect&#xff0c;pr…

分享我常用的5个免费的在线 SQL 数据库环境,简直太方便了!

大今天给大家分享几个在线的免费 SQL 运行环境&#xff0c;也就是在线数据库。这些网站可以帮助我们快速运行一些 SQL 语句的测试或者验证&#xff0c;同时还可以在网络上进行分享&#xff0c;关键不需要自己安装数据库。SQL FiddleSQL Fiddle 提供了 MySQL、Oracle、PostgreSQ…

python刷题用leet_GitHub - Yolymaker/leetcode-python: 利用python分类刷leetcode题目

leetcode分类高效刷题 leetcode是一个很好的学习算法的一个online judge的网站&#xff0c;通过刷题能够快速提升自己的算法能力。但是令大家都头疼的就是&#xff0c;怎么能够高效的通过leetcode刷题掌握算法的做题技巧&#xff0c;并且顺利通过面试。 刷题的时候千万不要怀疑…

36岁 计算机博士,36岁考博士

博士生在学习期间&#xff0c;须在国内外核心期刊上正式发表与学位论文紧密相关(构成学位论文的主要组成部分)的学术论文且积分必须在6分(含6分)以上方可申请授予学位。以上发表的论文应以**大学商学院为第一署名单位&#xff0c;博士生为第一作者或导师为第一作者、博士生为第…

OPTIMIZE TABLE

INNODB 不支持mysql> OPTIMIZE TABLE t; ----------------------------------------------------------------------------------------------- | Table | Op | Msg_type | Msg_text | ------------------…

r语言 面板数据回归_R语言_018回归

回归分析是统计学的核心。它其实是一个广义的概念&#xff0c;指那些用一个或多个预测变量来预测响应变量的方法。通常&#xff0c;回归分析可以用来挑选与响应变量相关的解释变量&#xff0c;可以描述两者的关系&#xff0c;也可以生成一个等式&#xff0c;通过解释变量来预测…

Integer对象范围(-128-127)之间(Integer. valueOf()方法)

1.Integer. valueOf()方法的作用 Integer. valueOf()可以将基本类型int转换为包装类型Integer&#xff0c;或者将String转换成Integer&#xff0c;String如果为Null或“”都会报错 看下面代码示例 取值为127时 取值为128时 为什么会是这样呢&#xff1f; 首先&#xff0c;我们…

操作系统基础:进程知识笔记(三)

1、死锁概念知识 计算机中存在许多互斥资源&#xff08;打印机&#xff09;、软件资源&#xff08;进程表、临界区&#xff09;如果两个进程同时调用打印机&#xff0c;或同时进入临界区必然会出现问题。 死锁&#xff1a;指两个以上的进程互相要求对方已经占有的资源导致无法继…

垂直梯形校正画质损失多少_梯形校正功能是怎么实现的?其中可大有学问

梯形校正这个概念&#xff0c;想必大部分投影仪用户早已耳熟能详。所谓的梯形校正&#xff0c;指的是当我们的投影仪位置摆放不正时&#xff0c;投射出来的画面会是一个梯形&#xff0c;这时候需要通过投影仪的梯形校正功能将画面调整为可以正常观看的矩形。虽然目前市场上的大…

操作系统基础:存储管理知识笔记(一)

1、存储器基础知识 存储器管理的对象是主存或内存&#xff0c;存储器是计算机系统中非常关键的资源&#xff0c;用来存放各种信息的主要场所。存 储器管理功能主要包括&#xff1a;主存空间的分配和回收、提供主存利用率、扩充主存、主存信息的保护。 2、存储器结构 存储器结构…

asp点击按钮sql列求和_助你2020晋级互联网大数据阵营(一):轻轻松松学SQL

毫不负责任的说&#xff0c;你和数据科学家最大的鸿沟&#xff0c;就差一个SQL语言&#xff1a;)入门后&#xff0c;后面的事情就简单了为了帮大家尽快入门Hive SQL、学会提数和分析&#xff0c;实现在大数据领域大干一场的愿望&#xff0c;帮你准备好了数据&#xff0c;准备好…

幂等和高并发在电商系统中的使用

在Java web项目开发中&#xff0c;经常会听到在做订单系统中生成订单的时候&#xff0c;要做幂等性控制和并发控制&#xff0c;特对此部分内容作出总结&#xff0c;在高并发场景下&#xff0c;代码层面需要实现并发控制&#xff1b;但是幂等性&#xff0c;其实更多的是系统的接…

@transactional注解失效情况

先来了解一下Transactional注解事务的特性吧&#xff0c;可以更好排查问题 1、service类标签(一般不建议在接口上)上添加Transactional&#xff0c;可以将整个类纳入spring事务管理&#xff0c;在每个业务方法执行时都会开启一个事务&#xff0c;不过这些事务采用相同的管理方…

计算机c盘隐藏了怎么办,win7怎么隐藏c盘 win7c盘被隐藏了怎么解除

很多的电脑用户担心其他用户在使用电脑时修改c盘中的重要文件&#xff0c;所以会将c盘设置为隐藏&#xff0c;那么大家知道在win7系统中怎么隐藏c盘吗?方法很简单&#xff0c;下面小编为大家带来win7隐藏c盘的详细教程&#xff0c;不知道怎么隐藏的朋友可以查看下面的教程学习…

操作系统基础:存储管理知识笔记(二)

一、分页存储管理 1、分页存储管理介绍 1.1 分页原理 页&#xff1a;将一个进程的地址空间划分为若干个大小相等的区域称为页。 块、页框&#xff1a;主存空间划分成与页相同的若干个物理块。 1.2 地址结构 分页系统地址结构&#xff1a;前一部分为页号&#xff1b;后一部分为页…

人工智能 信道估计 深度学习_DEMO演示|基于IVP02D 人工智能工作站的深度学习引擎,实现人群热力估计...

近年来&#xff0c;随着深度学习在计算机视觉领域获得广泛应用&#xff0c;算法框架也日渐成熟&#xff0c;例如基于深度神经网络的人群密度分析&#xff0c;通过自动学习能获得更有效的人群特征&#xff0c;相较于传统方法取得了一定的提高。AI小知识人群密度分析&#xff08;…

SPSS学习中涉及的统计知识

1、独立性检验 2、方差分析中方差齐性检验 3、非参数检验 4、p-p图 5、卡方检验&#xff1a;研究分类因变量与分类自变量的关系。独立性检验 6、t检验&#xff1a;研究连续因变量与分类自变量的关系。 7、哑变量 总结&#xff1a; 因变量连续&#xff0c;自变量连续&#xff0c…

vscode kite插件_微软发布 VS Code Python 插件 7 月更新

微软发布了 7 月的 Visual Studio Code Python 扩展更新&#xff0c;此版本总共修复了 51 个问题&#xff0c;其中包括&#xff1a;支持新的语言服务器&#xff1a;PylanceGather 扩展将 Notebook 导出为 HTML 和 PDF调试器的反向连接支持新的语言服务器&#xff1a;PylancePyl…

360浏览器打不开微信的连接服务器,上午还能打开,下午360浏览器打不开微信公 – 手机爱问...

2011-08-27ie&#xff0c;搜狗&#xff0c;谷歌浏览器都打不开&#xff0c;说打不开ipad说服务器超时是新浪在更新设备吗&#xff1f;一般你能进入爱问就可以进入邮箱&#xff0c;下面的方法看看(如果你是铁通的可能是铁通的问题)。可能是服务器故障引起的&#xff0c;请不要着…