88pts,WA#2,求调(玄关)
查看原帖
88pts,WA#2,求调(玄关)
1266422
syy7788楼主2024/11/29 19:45

在别的oj上通过了,洛谷上WA#2
代码:

#include<bits/stdc++.h>
using namespace std;
int n,k,w[100010],h[100010],l=1,r=100000;
int check(int x)//计算边长为x时能分几块巧克力
{
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		sum+=(w[i]/x)*(h[i]/x);
	}
	return sum;
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)cin>>w[i]>>h[i];
	while(1)//二分
	{
		int mid=(l+r)/2;
		int w=check(mid);
		int w1=check(mid+1);
		if(w<k)
		{
			r=mid-1;
		}else if(w>k)
		{
			l=mid+1;
		}else
		{
			cout<<mid;
			break;
		}
		if(w<k&&w1>k)
		{
			cout<<mid+1;
			break;
		}
		if(w>k&&w1<k)
		{
			cout<<mid;
			break;
		}
		if(l>r)break;
	}
	return 0;
}
2024/11/29 19:45
加载中...