求大佬看看,总是有两个点过不了
查看原帖
求大佬看看,总是有两个点过不了
1181922
wuhaodong666楼主2023/12/19 21:11
#include<iostream>

using namespace std;
int n=0;//切得巧克力数量;
int f=0;//切得巧克力的最大边长;
int o=0;//切得巧克力边长的最大值:为最大的巧克力的最小边。
int N,K;//N为几块巧克力,K为几个小朋友
int l[10001],w[10001];
int main(){
	
	cin>>N>>K;
	

	for(int i=1;i<=N;i++){	
		cin>>l[i]>>w[i];//输入每个巧克力的信息
		o=max(o,min(l[i],w[i]));//循环求出切得最大边长
	}

	for(int i=1;i<=o;i++){//切的巧克力从1开始循环直到其最大边长o
		for(int j=1;j<=N;j++){
			n=n+(l[j]/i)*(w[j]/i);//每一块巧克力且出边长为i的巧克力的数量。
			if(n>=K){//如果边长为i可以切出的巧克力块数n大于小朋友个数,则将i赋给f,并且跳出循环节省时间。
				f=i;
				break;
				}
			}
		if(n<K)//如果n小于K则表示边长i继续增大得到的n都无法满足条件:每个小朋友都有份。直接退出循环,此时f为答案。
			break;
		n=0;
	}
	cout<<f<<endl;
	return 0;
}
2023/12/19 21:11
加载中...