二分算法
多A几道题就好
一名学生
展开
-
POJ 2976 Dropping tests (经典变形二分)
传送门题目大意就是给你一堆A[i]和B[i]问你去掉那K组可以使sigmaAset / sigmaBset最大很明显变形一下后就能很好知道题目是求 (A[i] + …. A[i+x]) = (B[i] + …. B[i+x])* mid 使mid最大,输出mid*100就行了代码#include <cstdio> #include <cstring> #include <algorithm> #原创 2016-08-03 14:25:52 · 167 阅读 · 0 评论 -
POJ 3579 Median
传送门题目大意是给你一串数字序列,问你这些在序列中所有数字的差的第M/2小的数是多少。M是差值的总数。直接二分答案,然后再二分搜就行了代码#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define LL __int64 using namespace std; const int maxn =原创 2016-08-03 15:44:37 · 205 阅读 · 0 评论 -
POJ 3662 Telephone Lines
传送门题目大意是选一条路从一到N有电话线要你连起来,但是电话线公司只给你报销K根线的费用,你搭建的最后费用是你搭建的所有线中最长那根线的长度。问你怎么搭建可以使费用最小,就是等与要你求这条路线里第K+1长的线很明显二分答案,然后用最短路跑一边判断是第几大的线#include <cstdio> #include <cstring> #include <algorithm> #include <cmat原创 2016-08-04 11:01:32 · 274 阅读 · 0 评论 -
CodeForces 231C To Add or Not to Add
传送门题目大意就是给你一些数字,问你最多k次操作后某个数字的最多出现次数、最小的能出现该次的数(最大化的出现次数,具有该最大化的出现次数的最小的数字的值),一次操作是给任意一个数加一。这是一道二分题 二分最大能拿到的数量问题就在于怎能判断这个数量能不能拿到以及记录此时的最小数字 我就是想不到优化方法才A不了的,但是之后听了大神们的想法后,豁然开朗,就是用一个前缀和。想知道前缀和解此题原理就自己推原创 2016-08-05 21:18:19 · 312 阅读 · 0 评论 -
HDU 3756 Dome of Circus (三分)
传送门题意很简单,就是给你N个三维坐标,要你求一个三菱锥把所有点罩进去,在边边也行,要你求出满足条件的最小体积的三菱锥的高H和底面半径R很简单三分就行了但是这题我自己当时过得很惨烈,我写搓了,结果靠交来测答案。先是我写搓的代码,给巨巨们引以为戒#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #def原创 2016-08-05 21:49:33 · 200 阅读 · 0 评论 -
HDU 1007 Quoit Design 最小点对基础模板
传送门题目大意是找一个最小的圆覆盖给你一堆点中的两个点,输出改圆的半径基础最近点对模板题#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <map> #define LL __int64 using namespace std; const int maxn = 100010; st原创 2016-08-06 10:59:40 · 247 阅读 · 0 评论 -
POJ 3714 Raid (最近点对)感觉数据怪怪的
传送门题目大意就是要你从两组点钟选出距离最小的两点,输出他们的距离。 一道经典最小点对问题+模板我看了晚上很多人的代码,这题交的时候感觉怪怪的 比如G++wa , C++ac这类情况我的代码也是用c++才能ac#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <map> #def原创 2016-08-06 16:22:31 · 504 阅读 · 0 评论 -
POJ 1064 Cable master
题目链接怎么讲,一道水题,但是处理起来比较麻烦 就是先把读入的分数乘以100用int来处理仔细想想就好,就当是二分的模板#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> using namespace std; int n,k;int a[10010];bool c原创 2016-08-03 10:49:04 · 183 阅读 · 0 评论