当前位置: 首页 > news >正文

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-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;
}
二分法求方程的根(举例)

 

例题: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 最长上升子序列

 

转载于:https://www.cnblogs.com/l999q/p/9356915.html

相关文章:

  • Delphi窗体创建释放过程及单元文件小结(转)
  • Linux部署zabbix3.4 结合钉钉智能报警
  • 学生分数排序
  • zabbix3.4上简单web监测功能测试
  • linux系统man查询命令等级与意义
  • 关于ES6的Promise的使用深入理解
  • P1065 津津的储蓄计划
  • 2018年 7月总结8月计划
  • Proteus仿真_01、 8086 IO译码仿真
  • CentOS 7之Postfix部署系列 (二) CentOS网络设置
  • AJAX PHP 请求实例
  • 使用Formik轻松开发更高质量的React表单(二)使用指南
  • HDU-3874 Necklace 线段树+离线
  • topcoder srm 590 div1 (max_flow_template)
  • JavaScript 代码格式化
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Android组件 - 收藏集 - 掘金
  • C# 免费离线人脸识别 2.0 Demo
  • python_bomb----数据类型总结
  • python3 使用 asyncio 代替线程
  • Terraform入门 - 1. 安装Terraform
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 编写符合Python风格的对象
  • 成为一名优秀的Developer的书单
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 通过调用文摘列表API获取文摘
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​ssh免密码登录设置及问题总结
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #{}和${}的区别?
  • #图像处理
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $refs 、$nextTic、动态组件、name的使用
  • (力扣)1314.矩阵区域和
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十八)SpringBoot之发送QQ邮件
  • (十六)串口UART
  • (推荐)叮当——中文语音对话机器人
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net访问oracle数据库性能问题
  • .NET微信公众号开发-2.0创建自定义菜单
  • @ComponentScan比较
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [@Controller]4 详解@ModelAttribute
  • []FET-430SIM508 研究日志 11.3.31
  • [2016.7 day.5] T2
  • [20170705]diff比较执行结果的内容.txt
  • [BeginCTF]真龙之力
  • [bzoj1912]异象石(set)
  • [C#]扩展方法