二分专项
程序员文章站
2022-06-02 17:44:11
...
二分搜索
二分搜索的板子:(左闭右开)
对于其他的二分情况可以参考https://blog.csdn.net/CCSGTC/article/details/80586181
在二分过程中,始终维持左闭右开的条件
void solve(){
sort(heig,heig+n);
int left = 0, right = 1000000001; // [0,1000000001)
while(left+1<right){
int mid = (left+right)/2;
if(fuc(mid)) left = mid;
else right = mid;
}
printf("%d\n",left);
}
最终边界条件:
(图片来源)https://oi-wiki.org//basic/binary/
二分裸题 https://www.luogu.org/problemnew/show/P1873
二分其中的可能性即可
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m;
int heig[1000010];
void get_data(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&heig[i]);
}
}
bool fuc(int mid){
long long ans = 0;
for(int i=n-1;heig[i]>mid;i--){
ans += heig[i]-mid;
}
return ans>=m;
}
void solve(){
sort(heig,heig+n);
int left = 0, right = 1000000001;
while(left+1<right){
int mid = (left+right)/2;
if(fuc(mid)) left = mid;
else right = mid;
}
printf("%d\n",left);
}
int main() {
get_data();
solve();
return 0;
}
分数规划
基础:https://blog.csdn.net/hzoi_ztx/article/details/54898323
裸题 : https://vjudge.net/problem/POJ-2976
特别提醒程序退出条件 (都是泪啊)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n,k;
int a[1010],b[1010];
void get_data(){
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
}
bool judge(double mid){
double result[1010];
double ans = 0;
for(int i=0;i<n;i++) result[i] = a[i] - mid*b[i];
sort(result,result+n);
for(int i=n-1;i>=k;i--) ans += result[i];
return ans>=0;
}
void solve(){
double left = 0, right = 1e8;
while(right-left>1e-6){
double mid = (right+left)/2;
if(judge(mid)) left = mid;
else right = mid;
}
printf("%.0lf\n",100*left);
}
int main(){
while(cin>>n>>k&&n!=0){ //k是可以等于0而不退出的,,我靠(卡了我2个小时)
get_data();
solve();
}
return 0;
}
上一篇: 竞价推广技巧:这些东西必须可控
下一篇: 没出息的猫
推荐阅读
-
数据结构算法二分查找研究(c++编写实例)
-
php 数组二分法查找函数代码_PHP教程
-
【upc】2020年秋季组队训练赛第十四场 Get Strong | 折半搜索、二分
-
Leetcode算法题二分图Python3解法(88%时间 100%空间)
-
什么是国家优师专项计划?附2021国家优师专项计划分数线汇总(2022年参考)
-
Python构建一颗二分搜索树
-
二分查找(Binary Search)需要注意的问题,以及在数据库内核中的
-
C语言数据结构之二分法查找详解
-
php常用的排序算法与二分法查找 二分法排序 c++二分法排序 二分法插入排
-
PHP基于二分法的手机号码归属查询与传统查询效率比较