题解
2024-10-02 08:08:35
发布于:广东
14阅读
0回复
0点赞
一道比较简单的题目
思路
先将所有的时间都开着炉子记录下来,这样只烧了一次,接着为了创造剩下的k-1次机会,应当计算两个客人之间隔得时间最长的时段,将它时长扣除掉,得到最终结果
代码
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int N=1e5+3;
int times[N],diffs[N],n,k,s;
signed main(){
cin>>n>>k;
for(int i=0;i<n;i++)cin>>times[i];
sort(times,times+n);
s=times[n-1]-times[0]+1;
for(int i=1;i<n;i++)diffs[i]=times[i]-times[i-1];
sort(diffs,diffs+n,greater<int>());
int i=0;
while(--k)s-=diffs[i++]-1;
cout<<s<<endl;
return 0;
}
这里空空如也
有帮助,赞一个