专栏文章
题解:B4285 [蓝桥杯青少年组省赛 2022] 最大值
B4285题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miplpwiy
- 此快照首次捕获于
- 2025/12/03 14:03 3 个月前
- 此快照最后确认于
- 2025/12/03 14:03 3 个月前
题意
分析
典型的二分答案。模拟正方形的边长,每张彩纸单独累加其可剪成的正方形数量,最后判断剪出的正方形个数是否 。
注意:求第 张纸可以剪出多少个正方形时,要分别求出行和列除以 的商,再相乘。
Code
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,w[505],h[505],k,l,r;
bool check(int mid){//判断边长为mid时是否可以剪出k个正方形。
int sum=0;
for(int i=1;i<=n;i++){
sum+=(w[i]/mid)*(h[i]/mid);
if(sum>=k)return 1;
}
return 0;
}
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld %lld",&w[i],&h[i]);
r=max(r,max(w[i],h[i]));//正方形边长的最大值
}
scanf("%lld",&k);
while(l<=r){//二分答案
int mid=(l+r)>>1;
if(check(mid)){
l=mid+1;
}else{
r=mid-1;
}
}
printf("%lld",r);//输出正方形的最大边长
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...