[Tyvj1114 搭建双塔]

[题目来源]:VIjos

[关键字]:动态规划

[题目大意]:用n块水晶搭建两个塔,要求双塔必须一样高,问最大能达到的高度为多少。

//============================================================================================================

[分析]:用f[i,j]表示使用前i个水晶,建起高度差为j的双塔时,较矮的那个塔的最大高度是多少。这样的话,对于每一块水晶都有三种决策,不使用,放到高塔上,放到矮塔上.而放到矮塔上会有两种情况,一是使矮塔的高度超过了高塔,二是没有超过。具体如下:
if f[1-t,j]>f[t,j] then f[t,j]:=f[1-t,j];//不使用
if f[1-t,j]>f[t,j+h[i]] then f[t,j+h[i]]:=f[1-t,j];//高塔
if j>=h[i]//判断会不会使矮塔变成高塔
 then
 begin
  if f[1-t,j]+h[i]>f[t,j-h[i]] then f[t,j-h[i]]:=f[1-t,j]+h[i];
 end//不会
 else
 begin
  if f[1-t,j]+j>f[t,h[i]-j] then f[t,h[i]-j]:=f[1-t,j]+j;
 end;//会
 这样DP就可以了。边界是f[0,0]:=0;目标是f[n,0];
//出自tyvj1114题解

//==========================================================================================================

[代码]:

View Code
 1 program Project1;
2 var
3 n: longint;
4 a, s: array[0..200] of longint;
5 f: array[0..200,0..2500] of longint;
6
7 procedure init;
8 var
9 i: longint;
10 begin
11 readln(n);
12 for i := 1 to n do read(a[i]);
13 for i := 1 to n do s[i] := s[i-1]+a[i];
14 end;
15
16 procedure work;
17 var
18 i, j: longint;
19 begin
20 fillchar(f,sizeof(f),200);
21 f[0,0] := 0;
22 for i := 1 to n do
23 for j := 0 to s[i] do
24 begin
25 if f[i-1,j] > f[i,j] then f[i,j] := f[i-1,j];
26 if f[i-1,j] > f[i,j+a[i]] then f[i,j+a[i]] := f[i-1,j];
27 if j >= a[i] then
28 if f[i-1,j]+a[i] > f[i,j-a[i]] then f[i,j-a[i]] := f[i-1,j]+a[i];
29 if j < a[i] then
30 if f[i-1,j]+j > f[i,a[i]-j] then f[i,a[i]-j] := f[i-1,j]+j;
31 end;
32 if f[n,0] > 0 then writeln(f[n,0]) else writeln('Impossible');
33 end;
34
35 begin
36 assign(input,'c:\1.in');reset(input);
37 assign(output,'c:\1.out');rewrite(output);
38 init;
39 work;
40 close(input);
41 close(output);
42 end.

 

 

转载于:https://www.cnblogs.com/procedure2012/archive/2011/11/09/2243319.html

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

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

相关文章

echarts 时间曲线图_制作按时间每秒实时更新的echarts折线图

有时候我们的图表需要根据后台数据每秒实时更新&#xff0c;那么用echarts应该如何实现呢&#xff1f;2020.11.27发现篇文章很多人关注&#xff0c;但之前写的不是很清楚&#xff0c;今天更新下&#xff0c;大家有问题可以也留言讨论。这是一个仿win10任务管理器的设备信息监控…

linux lua socket编程,CentOs 安装lua,luasocket

一、centos安装Lua3)个人在这里选择使用5.1版本的*下载wget http://www.lua.org/ftp/lua-5.1.5.tar.gz--2013-10-14 16:23:17-- http://www.lua.org/ftp/lua-5.1.5.tar.gzResolving www.lua.org... 89.238.129.35, 2a02:40:41::5Connecting to www.lua.org|89.238.129.35|:80.…

Python 2.7 Tutorial —— 流程控制

.. _tut-morecontrol: ****************************************** More Control Flow Tools 深入流程控制 ****************************************** Besides the :keyword:while statement just introduced, Python knows the usual control flow statements known from …

一厕难求!NASA悬赏三万五千美元,只为一个能在月球上用的马桶

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;大数据文摘作者&#xff1a;刘俊寰如今逐渐步入智能生活时代&#xff0c;智能化产品也逐渐普及到我们生活中&#xff0c;有的智能马桶&#xff0c;不仅可以识别大便监测你的生活状况&#xff0c;还可以识别肛纹辨别不同身…

我很高兴地宣布我正在编写第一本官方ABP图书

掌握ABP框架通过实施软件开发最佳实践来构建可维护的 .NET 解决方案从 ABP 框架的创建者那里学习如何构建现代 Web 应用程序主要特点使用 ABP 中的最佳工具构建强大、可维护和可扩展的软件解决方案了解如何在您的 Web 应用程序中实施 SOLID 原则和领域驱动设计了解 ABP 框架如何…

python join_python join 和 split的常用使用方法

python join 和 split的常用使用方法 python join 和 split方法的使用,join用来连接字符串&#xff0c;split恰好相反&#xff0c;拆分字符串的。 1.join用法示例 >>>li [my,name,is,bob] >>> .join(li) my name is bob >>>_.join(li) my_name_is_…

layui 如何去dom_javascript 怎么去引用layui里面的方法

现在&#xff0c;我有一个JSP页面&#xff0c;里面同时存在普通javascript的代码和layui的代码&#xff0c;我想调用layui里面的方法&#xff0c;该怎么引用&#xff1f;这是javascript代码&#xff1a;var treeSetting {data: {simpleData: {enable: true,idKey: "id&qu…

ExtJs Grid分页时序号自增的实现,以及查询以后的序号的处理

ExtJs Grid分页时&#xff0c;默认情况下每页的序号都是从1起始的&#xff0c;这往往不符合我们的习惯。这里实现了序号的自动增加。如&#xff1a;每页20条第一页从1开始&#xff0c;第二页从21条开始。先定义一个全局变量如record_start 0,这里记得赋初始值主要是考虑第一次…

linux的自定义input,linux键值到Android键值的转换与自定义

首先要确定按键输入设备是对应/dev/input目录下哪个event&#xff0c;根据VID PID匹配对应的kl文件&#xff0c;可通过如下命令 cat /proc/bus/input/devices 查看设备信息framework层通过.kl文件将获取的键值转换成实际按键含义后&#xff0c;又会通过KeycodeLabel转换成相应的…

原来历史人物的英文名竟然叫这些,太好笑了吧哈哈哈哈哈

全世界只有3.14 % 的人关注了爆炸吧知识我们学了这么多年的英语你有英文名字吗&#xff1f;如果有一天&#xff0c;古人穿越到了现在那么他们的英文名字是……汉武帝&#xff1a;Woody汉文帝&#xff1a;Wendy▽朱棣&#xff1a;judy▽朱熹&#xff1a;Juicy▽周瑜&#xff1a;…

10款优秀的跨平台免费生产力软件[转]

因为多数人并不需要OpenOffice.org那样整合了字处理、表格、幻灯片制作等完整的生产力工具&#xff0c;他们只需要其中一项功能&#xff1a;字处理软件AbiWord 2.8.6&#xff1b;开源桌面排版系统Scribus 1.3.8&#xff1b;整合浏览器、电子邮件、IRC和HTML编辑器的SeaMonkey 2…

From Apprentice To Artisan 翻译 19

为什么80%的码农都做不了架构师&#xff1f;>>> 上一篇 Interface Segregation Principle 接口隔离原则 Introduction 介绍 The Interface Segregation principle states that no implementation of an interface should be forced to depend on methods it does n…

Winform模拟post请求和get请求登录网站

引言最近有朋友问如何用winform模拟post请求&#xff0c;然后登录网站&#xff0c;稍微想了一下&#xff0c;大致就是对http报文的相关信息的封装&#xff0c;然后请求网站登录地址的样子。发现自己的博客中对这部分只是也没总结&#xff0c;就借着这股风&#xff0c;总结一下h…

python eval函数_Python eval 函数妙用

作者博文地址&#xff1a;https://www.cnblogs.com/liu-shuai/ eval 功能&#xff1a;将字符串str当成有效的表达式来求值并返回计算结果。 语法&#xff1a; eval(source[, globals[, locals]]) -> value 参数&#xff1a; source&#xff1a;一个Python表达式或函数compil…

易宝支付碰到 交易签名无效问题

今天在易宝支付问题上给纠结了半天&#xff0c;将模块加进文件中&#xff0c;设置好商户ID与密钥&#xff0c;加上对应的域名&#xff0c;是可以实现在线支付问题。但我现在要的功能是要按不同的分组&#xff0c;去读取不同的商户ID与密钥&#xff0c;因些&#xff0c;我将这些…

那些上海滩的金融传奇,或许都开始于一份PPT

全世界只有3.14 % 的人关注了爆炸吧知识 我从07年开始在上海做商务PPT定制&#xff0c;从工作室一步一步到国内首家PPT定制公司&#xff0c;从电脑前到讲台前做培训&#xff0c;算是见证了中国PPT行业的发展。在我大大小小做过的项目里&#xff0c;印象最深的莫过于“靠PPT拿下…

Android 控件之RatingBar评分条

RatingBar是Adnroid中的评分条。效果挺得的 源码下载 一、概述 RatingBar是SeekBar和ProgressBar的扩展&#xff0c;用星星来评级。使用的默认大小RatingBar时&#xff0c;用户可以触摸/拖动或使用键来设置评分&#xff0c;它有俩种样式&#xff08;大、小&#xff09;&#xf…

c语言字符比较思路,C语言讲解思路资料

《C语言讲解思路资料》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言讲解思路资料(10页珍藏版)》请在人人文库网上搜索。1、C语言讲解思路1,认识C语言的组成: #in elude main ()printf(Hello, worldn);构成&#xff1a;包含预定义文件、函数体、主函数 一个C程…

3d目标检测_CVPR 2020 |基用于3D目标检测的层级图网络

论文&#xff1a;A Hierarchical Graph Network for 3D Object Detection on Point Clouds论文地址&#xff1a;https://www.aminer.cn/pub/5eccb534e06a4c1b26a834c7?confcvpr2020由于大多数现有的点云对象检测方法不能充分适应点云的特征(例如稀疏性)&#xff0c;所以一些关…

C# datagridview、datagrid、GridControl增加行号

01—WinForm中datagridview增加行号在界面上拖一个控件dataGridView1&#xff0c;在datagridview添加行事件中添加如下代码&#xff1a;private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e){try{for (int i 0; i < dataGridView1.Rows…