今天是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-;
double f(double x)
{
return x*x*x - *x*x + *x - ;
}
int main()
{
double root, x1 = , x2 = ,y;
root = x1+(x2-x1)/;
y = f(root);
while( fabs(y) > EPS)
{
if( y > ) x2 = root;
else x1 = root;
root = x1+(x2 - x1)/;
y = f(root);
}
printf("该方程的一个根为:%.8f\n",root);
return ;
}

二分法求方程的根(举例)

例题:POJ 2456 Aggressive cows

PS:最小值最大这类问题 ,先考虑二分是否可行 ,如果可行首选二分

  2.分治   其基本概念为:把一个任务,分成形式和原任务相同,但规模更小的 几个部分任务(通常是两个部分),分别完成,或只 需要选一部完成。然后再处理完成后的这一个或几个 部分的结果,实现整个任务的完成。

  其典型应用为:归并排序和快速排序。

例题:1.输入n个数输出前m大的数

   2.求逆序数

   3.分假币

  3.贪心   每一步行动总是按某种指标选取最优的操作来进行, 该指标只看眼前,并不考虑以后可能造成的影响。 贪心算法需要证明其正确性。

例题:1. OpenJ_Bailian 4110 圣诞老人的礼物-Santa Clau’s Gifts

     2.OpenJ_Bailian 4151 电影节

     3.POJ 3190 Stall Reservations

     4.POJ 1328 Radar Installation

  4.动态规划

  动规解题的一般思路:

  1. 将原问题分解为子问题

  2. 确定状态(整个问题的时间复杂度是状态数目乘以计算每个状态所需 时间。)

  3. 确定一些初始状态(边界状态)的值

  4. 确定状态转移方程

  能用动规解决的问题的特点

  1) 问题具有最优子结构性质。

  2) 无后效性。(当前的若干个状态值一旦确定,则此后过程 的演变就只和这若干个状态的值有关,和之前是采取哪 种手段或经过哪条路径演变到当前的这若干个状态,没 有关系。)

  解题思路:

  1.找子问题

  2. 确定状态

  3. 找出状态转移方程:

  动规的三种形式:

  1)记忆递归型

  2) “我为人人”递推型

  3) “人人为我”递推型(用的较多)

例题:1.POJ 1163 The Triangle

     2.OpenJ_Bailian 2757 最长上升子序列

ACM北大暑期课培训第一天的更多相关文章

  1. ACM北大暑期课培训第七天

    昨天没时间写,今天补下. 昨天学的强连通分支,桥和割点,基本的网络流算法以及Dinic算法: 强连通分支 定义:在有向图G中,如果任意两个不同的顶点 相互可达,则称该有向图是强连通的. 有向图G的极大 ...

  2. ACM北大暑期课培训第六天

    今天讲了DFA,最小生成树以及最短路 DFA(接着昨天讲) 如何高效的构造前缀指针: 步骤为:根据深度一一求出每一个节点的前缀指针.对于当前节点,设他的父节点与他的边上的字符为Ch,如果他的父节点的前 ...

  3. ACM北大暑期课培训第二天

    今天继续讲的动态规划 ... 补充几个要点: 1. 善于利用滚动数组(可减少内存,用法与计算方向有关) 2.升维 3.可利用一些数据结构等方法使代码更优  (比如优先队列) 4.一般看到数值小的 (十 ...

  4. ACM北大暑期课培训第八天

    今天学了有流量下界的网络最大流,最小费用最大流,计算几何. 有流量下界的网络最大流 如果流网络中每条边e对应两个数字B(e)和C(e), 分别表示该边上的流量至少要是B(e),最多 C(e),那么,在 ...

  5. ACM北大暑期课培训第五天

    今天讲的扫描线,树状数组,并查集还有前缀树. 扫描线   扫描线的思路:使用一条垂直于X轴的直线,从左到右来扫描这个图形,明显,只有在碰到矩形的左边界或者右边界的时候,这个线段所扫描到的情况才会改变, ...

  6. ACM北大暑期课培训第四天

    今天讲了几个高级搜索算法:A* ,迭代加深,Alpha-Beta剪枝   以及线段树 A*算法 启发式搜索算法(A算法) : 在BFS算法中,若对每个状态n都设定估价函数 f(n)=g(n)+h(n) ...

  7. ACM北大暑期课培训第三天

    今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...

  8. 2013=7=12 ACM培训第一天

    ACM培训第一天,尽管我嘴上说是来打酱油的,但我非常想学好.1.一定要多思考,多总结:2.多问同学 :3.学会向女生说话,大胆,自信.(今天有女生向我说话了,很高兴.她很大胆,我要向她学习...... ...

  9. 牛客网 暑期ACM多校训练营(第一场)A.Monotonic Matrix-矩阵转化为格子路径的非降路径计数,Lindström-Gessel-Viennot引理-组合数学

    牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你 ...

随机推荐

  1. 只要是使用函数file_get_contents访问 https 的网站都要开启

    使用file_get_contents();报错failed to open stream: Unable to find the socket transport "ssl" - ...

  2. Python os.getcwd() 方法

    Python os.getcwd() 方法  Python OS 文件/目录方法 概述 os.getcwd() 方法用于返回当前工作目录. 语法 getcwd()方法语法格式如下: os.getcwd ...

  3. 微信小程序中 不点击picker 点击一个button 怎么调用picker 弹出选择框

    把按钮放在picker区域里就好了 picker本身就是一个区域 <picker mode = "selector" class='info' bindchange=&quo ...

  4. sorted排序算法

  5. 【js】vue 2.5.1 源码学习 (四) 钩子函数 资源选项 watch 的合并策略

    大体思路 (三)    1.钩子函数 自定义策略       LIFECYCLE_HOOKS= []      created = [function(){} , function(){}] 组装方法 ...

  6. P1013 高精度加法

    题目描述 给你两个很大的正整数A和B,你需要计算他们的和. 输入格式 输入一行包含两个正整数A和B,以一个空格分隔(A和B的位数都不超过 \(10^5\)) 输出格式 输出一行包含一个整数,表示A+B ...

  7. Tufurama CodeForces - 961E (cdq分治)

    题面 One day Polycarp decided to rewatch his absolute favourite episode of well-known TV series " ...

  8. poj2826 An Easy Problem?!(计算几何)

    传送门 •题意 两根木块组成一个槽,给定两个木块的两个端点 雨水竖直下落,问槽里能装多少雨水, •思路 找不能收集到雨水的情况 我们令线段较高的点为s点,较低的点为e点 ①两条木块没有交点 ②平行或重 ...

  9. IdentityServer4 sign-in

    原文地址 Sign-in IdentityServer 代表 user 分配token之前,user必须登录IdentityServer Cookie authentication 使用 cookie ...

  10. sparksql 练习题两道

    第一题:select '{"id":1,"name":{"url":"http://xxx/yyy/zz/test.js" ...