摘要:分类: 高效搜索题意: 有N个pie,分成F + 1份,面积相同,且每个pie必须是完整的,求最大的每个分块的面积,精确到误差小于0.001输入: T组数据,每组数据的N,F,以及每个pie的半径,都是整数输出: 最大的分块面积,误差小于0.001解法: 注意: ①PI的精确程度会影响答案 ②floor函数的使用 搜索, 按照满足条件的分块搜索答案, 提高效率, 二分查找 关键在于,本题的二分如何写,解空间是多少double findAns(double ll, double rr){ double leftVal = ll; double rightVal = ...
阅读全文
摘要:分类: 高效搜索,二分题意: 给定电脑各种配件,每个配件有价格和品质因子,在给定钱数b的前提下,每种配置选一个,使得最小品质因数最大,保证有解输入: 测试组数T, 钱数b,配件个数n,以下n行为每个配件的分类, 名称, 价格, 品质因子输出: 最大的品质因数方案的品质因子核心: 搜索答案,按照品质因子个数进行二分查找 二分查找是个蛮有趣的问题,恰好这个题里面一些细节处理不好是通不过测试的。 ① 基本二分: int right = upper; while(left = num) right = mid; else left = mid +...
阅读全文
摘要:分类: 枚举 和 剪枝题意: 给定矩阵由0,1组成,使用最少的改变(使0变成1),使得任何元素的上下左右元素(如果存在)和为偶数输入: 测试组数, 矩阵大小n ,矩阵每一个数输出: 最小翻转次数,无法实现则输出-1解法: 类似关灯问题,枚举第一行的状态(2^n)种情况,依题意,所有的后续方格可以由上面确定,检查翻转次数与是否满足 关键在于如何编写,即按照顺序确定每一个方格的状态 在代码中体现为 check函数,注意实现过程中适当剪枝,提高速度#include #include #include #include #include #include #include #incl...
阅读全文