Day2 ---二分

这里直接给出模板

两种对应不同的情况 可以借助数轴理解

int bsearch_1(int l, int r) {
while (l < r) {
int mid = l + r >> ;
if (check(mid)) r = mid;
else l = mid + ;
}
return l;
} int bsearch_2(int l, int r) {
while (l < r) {
int mid = l + r + >> ;
if (check(mid)) l = mid;
else r = mid - ;
}
return l;
}

补充:有时候可以借助STL的std::lower_bound()来找第一个大于等于你的值的数,std::upper_bound()来找第一个大于数所在的位置

P1873 砍树

int a[];
int n, m;
bool check(int k) { //检查可行性,k为锯片高度
long long sum = ;
for (int i = ; i <= n; i++) //检查每一棵树
if (a[i] > k) //如果树高于锯片高度
sum += (long long)(a[i] - k); //累加树木长度
return sum >= m; //如果满足最少长度代表可行
}
int find(int x) {
int l = , r = ; //因为是左闭右开的,所以10亿要加1
while (l + < r) { //如果两点不相邻
int mid = (l + r) / ; //取中间值
if (check(mid)) //如果可行
l = mid; //升高锯片高度
else
r = mid; //否则降低锯片高度
}
return l; //返回左边值
}
int main() {
cin >> n >> m;
for (int i = ; i <= n; i++) cin >> a[i];
cout << find(m);
return ;
}

实数二分 Pie http://poj.org/problem?id=3122

#include<iostream>
#include<string>
#include<cmath>
#include<cstring>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<queue>
#include<stack>
#include<sstream>
#include<cstdio>
const double eps = 1e-;
const int maxn = 1e6 + ;
const double PI = acos(-1.0);
typedef long long ll;
using namespace std;
double r[];
int n, k;
bool check(double x) {
int cnt = ;
for (int i = ; i < n; i++) {
cnt+= (int)(r[i] / x);
}
if (cnt >= k+) return true;
else return false;
} int main() {
std::ios::sync_with_stdio();
cin.tie();
double Max;
int T; cin >> T; while (T--) {
cin >> n >> k;
Max = -; for (int i = ; i < n; i++) {
cin >> r[i];
r[i]=r[i]*r[i]*PI;
Max = max(Max, r[i]);
}
double l = ;
double r = Max+;
while (r - l > eps) {
double mid = (l + r) / ;
if (check(mid)) {
l = mid;
}
else r = mid;
}
printf("%.4f\n", l ); }
return ;
}

注意精度

三分 

  主要用于求函数极值

double f(double a){/*根据题目意思计算*/}
double three(double l,double r) //找凸点
{
while(l<r-eps)
{
double mid=(l+r)/;
double mmid=(mid+r)/;
if(f(mid)>f(mmid)) r=mmid;
else l=mid;
}
if(f(l)>f(r)) return l;
else return r;
}

秦九韶算法从里到外逐层计算一次多项式

double    F(double x) {
double sum = ;
for (int i = n; i >= ; i--) {
sum = sum * x + a[i];
}
return sum;
}

HZNU-ACM寒假集训Day2小结 二分答案的更多相关文章

  1. 中南大学2019年ACM寒假集训前期训练题集(基础题)

    先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...

  2. 2022寒假集训day2

    day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...

  3. 中南大学2019年ACM寒假集训前期训练题集(入门题)

    A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500 ...

  4. 【2018寒假集训 Day2】【动态规划】维修栅栏

    维修栅栏 问题描述: 小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前.农场的栅栏,由于年久失修,出现了多处破损.栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损 ...

  5. 【2018寒假集训 Day2】【动态规划】挖地雷

    挖地雷(Mine) 在一个地图上有N 个地窖(N<=200),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径,并规定路径都是单向的,且从编号小的地窖通向编号大的地窖.某人可以从任一处 ...

  6. HZNU-ACM寒假集训Day12小结 数论入门 题解

    算不出的等式 BJOI2012 看到这题 真没什么办法 无奈看题解 1.注意到p/q 联想到斜率 2.注意到 [ ] 联想到整点 注意到k在变化,构造一次函数 f(x)=p/q*x ,g(x)=q/p ...

  7. HZNU-ACM寒假集训Day8小结 最小生成树

    最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络   https://www.luogu.com.cn/problem/P1546 #i ...

  8. HZNU-ACM寒假集训Day6小结 线性DP

    线性DP 考虑一组硬币面值 1,5,11 给定W,求凑出W的最少硬币个数 我们记凑出n需要用到的最少硬币数量为f(n)   我们注意到了一个很棒的性质 : f(n)只与f(n-1) f(n-5) f( ...

  9. HZNU-ACM寒假集训Day3小结 搜索

    简单搜索 1.DFS UVA 548 树 1.可以用数组方式实现二叉树,在申请结点时仍用“动态化静态”的思想,写newnode函数 2.给定二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据 ...

随机推荐

  1. less在vscode中的配置方式

    1.在vscode插件中下载easy less这个插件. 2.新建项目,分别建两个文件夹存放less和自动编译好的css,页面中引入文件引css就可以了. 3.根据你的文件位置,在用户设置中设置需要配 ...

  2. loadrunner11完整卸载

    1.在控制面板中卸载掉loadrunner11的程序 2.删除loadrunner11安装目录 3.删除C盘(和安装目录下)   wlrun.*和vugen.* 4.删除回收站 5.清除注册表(运行r ...

  3. arm linux 移植 python3.6

    背景: 人生苦短,我用Python. 说明: 编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出host的解释器.(有点像Go语言) Python : ...

  4. HiBench成长笔记——(9) Centos安装Maven

    Maven的下载地址是:http://maven.apache.org/download.cgi 安装Maven非常简单,只需要将下载的压缩文件解压就可以了. cd /home/cf/app wget ...

  5. zigbee CC2530首选方案模组:TZU06A1

    模块特点 微型24-pin 邮票式SMT 封装 提供U.FL 接口,用于外接SMA 天线 小尺寸封装:16mm*20mm*3.7mm 通过欧盟CE0168.欧盟ROHS 认证 基于8051 单片机架构 ...

  6. Java集合基于JDK1.8的LinkedList源码分析

    上篇我们分析了ArrayList的底层实现,知道了ArrayList底层是基于数组实现的,因此具有查找修改快而插入删除慢的特点.本篇介绍的LinkedList是List接口的另一种实现,它的底层是基于 ...

  7. ios端简单改变webView的黑白夜模式

    extension HTController:WKUIDelegate, WKNavigationDelegate,WKScriptMessageHandler { func userContentC ...

  8. 解决使用xampp无法通过ip访问的问题

    本地能通过127.0.0.1或者localhost访问,无法通过外网地址访问: win解决防火墙问题: 1.进入控制面板 -> 系统和安全 -> 2.window防火墙 - 允许其他程序通 ...

  9. created a ThreadLocal with key of type [oracle.jdbc.driver.AutoKeyInfo$1]

    环境: spring4.3, mybatis3.5.2, ojdbc8_8c(oracle 18c jdbc) 调试状态下退出时,提示: 严重 [main] org.apache.catalina.l ...

  10. golang调用CertUtil获取文件md5

    func getFileMD5(fileName string) string { cmd := exec.Command("cmd", "/C", " ...