hdu 6119 小小粉丝度度熊 (区间处理+尺取)

http://acm.hdu.edu.cn/showproblem.php?pid=6119

解题思路:给出的出发时间和结束时间对有重合的部分进行处理,然后用尺取法找出最后的结果。比赛的时候的确想到了用尺取的想法完成题目,但是代码能力不行没有想出来。

AC代码:

 1 #include <iostream>
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 const int maxn=100005;
 5 struct node
 6 {
 7     int l,r;
 8 }p[maxn];
 9 int sum[maxn];
10 bool cmp(node a,node b)
11 {
12     return a.l<b.l;
13 }
14 int main()
15 {
16     int n,m;
17     while(~scanf("%d%d",&n,&m))
18     {
19         for(int i=0;i<n;i++)
20         scanf("%d%d",&p[i].l,&p[i].r);
21         sort(p,p+n,cmp);
22         int len=0;
23         int nowl=p[0].l,nowr=p[0].r;
24         for(int i=1;i<n;i++)
25         {
26             if(p[i].l<=nowr)
27             nowr=max(nowr,p[i].r);
28             else
29             {
30                 p[len].l=nowl;
31                 p[len++].r=nowr;
32                 nowl=p[i].l;
33                 nowr=p[i].r;
34             }
35         }
36         p[len].l=nowl;
37         p[len++].r=nowr;
38         for(int i=0;i<len-1;i++)
39         sum[i]=max(0,p[i+1].l-p[i].r-1);
40         int l=0,r=0;
41         int now=0,ans=0;
42         while(r<len)
43         {
44             ans=max(ans,p[r].r-p[l].l+1+m-now);
45             now+=sum[r++];
46             while(now>m)
47             now-=sum[l++];
48         }
49         printf("%d\n",ans);
50     }
51     return 0;
52 }
时间: 2024-08-04 18:04:19

hdu 6119 小小粉丝度度熊 (区间处理+尺取)的相关文章

hdu 6119 小小粉丝度度熊(区间双指针)

题目链接:hdu 6119 小小粉丝度度熊 题意: 给你n个区间,和一个数m,m表示可补上不连续的位置累计和为m,现在问你最长的连续区间和为多少. 题解: 我可能写的有点复杂,大概就是将每个区间排序后离散化,将这些间隔看成一个点,然后双指针一下. 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,sizeof(a)) 3 #define F(i,a,b) for(int i=(a);i<=(b);++i) 4 using na

HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017&quot;百度之星&quot;程序设计大赛 - 初赛(B))

小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1572    Accepted Submission(s): 513 Problem Description 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是

百度之星2017 HDU 6119 小小粉丝度度熊 二分+双指针

小小粉丝度度熊 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 Description 度度熊喜欢着喵哈哈村的大明星--星星小姐.为什么度度熊会喜欢星星小姐呢?首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听.但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!于是度度熊关注了星星小姐的贴吧.一开始度度熊决定每天都在星星小姐的贴吧里面签到.但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到.不过

hdu 6119 小小粉丝度度熊

小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1299    Accepted Submission(s): 419 Problem Description 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是

【二分+尺取】HDU 6119 小小粉丝度度熊

http://acm.hdu.edu.cn/showproblem.php?pid=6119 [思路] 首先通过处理交叉的可以处理成不交叉的 然后二分查找答案 如何判断一个长度是否可行? 双指针O(n)扫一次就可以,要处理区间和问题,所以先求前缀和 时间复杂度O(nlogn) [AC] 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #inclu

HDU 6119 2017百度之星初赛B 小小粉丝度度熊 (二分)

小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 197    Accepted Submission(s): 78 Problem Description 度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星

小小粉丝度度熊

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 Problem Description 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! 于是度度熊关注了星星小姐的贴吧. 一开始度度熊决定每天都在星星小姐的贴吧里面签到. 但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签

[HDOJ6119] 小小粉丝度度熊(尺取)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6119 合并有重叠的段后尺取. 1 /* 2 ━━━━━┒ギリギリ♂ eye! 3 ┓┏┓┏┓┃キリキリ♂ mind! 4 ┛┗┛┗┛┃\○/ 5 ┓┏┓┏┓┃ / 6 ┛┗┛┗┛┃ノ) 7 ┓┏┓┏┓┃ 8 ┛┗┛┗┛┃ 9 ┓┏┓┏┓┃ 10 ┛┗┛┗┛┃ 11 ┓┏┓┏┓┃ 12 ┛┗┛┗┛┃ 13 ┓┏┓┏┓┃ 14 ┃┃┃┃┃┃ 15 ┻┻┻┻┻┻ 16 */ 17 #include <bi

2017&quot;百度之星&quot;程序设计大赛 - 初赛(B)小小粉丝度度熊

Problem Description 度度熊喜欢着喵哈哈村的大明星--星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! 于是度度熊关注了星星小姐的贴吧. 一开始度度熊决定每天都在星星小姐的贴吧里面签到. 但是度度熊是一个非常健忘的孩子,总有那么几天,度度熊忘记签到,于是就断掉了他的连续签到. 不过度度熊并不是非常悲伤,因为他有m张补签卡,每一张补签卡可以使得某一忘签到的天,变成签到的状