每日一九度之 题目1030:毕业bg

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:2046

解决:894

题目描述:
每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”。参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个 bg定义一个“快乐度”。现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最 大的快乐度。

    例如有4场bg:
    第1场快乐度为5,持续1小时,发起人必须在1小时后离开;
    第2场快乐度为10,持续2小时,发起人必须在3小时后离开;
    第3场快乐度为6,持续1小时,发起人必须在2小时后离开;
    第4场快乐度为3,持续1小时,发起人必须在1小时后离开。
    则获得最大快乐度的安排应该是:先开始第3场,获得快乐度6,在第1小时结束,发起人也来得及离开;再开始第2场,获得快乐度10,在第3小时结束,发起人正好来得及离开。此时已经无法再安排其他的bg,因为发起人都已经离开了学校。因此获得的最大快乐度为16。

    注意bg必须在发起人离开前结束,你不可以中途离开一场bg,也不可以中途加入一场bg。
又因为你的人缘太好,可能有多达30个团体bg你,所以你需要写个程序来解决这个时间安排的问题。
输入:
测试输入包含若干测试用例。每个测试用例的第1行包含一个整数N (<=30),随后有N行,每行给出一场bg的信息:
    h l t
    其中 h 是快乐度,l是持续时间(小时),t是发起人离校时间。数据保证l不大于t,因为若发起人必须在t小时后离开,bg必须在主人离开前结束。

    当N为负数时输入结束。
输出:

    每个测试用例的输出占一行,输出最大快乐度。

样例输入:
3
6 3 3
3 2 2
4 1 3
4
5 1 1
10 2 3
6 1 2
3 1 1
-1
样例输出:
7
16

第一眼的感觉就是这题不是贪心就是DP,果然---DP。

DP不熟啊!

参考代码:http://blog.csdn.net/wtyvhreal/article/details/42076485

//Asimple
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <map>
#include <string>
#include <queue>
#define INF 100000
using namespace std;
const int maxn = 1005;
typedef long long ll;
int m[31][maxn];
int n;
struct bg_typ{int h;int l;int t;bool operator < (const bg_typ& A) const {return A.t > t;}
};
bg_typ bg[31];int main(){while( cin >> n && n >= 0 ){int mmax = 0;for(int i=1; i<=n; i++){cin >> bg[i].h >> bg[i].l >> bg[i].t ;if( bg[i].t > mmax ) mmax = bg[i].t; }sort(bg+1,bg+n+1);for(int i=0; i<=n; i++)m[i][0] = m[0][i] = 0;for(int i=1; i<=n; i++){for(int j=0; j<=mmax; j++){if( j<=bg[i].t && j-bg[i].l>=0){m[i][j] = max(m[i-1][j],m[i-1][j-bg[i].l]+bg[i].h);} else m[i][j] = m[i-1][j];}}int result=m[n][mmax];   for(int j=mmax;j>=0;--j)if(result<m[n][j])  result=m[n][j];   cout<<result<<endl; }return 0;
}

翻了翻题解,看到有的用dfs也做出来了,就测试了下是DP好,还是DFS好。

DFS代码:

#include <cstdio>  
#include <algorithm>  using namespace std;  const int N = 30 + 5;  struct Node  
{  int h;  int l;  int t;  
};  int n;  
Node node[N];  
int ans;  
int w;  bool cmp(const Node &a, const Node &b);  void dfs(int cur, int t, int h);  int main()  
{  #ifndef ONLINE_JUDGE  freopen("e:\\uva_in.txt", "r", stdin);  #endif // ONLINE_JUDGE  while (scanf("%d", &n) == 1) {  if (n < 0)  break;  w = 0;  for (int i = 0; i < n; i++) {  scanf("%d%d%d", &node[i].h, &node[i].l, &node[i].t);  w += node[i].h;  }  sort(node, node + n, cmp);  ans = 0;  dfs(0, 0, 0);  printf("%d\n", ans);  }  return 0;  
}  bool cmp(const Node &a, const Node &b)  
{  if (a.t != b.t)  return a.t < b.t;  return (double)a.h / a.l > (double)b.h / b.l;  
}  void dfs(int cur, int t, int h)  
{  if (cur == n) {  if (ans < h)  ans = h;  return;  }  w -= node[cur].h;  if (t + node[cur].l <= node[cur].t) {  dfs(cur + 1, t + node[cur].l, h + node[cur].h);  }  if (h + w > ans)  dfs(cur + 1, t, h);  w += node[cur].h;  
}

在杭电测试的,上面的是动态规划,下面的是dfs。

 Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor
182272612016-09-11 10:40:16Accepted188146MS1928K1480 BC++Asimple
182272522016-09-11 10:39:32Accepted188162MS1720K1405 BC++Asimple

各有各的优势吧!

转载于:https://www.cnblogs.com/Asimple/p/5861206.html

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

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

相关文章

spring security:第一个程序解析

上一篇在一个项目里配置了spring security&#xff0c;这里大致说一些这些配置的作用。 pom.xml 文件解析 <!-- spring security --><!-- spring 安全--><dependency><groupId>org.springframework.security</groupId><artifactId>spring…

python发钉钉消息_Python调用钉钉机器人推送消息

1.创建钉钉机器人群机器人是钉钉群的高级扩展功能&#xff0c;群机器人可以将第三方服务的信息聚合到群聊中&#xff0c;实现自动化的信息同步&#xff1b;进入一个钉钉群&#xff0c;点击右上角的“群设置”进入群设置页面&#xff1b;选择群机器人点击进入&#xff0c;在机器…

spring security:基于MongoDB的认证

spring security对基于数据库的认证支持仅限于JDBC&#xff0c;而很多项目并非使用JDBC&#xff0c;比如Nosql数据库很多使用的是 Mongo Java Driver,这样就无法用默认的<jdbc-user-service>进行支持认证。 如果项目不是使用JDBC&#xff0c;没么解决办法就是&#xff1…

pandas 提取某几列_【科学计算工具二】初识Pandas

和Numpy最大的不同&#xff0c;Pandas的数据有对应的index。一、Series数组Series 是带有标签的一维数组&#xff0c;可以保存任何数据类型&#xff08;整数&#xff0c;字符串&#xff0c;浮点数&#xff0c;Python对象等&#xff09;&#xff0c;轴标签统称为索引创建Series数…

maven+springmvc下载excle文件——ie8可用

mavenspringmvc下载excle文件——ie8可用转载于:https://www.cnblogs.com/zhujiabin/p/5866535.html

spring security:自定义认证成功处理器

使用spring认证登录&#xff0c;登录之后&#xff0c;一般还需要进行其他处理&#xff0c;例如&#xff1a;保存登录时间、登录ip到数据库&#xff0c;缓存用户信息到redis数据库等等&#xff0c;这些操作可以通过自定义一个登录成功处理器来处理。 自定义认证成功处理器 只需…

开发物体识别桌、_科研人员开发突破性的技术,允许盲人识别形状和物体

一项令人难以置信的新技术正在让失明人士有能力识别形状和物体&#xff0c;而这些形状和物体都是在他们的大脑上“画出来”的。一篇描述该技术的研究论文刚刚发表在《细胞》杂志上&#xff0c;正如ScienceNews报道的那样&#xff0c;这可能是向盲人提供一种视觉上与周围世界互动…

【第一周】PSP

日期C类别C内容S开始时间E结束时间I间隔(单位:分钟)T净时间(单位:分钟)9月2日编程词频统计7:359:35101109月3日读书构建之法8:009:00555 编程词频统计13:0014:000609月4日读书构建之法8:009:00060 编程四则运算13:0015:0010110总时间&#xff1a;395分钟&#xff0c;约等于6.58…

spring webflow getting start

概述 很多时候&#xff0c;我们写的流程都嵌在一大堆代码中&#xff0c;没有办法直观的管理。而spring webflow可以将流程抽出来&#xff0c;放到一个单独的xml文件中&#xff0c;这样流程就不会埋没在代码里了。 今天要做一个很简单的流程&#xff1a; 商品发布流程 Created…

pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用

Pycharm作为Vim编辑器使用&#xff0c;具体内容如下1、主题如果你是Vim的粉丝&#xff0c;并且不打算使用其他类型的编辑器&#xff0c;那么这篇教程将会比较适合你。这里将会详细介绍如何在Pycharm IdeaVim插件的帮助下下载、安装、使用Vim。至于有关Python编程以及Vim的用法&…

什么是cname a记录

https://support.dnsimple.com/articles/cname-record/ CNAME就是别名记录&#xff0c;就是负责跳转&#xff0c;比如你给某个地址设置了一个cname,那当访问那个cname的时候&#xff0c;就会跳转到那个某个地址 a记录就是一个ip地址所对应的地址。可以理解为a记录就是一个连接器…

Spring上传时报Invalid CSRF Token错误解决方案

概述 使用spring security之后&#xff0c;默认上传文件会报这个错&#xff0c;解决方案有下面两个&#xff1a; 解决方案一&#xff1a; 将 MultipartFilter 放在 springSecurityFilterChain 前面 修改web.xml文件&#xff1a; <!-- 文件上传过滤器&#xff0c;过滤上传…

windows 修改nginx端口号_分享Nginx搭建图片服务器简单实现

第一步&#xff1a;安装vsftpd提供ftp服务https://www.cnblogs.com/lyq159/p/12070791.html第二步&#xff1a;安装Nginx提供http服务1.安装准备&#xff1a;安装Nginx环境a) gcc      安装nginx需要先将官网下载的源码进行编译&#xff0c;编译依赖gcc环境&#xff0c;如…

C#学习笔记-数据的传递(公共变量)以及Dictionary

看的代码越多&#xff0c;写的代码越多&#xff0c;就越是享受这些字符&#xff0c;终于渐渐懂得了那种传闻中的成就感&#xff0c;特别是自己从看不懂然后一步一步学&#xff0c;一个代码一个代码地敲&#xff0c;最后哪怕只是完成了一个小功能&#xff0c;也都是特别自豪的&a…

spring webflow : 上传单个文件实例

准备 如果你项目中使用了spring security的话&#xff0c;参考上一篇文章&#xff0c;使用上篇的第二种方法&#xff0c;并去掉MultipartFilter&#xff08;如果有配置的话&#xff09;&#xff0c;否则得不到文件流程中的变量&#xff08;如用var标签定义的变量&#xff09;&…

pythonopencv图像形态_Python+OpenCV图像处理之其他形态学操作

顶帽(Top Hat)&#xff1a;原图像与开操作之间的差值图像&#xff0c;突出原图像中比周围亮的区域黑帽(Black Hat)&#xff1a;闭操作图像与原图像的差值图像, 突出原图像中比周围暗的区域形态学梯度(Gradient)&#xff1a;基础梯度&#xff1a;基础梯度是用膨胀后的图像减去腐…

Spring webflow:上传多个文件

上篇讲了上传单个文件&#xff0c;在上篇的基础上稍作修改就可以上传多个文件了。 实现 首先&#xff0c;实体类要修改&#xff0c;使用List来存储多个文件&#xff1a; Component public class GoodsEntity implements Serializable{private static final long serialVersi…

csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换

Python中 CSV格式清洗与转换的实例代码题目&#xff1a;CSV格式清洗与转换描述附件是一个CSV格式文件&#xff0c;提取数据进行如下格式转换&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪…

斐波那契数列通项公式

1.对于斐波那契数列来说&#xff0c;存在通项公式&#xff0c;f[n] 2、Hdu练习题1568&#xff1b; 大意求斐波那契数列中的某一项&#xff0c;n很大&#xff0c;只能在O(1)时间求出&#xff0c;并且只要前四位 当n很大时最后一项几乎为零转载于:https://www.cnblogs.com/dlut-l…

Spring MVC 生成文件类型响应

图片控制器代码如下&#xff1a; Controller RequestMapping("/") public class WebController {RequestMapping(methodRequestMethod.GET,path"/img/{imgNo}")public void getImg(HttpServletResponse response,int index) throws IOException{ //读取图…