N 条网线,每条长度为浮点数(精确到厘米,保留两位小数),要从这些网线中裁剪出 恰好 K 条长度相同的网线,并且:所有原始网线总共能切出 K 条长度为 L 的线段
#include<bits/stdc++.h>
using namespace std;
int n,k,num[11000],l=1,r,mid;
// x 是我们找到的网线长度
// 如果该网线长度裁剪的数量没有K段 说明长度过长 向左找
// 如果该网线长度裁剪的数量大于K段 说明长度过短 等于K段也向右找保证网线长度尽可能长 向右找
bool check(int x) {
int jishu = 0;
for (int i =1;i<=n;i++) {
jishu+= num[i]/x;
}
return jishu>=k;
}
int main() {
cin>>n>>k;
for (int i=1;i<=n;i++) {
double a;
cin>>a;
num[i] = a*100;
r = max(r,num[i]);
}
while (l<=r) {
mid = l+r>>1;
if (check(mid)) {
l = mid+1;
}else {
r = mid-1;
}
}
printf("%.2lf",(l-1)*0.01);
return 0;
}#include<bits/stdc++.h>
using namespace std;
int n,m,num[110000],l=1,r,mid;
// x 是我们找到的最大开销月的金额(假设)
// 如果该最大开销月分的月份小于m个月 说明最大开销月过大 向左找 等于m个月
// 如果该最大开销月分的月份大于m个月 说明最大开销月过小 向右找
bool check(int x) {
int jishu=1,cnt=0;
for (int i=1;i<=n;i++) {
cnt+=num[i];
if (cnt>x) {
jishu++;
cnt = num[i];
}
}
return jishu<=m;
}
int main() {
//n天数 m周期数
cin>>n>>m;
for (int i=1;i<=n;i++) {
cin>>num[i];
l = max(l,num[i]);
r+=num[i];
}
while (l<=r) {
mid = l+r>>1;
if (check(mid)) {
r = mid-1;
}else {
l = mid+1;
}
}
cout<<l;
return 0;
}#include<bits/stdc++.h>
using namespace std;
int n,num[100100],m;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
cin>>m;
sort(num+1,num+1+n);
for (int i=1;i<=n;i++) {
int x = m-num[i];
int *p = lower_bound(num+1,num+1+n,x);
if (*p==x&&p-num!=n+1) {
cout<<num[i]<<" "<<x;
return 0;
}
}
cout<<"No";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,num[100100],m;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
}
cin>>m;
sort(num+1,num+1+n);
for (int i=1;i<=n;i++) {
int x = m-num[i];
int *p = lower_bound(num+1,num+1+n,x);
if (*p==x&&p-num!=n+1) {
cout<<num[i]<<" "<<x;
return 0;
}
}
cout<<"No";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, a[110000];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> m;
sort(a, a + n);
int l = 0, r = n - 1;
while (l < r) {
if (a[l] + a[r] > m) {
r--;
} else if (a[l] + a[r] < m) {
l++;
} else {
cout << a[l] << " " << a[r];
return 0;
}
}
cout << "No";
return 0;
}