二分查找样例未过,求调
  • 板块学术版
  • 楼主realheizi
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/18 21:21
  • 上次更新2024/8/19 09:23:58
查看原帖
二分查找样例未过,求调
780067
realheizi楼主2024/8/18 21:21

原题 P10505 本蒟蒻思路参考了这篇题解 求大佬帮帮qwq(玄关)

#include<bits/stdc++.h>
using namespace std;
int n,k,a[1145],b[1145],tmp[1145];
bool check(double p){
	double cnt=0;
	for(int i=1;i<=n;i++) tmp[i]=a[i]-b[i]*p;
	sort(&tmp[1],&
	tmp[n+1]);
	for(int i=1;i<=n-k;i++){
		cnt+=tmp[i];
	}
	if(cnt>=0.0) return true;
	else return false;
}
int main(){
	while(true){
		cin>>n>>k;
		if(n==0&&k==0) break;
		for(int i=1;i<=n;i++) cin>>a[i];
		for(int i=1;i<=n;i++) cin>>b[i];
		double l=0,r=100,mid;
		for(int i=1;l<=r && i<=40;i++){
			mid=(l+r)/2;
			if(check(mid)) l=mid;
			else r=mid;
		}
		cout<<int(l*100)<<"\n";
	}
	return 0;
} 
2024/8/18 21:21
加载中...