题目描述:
有n个小朋友,他们商量在保证作业做完的前提下去玩。第i个小朋友的可以玩耍时间为Si~ Ti。这里Si~Ti
表示的是时间段,比如Si=2,Ti=4,那么意味着这位小朋友在时刻1不能玩,时刻2、3、4可以去玩,时刻4以后都不能出去玩。如果在某个时刻,在一起玩的小朋友个数不少K个,那么这一时刻就是幸福的。现在你要求出所有幸福的时刻长度。
输入
三行 第一行:n k (n个小朋友,一起玩的小朋友达到k个为幸福)
第二行:S1 S2 ... Sn
第三行:T1 T2 ... Tn
输出
一行:幸福时刻的长度
样例输入
4 3
1 2 2 4
5 2 4 6
样例输出
2
数据范围限制
50% n<=1000 1<=Si<=Ti<=1000
100% n<=100000 1<=Si<=Ti<=1000000000
提示
时刻 1 2 3 4 5 6
第一个小朋友玩耍时间:X X X X X
第二个小朋友玩耍时间: X
第三个小朋友玩耍时间: X X X
第四个小朋友玩耍时间: X X X
第2分钟和第4分钟一起玩耍的小朋友达到了3个所以是幸福的时刻,幸福时刻长度为2。
50分思路:
这题50分思路还是计较简单的, 直接用一个数组把所有时刻的人数存入,最后再判断,每个时刻如果大于k,那ans++。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,s[1000001],t[1000001],ans,bz[1000001];
int main()
{
freopen("e.in","r",stdin);
freopen("e.out","w",stdout);
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>s[i];
for(int i=1;i<=n;i++)
cin>>t[i];
for(int i=1;i<=n;i++)
for(int j=s[i];j<=t[i];j++)
if(bz[j]==-1) continue;
else

本文介绍了一种计算在特定条件下幸福时刻长度的算法。通过记录每个小朋友的玩耍时间,算法确定至少有K个小朋友同时玩耍的时刻,即幸福时刻,并计算这些时刻的总长度。文章提供了三种实现方法,包括直接计数、线段树优化和快速排序优化。
最低0.47元/天 解锁文章
9520

被折叠的 条评论
为什么被折叠?



