二分
Dejavu1z
做题,总结,不断的学习
展开
-
codeforces 1010A(二分答案)
题意描述火箭自身的重量为m,每次从第i个星球起飞的系数为a[i],从第i个星球降落的系数为b[i],飞行路线为1起飞-2降落-2起飞-3降落-n降落-n起飞-1降落,如果火箭携带的燃料重量为x,则每次起飞降落花费的燃料为(x+m)/系数。询问可以使火箭完成飞行路线所需要的最少重量的燃料,如果不能完成,则输出-1思路这道题很明显是二分答案,check函数需要判断的是x+m吨的燃料最后结束飞行后剩余的重量是否大于m,最后二分结束后还需要再判断一下二分后的答案是否符合条件,如果不符合就输出-1。这道题还有一原创 2020-07-16 17:26:42 · 318 阅读 · 0 评论 -
Good Numbers (hard version) (位运算)
题意描述定义好数为3x3^{x}3x加起来的和,给定一个数n,让你求最小的大于n的好数思路我们可以将问题抽象成3进制,然后二分答案,寻找到最小的好数即可AC代码#include<bits/stdc++.h>#define x first#define y second#define IOS ios::sync_with_stdio(false);cin.tie(0);using namespace std;typedef unsigned long long ULL;typ原创 2020-07-08 18:56:47 · 204 阅读 · 0 评论 -
扩散(二分答案+并查集)
题目描述一个点每过一个单位时间就会向四个方向扩散一个距离,两个点a、b连通,记作e(a,b),当且仅当a、b的扩散区域有公共部分。连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。给定平面上的n给点,问最早什么时刻它们形成一个连通块。思路我们可以二分答案,然后对于每个时间,判断每个点之间的曼哈顿距离是否小于时间的两倍(因为两个点是一起扩散的)。AC代码#include<bits/stdc++.h>#define x first#原创 2020-07-08 18:17:14 · 363 阅读 · 0 评论 -
分巧克力 (第八届蓝桥杯省赛C++A/B组)
题意描述儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。当...原创 2020-03-06 15:38:48 · 346 阅读 · 0 评论 -
机器人跳跃问题 (二分)
题意描述机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为 i 的建筑高度为H(i)个单位。起初,机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E,下一步它将跳到第k+1个建筑。如果H(k+1)>E,那么机器人就失去H(k+1)-E的能量值,否则...原创 2020-03-06 14:26:53 · 539 阅读 · 1 评论