hdu1881 毕业bg(深搜索dfs)
主题链接: pid=1881">http://acm.hdu.edu.cn/showproblem.php? pid=1881
----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋:http://user.qzone.qq.com/593830943/main
----------------------------------------------------------------------------------------------------------------------------------------------------------
參加不同团体的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你,所以你须要写个程序来解决这个时间安排的问题。
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
代码例如以下:
#include <iostream>
#include <algorithm>
using namespace std;
int n, ans;
struct bg
{
int h, l, t;
}a[32];
bool cmp(bg a, bg b)
{
return a.t < b.t;
}
void dfs(int i, int hh, int tt)
{
if(i == n)
{
if(hh > ans)
ans = hh;
return;
}
if(tt+a[i].l <= a[i].t)
{
dfs(i+1,hh+a[i].h,a[i].l+tt);
}
dfs(i+1,hh,tt);
return;
}
int main()
{
while(cin>>n)
{
if(n < 0)
break;
ans = 0;
for(int i = 0; i < n; i++)
{
cin>>a[i].h>>a[i].l>>a[i].t;
}
sort(a,a+n,cmp);
dfs(0,0,0);
cout<<ans<<endl;
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
hdu1881 毕业bg(深搜索dfs)的更多相关文章
- HDU-1881 毕业bg (01背包变形)
毕业bg Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- 毕业bg(dfs)
毕业bg Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 简单搜索dfs, 简单的修剪搜索
选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析
转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...
- 【算法入门】深度优先搜索(DFS)
深度优先搜索(DFS) [算法入门] 1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解 ...
- 深度优先搜索 DFS 学习笔记
深度优先搜索 学习笔记 引入 深度优先搜索 DFS 是图论中最基础,最重要的算法之一.DFS 是一种盲目搜寻法,也就是在每个点 \(u\) 上,任选一条边 DFS,直到回溯到 \(u\) 时才选择别的 ...
- POJ 2243 简单搜索 (DFS BFS A*)
题目大意:国际象棋给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次. 求最少明显用bfs,下面给出三种搜索算法程序: // BFS #include<cstdio> #i ...
随机推荐
- OCP解决问题052-- DROP PROFILE app_user
133.You created a profile APP_USER and assigned it to the users. After a month, you decide to drop t ...
- 安全扫描工具-AppScan
AppScan主要作用是对页面进行安全扫描的工具
- [LeetCode55]Jump Game
题目: Given an array of non-negative integers, you are initially positioned at the first index of the ...
- SVN命令汇总
1.将文件checkout到本地文件夹 svn checkout path(path是server上的文件夹) 比如:svn checkout svn://192.168.1.1/pro/doma ...
- Memcahce(MC)系列(三)Memcached它PHP转让
由PHP转让Memcahce,首先,需要在server安装Memcache,如何安装Memcache这不是本文的重点, 大约memcache安装,谁的朋友有兴趣,请参阅这里:http://blog.c ...
- MVC 01
ASP.NET MVC 01 - ASP.NET概述 本篇目录: ASP.NET 概述 .NET Framework 与 ASP.NET ASP.NET MVC简介 ASP.NET的特色和优势 典型案 ...
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
(1)首先创建java project 选择eclipse菜单上File->New->Java Project. 并命名为UploadFile. (2)加入必要的hadoop jar包 右 ...
- Linux在什么样的从脚本文件数据库sh格式改变sql格式
在软件开发过程中,经常参与Linux从下一个脚本文件数据库sh格式改变sql格式问题.在本文中,一个实际的脚本文件,例如.描述格式转换过程. 1. sh文件内容 本文中的文件名称为exa ...
- 【C++基金会 06】explictkeyword
C++提供keywordexplicit,你应该不能阻止的转换构造隐式转换发生的同意.声明explicit的构造不能在一个隐式转换使用. 1.演示样例 我们先来看一段演示样例代码: class A { ...
- Extjs GridPanel 几点说明
1. 在Ext中,表格控件必须包括列定义信息,并指定表格的数据存储器.列信息由columns定义,而数据存储器有store定义. 2. store负责把各种各样的原始数据(JSON对象数组等等)转换成 ...