今天是ACM北大暑期课开课的第一天,很幸运能参加这次暑期课,接下来的几天我将会每天写博客来总结我每天所学的内容。好吧下面开始进入正题:

  今天第一节课,郭炜老师给我们讲了二分分治贪心和动态规划。

  1.二分主要讲了两个函数:binary_search 和 lower_bound

    binary_search  在包含size个元素的、从小到大排序的int数组a里查找元素 p,如果找到,则返回元素下标,如果找不到,则返回-1。

    lower_bound    在包含size个元素的、从小到大排序的int数组a里查找比给 定整数p小的,下标最大的元素。找到则返回其下标,找不到则返回-1。

  PS :为了防止 (L+R)过大溢出:  int mid = L+(R-L)/2;

  还讲了二分法求方程的根 

  

///求方程   x*x*x - 5*x*x + 10*x - 80 的一个根a
///已知 f(0) < 0 ; f(100) > 0
///要求|f(a)|<=1e-6
#include <stdio.h>
#include <math.h>
double EPS = 1e-6;
double f(double x)
{
    return x*x*x - 5*x*x + 10*x - 80;
}
int main()
{
    double root, x1 = 0, x2 = 100,y;
    root = x1+(x2-x1)/2;
    y = f(root);
    while( fabs(y) > EPS)
    {
        if( y > 0 ) x2 = root;
        else x1 = root;
        root = x1+(x2 - x1)/2;
        y = f(root);
    }
    printf("该方程的一个根为:%.8f\n",root);
    return 0;
}
二分法求方程的根(举例)

相关文章: