Dream__Sky @ 2023-05-10 23:51:38
题目描述
小明跟他的小朋友们共
输入
第一行:n k (n个小朋友,一起玩的小朋友达到k个为幸福)
第二行:S1 S2 … Sn
第三行:T1 T2 … Tn
输出
输出一行:幸福时刻数
样例输入输出
输入#1
4 3
1 2 2 4
5 2 4 6
输出#1
2
第2分钟和第4分钟一起玩耍的小朋友达到了3个所以是幸福的时刻,幸福时刻数2。
【数据规模】
对于50%的数据 n≤1000 1≤Si≤Ti≤1000
对于100%的数据 n≤100000 1≤Si≤Ti≤1000000000
求助满分思路,谢谢
by qifan_maker @ 2023-05-11 07:21:16
建议发学术区
by Fjionzy @ 2023-05-11 08:07:27
@Dream__Sky 哇,我们的比赛题也
by Fjionzy @ 2023-05-11 08:07:41
@Dream__Sky 你是南海区的?
by Fjionzy @ 2023-05-11 08:13:56
@Dream__Sky
#include<bits/stdc++.h>
using namespace std;
int n,maxx,s,k,ans;
struct stu{
int time,s;
}a[10000005];
bool cmp(stu a,stu b)
{
if(a.time==b.time)
return a.s>b.s;
else
return a.time<b.time;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)
{
long long x;
cin>>x;
a[i].time=x;
a[i].s++;
}
for(int i=1;i<=n;i++)
{
long long y;
cin>>y;
a[n+i].time=y+1;
a[n+i].s--;
}
n*=2;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
{
s+=a[i].s;
if(s>=k &&a[i].time!=a[i+1].time)
{
ans+=a[i+1].time-a[i].time;
}
}
cout<<ans;
return 0;
}
by Fjionzy @ 2023-05-11 08:14:30
@Dream__Sky 应该是这个,结构体二分
by eggegg185 @ 2023-05-11 09:47:03
@Dream__Sky 离散化然后暴力((,记录一下两个被离散化的数原来的差是多少
by Dream__Sky @ 2023-05-11 16:22:34
@StarlitSky bushi
by Dream__Sky @ 2023-05-11 16:25:08
谢谢各位巨佬
by Fjionzy @ 2023-05-11 22:18:37
@Dream__Sky 话说对了没?
by Dream__Sky @ 2023-05-11 23:45:12
@StarlitSky 对了