站外题求助!!
  • 板块灌水区
  • 楼主zhangjiayi0926
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/25 23:13
  • 上次更新2024/4/26 15:36:17
查看原帖
站外题求助!!
1042463
zhangjiayi0926楼主2024/4/25 23:13

题目

我的30分代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long l,r,mid,ans;
struct POINT{
	long long a,b;
} p[100005];
bool cmp(POINT m,POINT n){
	return m.a<n.a;
}
bool check(long long a){
	int c=p[1].a,pos=1,tick=1;
	for(int i=2;i<=n;i++){
		if(c>p[m].b-p[1].a)break;
		c+=a;
		if(c>p[pos].b)
			if(pos+1>m)break;
			else c=p[++pos].a;
		tick++;
		if(tick==n)break;
	}
	if(tick<n)return 0;
	else return 1;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
    	cin>>p[i].a>>p[i].b;
	}
	sort(p+1,p+1+m,cmp);
    l=1,r=(p[m].b-p[1].a)/(n-1);
    while(l<=r){
        mid=(r+l)/2;
        if(check(mid))ans=mid,l=mid+1;
        else r=mid-1;
    }
    cout<<ans;
}
2024/4/25 23:13
加载中...