今天是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; }