题解:P17865 [FJCPC 2026] 排考场
zhuzifengzhuzifeng · · 题解
思路
我们设列间距为
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1e5+5;
int n,r[MAXN],c[MAXN],m;
bool check(int x){
int ans=0;
for(int i=1;i<=m;i++)
ans+=(max(0ll,(c[i]-1)/(x+1))+1)*r[i];
return ans>=n;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
cin>>n>>m;
for(int i=1;i<=m;i++)
cin>>r[i]>>c[i];
int L=0,R=1e18+1,M;
while(L+1<R){
M=L+R>>1;
if(check(M))L=M;
else R=M;
}cout<<L;
return 0;
}