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,一经查实,立即删除!

相关文章

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

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

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;…

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;请不要着…

域名还能绑定动态IP?看完又涨知识了!!

点击上方蓝色“冰河技术”&#xff0c;关注并选择“设为星标”持之以恒&#xff0c;贵在坚持&#xff0c;每天进步一点点&#xff01;作者个人研发的在高并发场景下&#xff0c;提供的简单、稳定、可扩展的延迟消息队列框架&#xff0c;具有精准的定时任务和延迟队列处理功能。…

java 及时释放内存_JMM(一):初识Java内存模型

在并发编程中&#xff0c;线程之间的通信是一个很关键的问题&#xff0c;而该问题解决方案主要可分为两大类&#xff1a;消息传递、共享内存。前者有以Erlang语言为代表的Actor模型&#xff0c;而后者中典型的则是Java语言。对于消息传递机制而言&#xff0c;线程之间必须通过发…

电脑维修知识:电脑常见故障维修大全及解决方法

电脑已经成为我们学习生活娱乐必不可少的设备了&#xff0c;用得时间久了难免会遇到小故障&#xff0c;今天我们一起来看下遇到常见的电脑方面的小故障&#xff0c;我们应该如何去自己检测和维修吧。电脑检测故障我们还是要从电脑的几大硬件开始检查起。1、CPU打开机箱查看CPU风…

工程图样中粗实线的用途_图纸天天画,粗实线和细实线的线宽比例是多少?2:1还是3:1?...

点击上方头条号“机械设计一点通”关注我们&#xff0c;每天学习一个机械设计相关知识点我们知道&#xff1a;机械制图中为了表示不同内容&#xff0c;并能分清主次&#xff0c;必须使用不同线型。图线的线型由线宽和线素长度等构成&#xff0c;机械制图中各种线型都有相应宽度…

STM32F4_USART配置及细节描述

Ⅰ、概述 关于USART串口通信&#xff0c;可以说是MCU的标配。不管是在实际项目应用中&#xff0c;还是在开发过程中&#xff0c;它都起着很重要的作用。 在项目应用中我们常常使用UART串口进行通信&#xff0c;根据通信的距离及稳定性&#xff0c;还选择添加RS232、RS485等对UA…

腾讯面试:SaaS多租户,如何设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 多租户设计&#xff0c;如何 技术选型&#xff…