hdu 4883 区间选点

昨天比赛的时候没有做出来,本来是想用贪心的,但是贪了好久都没有招,

今天在网上搜了解题报告~好像说这是一类区间选点问题:

有一个好的做法:

(1)首先把题目中的时间全转化为分钟,那么区间就在0-1440中间

(2)对于n组人,有一个si 和一个ei,那么开个数组, cnt[si]+=d;  cnt[ei]-=d;

( 3 ) 也就是说在数轴上讲到达的这点加上d,离开的这点减去d;

附上代码

#include <iostream>

#include <cstdio>

#include <stdio.h>

using namespace std;

int cnt[1445];

int main()

{

int t,n,d,s1,e1,s2,e2;

cin>>t;

while(t--)

{

cin>>n;

memset(cnt,0,sizeof(cnt));

for(int i=0;i<n;i++)

{

scanf("%d%d:%d%d:%d",&d,&s1,&e1,&s2,&e2);

s1=s1*60+e1;

s2=s2*60+e2;

cnt[s1]+=d;

cnt[s2]-=d;

}

int sum=0,ans=0;

for(int i=0;i<=1440;i++)

{

sum+=cnt[i];

if(sum>ans)ans=sum;

}

cout<<ans<<endl;

}

return 0;

}

hdu 4883 区间选点

时间: 2024-10-13 00:01:10

hdu 4883 区间选点的相关文章

HDU 4883 TIANKENG’s restaurant(区间选点)

HDU 4883 TIANKENG's restaurant 题目链接 题意:给定一些时间作为区间,和一个人数,问要安排多少人去看管(一个人只能看管一个人) 思路:普通的区间选点问题,一个区间拆成一个进入点一个出去点,然后排序循环求答案即可 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 20005; struct Man {

HDU 4883 TIANKENG’s restaurant (区间更新)

Problem Description TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to have meal because of its delicious dishes. Today n groups of customers come to enjoy their meal, and there are Xi persons in the

UVA10148- Advertisement(区间选点)

题意:一段路上,给出n个慢跑者跑步的区间,给出k,要求让每个慢跑者都能看到k个广告,区间都是整数操作,也就是说一个广告只能放在一个整数上,求最小贴的广告数 思路:关于区间选点的问题.把所有区间按B从小到大排序(B相同时A从大到小排序),则如果出现区间包含的情况,小区间一定排在前面.所以贪心的策略就是,从后往前取k个点.因为只有从后面开始取点,满足的区间才最会最多,这样就能达到使用最少的点的目的.注意如果区间长度小于k的话,区间内所有点都要取到. #include <iostream> #inc

hdu 4883 TIANKENG’s restaurant(暴力)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4883 Problem Description TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to have meal because of its delicious dishes. Today n groups of customers come t

poj1328Radar Installation(贪心—区间选点)

题目链接: 啊哈哈,点我点我 题目: Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 52037   Accepted: 11682 Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small isl

HDU 4883 TIANKENG’s restaurant Bestcoder 2-1(模拟)

TIANKENG's restaurant Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description TIANKENG manages a restaurant after graduating from ZCMU, and tens of t

HDU 4883 Best Coder Round 2 TIANKENG’s restaurant 题解

有一组数据是客人到来和离开的时间,问需要多少张桌椅才能满足所有客人都能有位置坐的要求. 有人居然一开始就想到暴力法,以为数据量少,其实本题数据量不少了, 暴力法需要O(n*n)的时间效率了,显然是会超时的,故此需要O(n) 或者O(lgn)的算法. 属于一道想透了就非常容易的,但是没想过就会非常困难的题目. 解法是: 把所有客人到来和离开的时间都排成序列,每次客人到来需要n张桌椅,那么就+上n,每次客人离开就会返还n张桌椅,那么就-去n,求这样的最大值. 具体算法代码就那么几行,处理IO的代码都

HDU 4883 TIANKENG’s restaurant (贪心)

链接:带我学习,带我飞 第一次BC,稳挂,WA n多次,今天重新做了一下 略挫 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <map> #include <string> #include <vector> #include <set> #include <algorithm>

贪心--区间覆盖及区间选点问题

区间覆盖: 数轴上有若干区间,选用最少的线段覆盖指定区间. 区间选点:选用最少的区间使每个区间内至少有一个点 样题1: J - Muddy roads Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Description Farmer John has a problem: the dirt road from his farm to town has suffered in the re