思路:这个就是01背包问题差不多。先按持续时间排序。在dfs 这样想 第一场排队 要还是不要,第二场要还是不要,一直到最后一场求出最优解。

毕业bg

Problem Description
每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“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你,所以你需要写个程序来解决这个时间安排的问题。

 
Input
测试输入包含若干测试用例。每个测试用例的第1行包含一个整数N (<=30),随后有N行,每行给出一场bg的信息:
h l t
其中 h 是快乐度,l是持续时间(小时),t是发起人离校时间。数据保证l不大于t,因为若发起人必须在t小时后离开,bg必须在主人离开前结束。

当N为负数时输入结束。

 
Output
每个测试用例的输出占一行,输出最大快乐度。
 
Sample Input
  
3 6 3 3 3 2 2 4 1 3 4 5 1 1 10 2 3 6 1 2 3 1 1 -1
 
Sample Output
  
7 16

代码:

#includestdio.h
#includealgorithm
using namespace std;
typedef struct bg
{
    int h;
    int l;
    int t;
    int tlcha;
}bg;
int cmp1(bg a,bg b)
{
    return a.tb.t;
}
int cmp2(bg a,bg b)
{
    return a.tlchab.tlcha;
}

int n;
bg bbg[32];
int k=0;
int ma=-1;

int dfs(int count,int sumshijian,int zuidazhi)
 {   if(count==n)
       {
           if(mazuidazhi) ma=zuidazhi;
             return 1;
       }

dfs(count+1,sumshijian,zuidazhi);
   if(bbg[count].t-sumshijian=bbg[count].l)
          dfs(count+1,sumshijian+bbg[count].l,zuidazhi+bbg[count].h);

}
int main()
{
   int h,l,t;
    while(scanf(%d,&n)!=EOF)
    { if(n0) break;
      for(int i=0;in;i++)
      {
          scanf(%d%d%d,&bbg[i].h,&bbg[i].l,&bbg[i].t);
          bbg[i].tlcha=bbg[i].t-bbg[i].l;
      }
    k=0;
    sort(bbg,bbg+n,cmp1);
    ma=-1;
    dfs(0,0,0);
    printf(%dn,ma);
    }
}

杭电毕业bg dfs相关推荐

  1. 杭电1044java实现dfs bfs

    Collect More Jewels 问题描述 它写在"夫人的书:创世之后,残酷的神摩洛克反抗了造物主马尔杜克的权威.摩尔从马尔杜克那里偷走了众神中所有神器中最强大的一件,也就是叶多尔的护 ...

  2. 杭电1241java实现dfs

    问题描述 GeoSurvComp地质调查公司负责检测地下油藏. GeoSurvComp一次与一个大的矩形区域一起工作,并创建一个网格,将网格划分为多个方块.然后分别分析每个地块,使用传感设备确定该地块 ...

  3. 杭电1010java实现dfs

    题目: 问题描述 小狗在一个古老的迷宫中发现了一块骨头,这让他着迷了很多.然而,当他拾起它时,迷宫开始动摇,小狗可能感觉到地面下沉.他意识到骨头是一个陷阱,他拼命地试图走出这个迷宫. 迷宫是一个大小为 ...

  4. 超励志!杭电第六次打入“ACM/ICPC”全球总决赛!

    小编说: 前几天都在发 考研初试/真题 有关的内容,头条一直没有空余,所以现在才发. 杭电是计算机专业双非中最有名的学校之一,在公众号的投票[计算机最强的双非大学]中排名第一. [计算机最强的双非大学 ...

  5. 杭电AI学霸班:考研上岸3清北8浙大,还没毕业年薪拿百万

      视学算法报道   编辑:桃子 拉燕 [新智元导读]杭州电子科技大学「王炸班」34个人上岸名校,其中3人考进清北. 如今考研,何以用一个「卷」字形容... 近日,就在杭州电子科技大学人工智能学院就出 ...

  6. 计算机顶级双非大学杭电,毕业后能拿多少钱?

    杭州电子科技大学位于浙江省,是我们耳熟能详的双非大学了.杭州电子科技大学计算机学科评估B+,软件工程学科评估C+,在双非大学中排名前列,是计算机考研非常受欢迎的双非大学之一. 在2021考研中,杭电计 ...

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

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2046 解决:894 题目描述: 每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为"bg".参加 ...

  8. 杭电计算机学硕专硕2019,2019杭电计算机考研总结

    将近一年的时间,从初试到复试,最后成功录取.也算是给本身的考研之路画上了一个圆满的句号. 先简单的介绍一下博主的状况.我是2017年大学毕业,毕业后工做了将近一年,而后辞职考研.最后成功的考上了杭州电 ...

  9. 【ACM】杭电OJ 1241(深度优先搜索小结)

    题目链接:杭电OJ 1241 深度优先搜索问题 深度优先搜索是搜索的手段之一.它从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解. ...

最新文章

  1. git github 快速入门
  2. 微信小程序注意点及快捷键
  3. mysql触发器新元组_MySQL触发器-条件触发器语法
  4. java exec mvn_maven---常用插件之EXEC
  5. Andorid之jni里面崩溃然后用errno分析结果解决问题
  6. 容器编排技术 -- Kubernetes kubectl rollout pause 命令详解
  7. python计算两个时间间隔准确的天、月、年之差
  8. 医疗健康领域的短文本解析探索----文本纠错
  9. LeetCode学习记录(4-6)
  10. html5回到顶部代码,JS返回顶部实例代码
  11. 实现阿里云DDNS解析
  12. python学习(判断某年某月某日)
  13. kafka的Leader选举机制
  14. 详解torch.view()的-1参数是什么意思
  15. 国际化中英文切换,英文内容长度过长的解决问题
  16. 使用Java校验【统一社会信用代码】真假
  17. COMP SCI 4094/4194/7094 - Distributed Databases and Data Mining
  18. 最新尚硅谷2018SpringBoot教学视频(内含Docker)
  19. 【ffmpeg】创建AAC编码器
  20. 算法复杂度:算法时间复杂度和空间复杂度表示法

热门文章

  1. 如何丰富PPT背景,快收藏这两个技巧
  2. openCV中的saturate_cast()方法
  3. BIEE 11g学习
  4. 【独家直播】2010 跨界实践 绿色增长 第五届中国互联网站长年会
  5. OVS框架以及源码笔记1
  6. 软件测试之App测试-UI测试
  7. linux 安装git 客户端服务
  8. java transient 关键字_Java的transient关键字
  9. 关于springAop面试题
  10. 计算机毕业设计(附源码)python在线考试系统