HZNU-ACM寒假集训Day2小结 二分答案
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小结 二分答案的更多相关文章
- 中南大学2019年ACM寒假集训前期训练题集(基础题)
先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...
- 2022寒假集训day2
day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...
- 中南大学2019年ACM寒假集训前期训练题集(入门题)
A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500 ...
- 【2018寒假集训 Day2】【动态规划】维修栅栏
维修栅栏 问题描述: 小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前.农场的栅栏,由于年久失修,出现了多处破损.栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损 ...
- 【2018寒假集训 Day2】【动态规划】挖地雷
挖地雷(Mine) 在一个地图上有N 个地窖(N<=200),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径,并规定路径都是单向的,且从编号小的地窖通向编号大的地窖.某人可以从任一处 ...
- HZNU-ACM寒假集训Day12小结 数论入门 题解
算不出的等式 BJOI2012 看到这题 真没什么办法 无奈看题解 1.注意到p/q 联想到斜率 2.注意到 [ ] 联想到整点 注意到k在变化,构造一次函数 f(x)=p/q*x ,g(x)=q/p ...
- HZNU-ACM寒假集训Day8小结 最小生成树
最小生成树(无向图) Kruskal 给所有边按从小到大排序 形成环则不选择(利用并查集) P1546 最短网络 https://www.luogu.com.cn/problem/P1546 #i ...
- HZNU-ACM寒假集训Day6小结 线性DP
线性DP 考虑一组硬币面值 1,5,11 给定W,求凑出W的最少硬币个数 我们记凑出n需要用到的最少硬币数量为f(n) 我们注意到了一个很棒的性质 : f(n)只与f(n-1) f(n-5) f( ...
- HZNU-ACM寒假集训Day3小结 搜索
简单搜索 1.DFS UVA 548 树 1.可以用数组方式实现二叉树,在申请结点时仍用“动态化静态”的思想,写newnode函数 2.给定二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据 ...
随机推荐
- Vue3中的Proxy作用在哪里?
目录 前言 Vue没有Proxy会怎么样? proxy开始 前言 在讲解Proxy之前,我们有些前置知识点是必要掌握的: Object相关静态函数 Reflect相关静态函数 简单说明知识盲点 名称 ...
- 5G/NR 波束管理
原文链接:http://www.sharetechnote.com/html/5G/5G_Phy_BeamManagement.html 1 为什么光束管理/光束控制? 我不认为高频部署中的波束传输信 ...
- JVM配合IDEA远程调试
前言 如果测试环境中运行的jar包项目报错,需要排错时,会不太方便,这个时候就可以通过远程调试的方式,在本地打断点的方式进行调试 正文 一.首先,运行测试环境的jar包需要加以下参数: java -j ...
- 安装hue时,make apps 编译报错
安装hue时,make apps 编译报错 :"Error: must have python development packages for 2.6 or 2.7. Could not ...
- 05.Delphi接口的多重继承深入
由于是IInterface,申明了SayHello,需要由继承类来实现函数,相对于03篇可以再精简一下 unit uSayHello; interface uses SysUtils, Windows ...
- 基于Hadoop3.1.2集群的Hive3.1.2安装(有不少坑)
前置条件: 已经安装好了带有HDFS, MapReduce, Yarn 功能的 Hadoop集群 链接: ubuntu18.04.2 hadoop3.1.2+zookeeper3.5.5高可用完全分布 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:多线程基础编程
class MyThread implements Runnable{ // 实现Runnable接口,作为线程的实现类 private String name ; // 表示线程的名称 public ...
- 一些linux基础命令
linux基本命令: mkdir -p a/b/c (-p 递归创建目录) tree a (a是文件名) :可以查看某个文件的文件结构(ps:a)创建一个.txt文件 touch 文件名.txt 批量 ...
- 【LeetCode 】验证回文串
[问题]给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写.说明:本题中,我们将空字符串定义为有效的回文串. 示例 : 输入: "A man, a plan, a ...
- php.laravel.log
看代码,原厂代码写的比较清楚,版本(laravel5.7) 简单使用,方便调试,详细使用需要详细查看文档. 在config/app.php 添加 'log' => env('APP_LOG', ...