
------二分法
fisty
hi
展开
-
poj 3258 River Hopscotch
#include #include using namespace std;#define MAX_N 100000#define INF 1000000000int L,N,M;int x[MAX_N];bool C(int d){ int last = 0; for(int i = 1;i < N - M + 2; i++){原创 2014-10-02 17:34:05 · 403 阅读 · 0 评论 -
hdu 5178 pairs
我们将所有位置按从小到大排序,题目的本质上是对于每个a,找到在其右边最远的b使得|x[b]−x[a]|≤k,累计b-a的和就行了,由于b有单调性,因此对于每个a增加,将b直接扫过去找到符合上述不等式的最远的b,再累加答案即可,当然也对于所有的a,二分出最远的b,累加答案,记得要开long long。/*******************************************原创 2015-03-05 20:18:04 · 611 阅读 · 0 评论 -
uva 1421 箭术 (二分)
题目大意:有n个平行与x轴的线段,每条线段代表一个靶子。你的任务是判断是否可以站在x轴上[0,w]区间的某个位置射箭,使得箭能穿过所有靶子。解题思路:1、二分人站的位置,对于每个位置,维护靶子的可以击中的角度,[L, R]是现在箭可以到达的角度区间,[l, r] 是后面靶子的角度区间。2、有一个函数是atan2(y, x)所表达的意思是坐标原点(0, 0)为起点,指向(x,原创 2015-02-15 11:54:30 · 726 阅读 · 0 评论 -
uva12124 组装电脑
/*********************** * Author:fisty * Data:2014-12-10 *二分法,最大化最小值 *uva12124 **********************/#include #include #include #include #include #include #include using namespace std;原创 2014-12-10 22:42:55 · 562 阅读 · 0 评论 -
uva12097 pie
/********************* * Author:fisty * Data:2014-12-11 * uva12097 * 二分法 * ********************/#include #include #include #include using namespace std;const double PI = acos(-1.0);const i原创 2014-12-11 17:21:22 · 562 阅读 · 0 评论 -
03-1. 二分法求多项式单根(20) MOOC
二分法求函数根的原理为:如果连续函数f(x)在区间[a, b]的两个端点取值异号,即f(a)f(b)二分法的步骤为:检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则如果f(a)f(b)如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2, b],令a=(a+b)/2,重复循环;原创 2015-01-13 16:00:57 · 618 阅读 · 0 评论 -
uva 11627 Slalom
显然sj越小,越容易存在一条路线完成任务,那么我们可以先通过二分找到一个可能的最大的sj,再在所有的滑雪板中挑出一个和这个sj最近接的数即可。 在判断当前sj下能够穿过所有门时,可以自顶向下,逐步约束人能够到达的x坐标上的范围,直到这个范围变成空集或者所有的门都经过了为止。/* ***********************************************Autho原创 2014-12-19 16:43:43 · 557 阅读 · 0 评论 -
poj 2976 Dropping tests
#include #include #include using namespace std;#define MAX_N 1010#define INF 10000000000int n,m;double a[MAX_N],b[MAX_N];double y[MAX_N];bool C(double x){ for(int i = 0;i < n;i++){原创 2014-10-02 17:41:06 · 434 阅读 · 0 评论 -
poj 3111 K Best
#include #include #include using namespace std;const int MAX_N = 101000;const int INF = 100000000;int n,m;int v[MAX_N], w[MAX_N];int ans[MAX_N];struct P{ double first; in原创 2014-10-02 17:36:48 · 460 阅读 · 0 评论 -
poj3579
#include #include #include using namespace std;#define MAX_N 100010typedef long long LL;int N;int x[MAX_N];bool C(int m){ LL total = (LL) N * (N - 1) / 2; LL num = 0;原创 2014-10-01 22:59:10 · 546 阅读 · 0 评论 -
poj3662
#include #include #include #include #include using namespace std;int n,k,m;const int MAX_N = 10010;const int INF = 1011111111;struct edge{ int v; int cost; edge(int原创 2014-10-01 22:56:55 · 706 阅读 · 0 评论 -
poj3685
for(int i = 0;i < N; i++){ sum += N - lower_bound(i+1, x); } return sum > N*N - M;}LL solve(){ LL lb = -50000000000, ub = 20000000000; while(ub - lb >原创 2014-10-01 22:53:29 · 517 阅读 · 0 评论 -
codeforce 501场
501AContest/*********************************************** * Author: fisty * Created Time: 2015/3/20 10:35:58 * File Name : 501A.cpp ******************************************原创 2015-03-22 16:15:32 · 419 阅读 · 0 评论