ACM北大暑期课培训第一天
今天是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 ;
}
二分法求方程的根(举例)
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北大暑期课培训第一天的更多相关文章
- ACM北大暑期课培训第七天
昨天没时间写,今天补下. 昨天学的强连通分支,桥和割点,基本的网络流算法以及Dinic算法: 强连通分支 定义:在有向图G中,如果任意两个不同的顶点 相互可达,则称该有向图是强连通的. 有向图G的极大 ...
- ACM北大暑期课培训第六天
今天讲了DFA,最小生成树以及最短路 DFA(接着昨天讲) 如何高效的构造前缀指针: 步骤为:根据深度一一求出每一个节点的前缀指针.对于当前节点,设他的父节点与他的边上的字符为Ch,如果他的父节点的前 ...
- ACM北大暑期课培训第二天
今天继续讲的动态规划 ... 补充几个要点: 1. 善于利用滚动数组(可减少内存,用法与计算方向有关) 2.升维 3.可利用一些数据结构等方法使代码更优 (比如优先队列) 4.一般看到数值小的 (十 ...
- ACM北大暑期课培训第八天
今天学了有流量下界的网络最大流,最小费用最大流,计算几何. 有流量下界的网络最大流 如果流网络中每条边e对应两个数字B(e)和C(e), 分别表示该边上的流量至少要是B(e),最多 C(e),那么,在 ...
- ACM北大暑期课培训第五天
今天讲的扫描线,树状数组,并查集还有前缀树. 扫描线 扫描线的思路:使用一条垂直于X轴的直线,从左到右来扫描这个图形,明显,只有在碰到矩形的左边界或者右边界的时候,这个线段所扫描到的情况才会改变, ...
- ACM北大暑期课培训第四天
今天讲了几个高级搜索算法:A* ,迭代加深,Alpha-Beta剪枝 以及线段树 A*算法 启发式搜索算法(A算法) : 在BFS算法中,若对每个状态n都设定估价函数 f(n)=g(n)+h(n) ...
- ACM北大暑期课培训第三天
今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...
- 2013=7=12 ACM培训第一天
ACM培训第一天,尽管我嘴上说是来打酱油的,但我非常想学好.1.一定要多思考,多总结:2.多问同学 :3.学会向女生说话,大胆,自信.(今天有女生向我说话了,很高兴.她很大胆,我要向她学习...... ...
- 牛客网 暑期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 ,问你 ...
随机推荐
- 2019-10-7-dotnet-Framework-源代码-·-ScrollViewer
title author date CreateTime categories dotnet Framework 源代码 · ScrollViewer lindexi 2019-10-07 13:15 ...
- CodeForces 1204E"Natasha, Sasha and the Prefix Sums"(动态规划 or 组合数学--卡特兰数的应用)
传送门 •参考资料 [1]:CF1204E Natasha, Sasha and the Prefix Sums(动态规划+组合数) •题意 由 n 个 1 和 m 个 -1 组成的 $C_{n+m} ...
- H3C 入站包过滤工作流程
- java 利用Class获取类的属性信息
package junereflect624; import java.lang.reflect.Modifier; class A { } interface B{ } interface C{ } ...
- 2018-8-10-win10-uwp-绑定-OneWay-无法使用
title author date CreateTime categories win10 uwp 绑定 OneWay 无法使用 lindexi 2018-08-10 19:16:50 +0800 2 ...
- H3C 迭代查询
- PowerShell 通过 WMI 获取系统安装的驱动
本文告诉大家如何通过 WMI 获取用户已经安装的驱动程序 通过下面代码可以获取用户已经安装的驱动程序 Get-WmiObject Win32_SystemDriver | Format-List Ca ...
- H3C擦除配置
- 2019 ICPC 陕西西安邀请赛 D. Miku and Generals
传送门:https://nanti.jisuanke.com/t/39271 题意: 给你n个人,每个人有一个权值 a_i ,(a_i是可以被100整除的))现在需要你将n个人分成两组,有m个关系 ...
- Channel 9视频整理【2】
JadeChang https://channel9.msdn.com/Niners/JadeChang 繁体中文视频 2016 Nano Server / Docker / Containers 打 ...