链接:https://www.nowcoder.com/acm/contest/115/G
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

周末,小Q喜欢在PU口袋校园上参加各种活动刷绩点,体验丰富多彩的大学生活。
但是每个活动有各自的开始时间、结束时间、Happy值以及绩点数,活动之间可能存在时间冲突。
小Q是一个认真踏实的女孩,她在同一时间只会参加一个活动。
给出每一天的活动数,求小Q在同一天内所能获得的最大Happy值 与 绩点数。
小Q是一个活泼开朗的女孩,她总是寻求最大的Happy值,如果Happy值相同,才会尽可能使绩点数更多。

输入描述:

第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例第一行输入一个整数N(表示有几项活动)
接下来N行,每行输入s,e,h,p 4个整数,分别代表一个活动的开始时间、结束时间、Happy值以及绩点数
0<=s<e<=24,1<=h,p<=100,1<=T,N<=20

输出描述:

输出T行
一行输出一个样例对应的结果
小Q在一天内所能获得的最大 Happy值 与 绩点数

输入例子:
1
4
1 3 1 1
2 5 2 1
3 7 2 1
5 8 1 2
输出例子:
3 3

-->

示例1

输入

1
4
1 3 1 1
2 5 2 1
3 7 2 1
5 8 1 2

输出

3 3

说明

有两种方案
1)选择 第1、3两个活动,可以获得 Happy值 3 和 绩点数 2;
2)选择 第2、4两个活动,可以获得 Happy值 3 和 绩点数 3.

看了三生锁链的博客,链接:nowcoder contest#115 江西财经大学第一届程序设计竞赛 G 小Q的口袋校园 记忆化搜索 DP - CSDN博客  https://blog.csdn.net/a912952381/article/details/80032165 ,这位博主用的是dfs,发现数据不是很大,还真的是可以

就是先对数据进行排序,开始时间小的在前面,每件事都有两个选择,选(要满足第i件事的e值>=第i-1件事的e值)与不选,

再随时更新答案就可以了,看代码吧:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,k,t,ans1,ans2;
struct node{
int s,e,h,p;
}str[];
bool cmp(node s1,node s2)
{
return s1.s<s2.s;
}
void dfs(int i,int a,int b,int time)//i表示第几件事,a,b分别表示happy值和绩点,time表示上一件事的e值
{
if(ans1<a||(ans1==a&&ans2<b))
{
ans1=a;
ans2=b;
}
if(i>=n)//终止条件
return ;
if(str[i].s>=time)//要满足这件事的e值>=上一件事的e值
{
dfs(i+,a+str[i].h,b+str[i].p,str[i].e);
}
dfs(i+,a,b,time);
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d%d%d",&str[i].s,&str[i].e,&str[i].h,&str[i].p);
ans1=ans2=;
sort(str,str+n,cmp);
dfs(,,,);
printf("%d %d\n",ans1,ans2);
}
return ;
}

刚刚本来想再找找有没有贪心的写法(我不太会贪心啊),又发现了一个动态规划(好像也可以叫贪心)的写法,和背包问题很像,果然打比赛的都是高手(至少在我眼里),我这个就不加注释了,应该看得懂,代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,k,t;
int ans1[],ans2[];
struct node{
int s,e,h,p;
}str[];
bool cmp(node s1,node s2)
{
return s1.s<s2.s;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d%d%d",&str[i].s,&str[i].e,&str[i].h,&str[i].p);
sort(str,str+n,cmp);
memset(ans1,,sizeof(ans1));
memset(ans2,,sizeof(ans2));
for(int i=;i<n;i++)
{
for(int j=str[i].e;j<=;j++)
{
if(ans1[j]<ans1[str[i].s]+str[i].h)
{
ans1[j]=ans1[str[i].s]+str[i].h;
ans2[j]=ans2[str[i].s]+str[i].p;
}
else if(ans1[j]==ans1[str[i].s]+str[i].h)
{
ans2[j]=max(ans2[j],ans2[str[i].s]+str[i].p);
}
}
}
printf("%d %d\n",ans1[],ans2[]);
}
return ;
}

江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园的更多相关文章

  1. 江西财经大学第一届程序设计竞赛 G

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 题目描述 周末,小Q喜欢在PU口袋校园上参加各种活动刷绩点,体验丰富多彩的大学生活. 但是每个活 ...

  2. 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘

    链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...

  3. 江西财经大学第一届程序设计竞赛 F题 解方程

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  4. 江西财经大学第一届程序设计竞赛 I

    链接:https://www.nowcoder.com/acm/contest/115/I来源:牛客网 题目描述 小P和小Q是好朋友,今天他们一起玩一个有趣的游戏. 他们的初始积分都为1,赢的人可以将 ...

  5. 江西财经大学第一届程序设计竞赛 H

    链接:https://www.nowcoder.com/acm/contest/115/H来源:牛客网 题目描述 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所 ...

  6. 江西财经大学第一届程序设计竞赛 F

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 题目描述 对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 ...

  7. 江西财经大学第一届程序设计竞赛 E

    链接:https://www.nowcoder.com/acm/contest/115/E来源:牛客网 题目描述 当你的好友给你发来一条消息,你的消息列表上就会置顶显示该好友的名字以及该好友发给你的消 ...

  8. 江西财经大学第一届程序设计竞赛 D

    链接:https://www.nowcoder.com/acm/contest/115/D来源:牛客网 题目描述 事情,是这样的. 有这么一天双休日的中午. 我刚把我衣服扔进了洗衣机,然后拿了个小板凳 ...

  9. 江西财经大学第一届程序设计竞赛 C

    链接:https://www.nowcoder.com/acm/contest/115/C来源:牛客网 题目描述 决赛圈还剩下两个人,“伏地魔”XDD和跑毒进圈的FZL,XDD拿着狙击枪AWM瞄准并准 ...

随机推荐

  1. C# 趣味小程序(4)——遍历特定目录及其子目录

    //递归方法遍历目录,并统计其中文件的数目        private int statisticFiles(string directory)        {            int st ...

  2. leetcode1011

    class Solution: def shipWithinDays(self, weights: 'List[int]', D: int) -> int: left = max(weights ...

  3. H5视频推流方案

    导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验. 环境部署 1. 配置 ...

  4. THE BOX MODEL

    Review In this lesson, we covered the four properties of the box model: height and width, padding, b ...

  5. Redis使用认证密码登录

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  6. linux mce的一些相关内容和用户态监控的设计方法

    之所以想起写一点关于mce的东西,倒不是因为遇到mce的异常了,之前遇到过很多mce的异常,内存居多,但没有好好记录下来,写这个是因为参加2018 clk南京会议的一点想法. void __init ...

  7. ReactiveX 学习笔记(19)使用 RxSwift + RxCocoa 进行 GUI 编程

    课题 程序界面由3个文本编辑框和1个文本标签组成. 要求文本标签实时显示3个文本编辑框所输入的数字之和. 文本编辑框输入的不是合法数字时,将其值视为0. 3个文本编辑框的初值分别为1,2,3. 创建工 ...

  8. 关于nginx多层uptstream转发获取客户端真实IP的问题

    因为公司有个需求需要获取客户端的真实IP,前端是haproxy,后面是nginx,本来这个需求不难完成,但是难就难在是https请求也就是ssl 由于个人水平有限,在网上爬了很多资料,刚开始的ha是通 ...

  9. 【380】python 获取列表排序后的索引列表

    参考:Equivalent of Numpy.argsort() in basic python? - Stack Overflow 通过 enumerate 实现 [i for i,v in sor ...

  10. python类中方法加单下划线、双下划线、前后双下滑线的区别

    首先看一段代码: class Foo(): def __init__(self): print "__init__ method" def public_method(self): ...