WC2017 Day3

近似算法

0x00 提纲

  • 为什么需要近似算法
  • 近似算法简介
  • 总结

0x01 为什么需要近似算法?

  • 这一部分都在胡扯

算法的特点

  • 复杂度(时间,空间)
  • 正确性(方法正确性,程序正确性)
  • 简单性(程序结构简单,便于调试)

如何评价时间复杂度?

  • 对于给定问题,执行的基本运算次数
  • 基本运算选择(比较,加减乘除,置指针)
  • W(n) 最坏复杂度(Worst)
  • A(n) 平均复杂度(Average)

我们的需求?

  • 保证复杂度的前提下使算法尽量简单

基于时间的最优性

  • 最坏情况下最优
  • 平均情况下最优

算法最优?

  • 算法复杂度上界与问题复杂度下界相等

如何求问题复杂度下界?

  • 问题的输入输出规模(平凡下界)
  • 数学推导

如何求算法复杂度上界?

  • 瞎搞一个算法,直接计算基本运算次数
  • 显然你瞎搞出来的任何一个正确的算法都是一个上界

P,NP

  • P:时间复杂度与输入规模多项式相关,存在多项式时间算法
  • NP:不存在多项式时间算法(指数,阶乘)

判定问题

  • 答案只有是和否
  • 01背包的判定问题?
  • 搜索问题,组合优化问题和对应的判定问题

P类与NP类问题

  • P类:多项式时间内可解的判定问题
  • NP类:多项式时间内可验证的判定问题

多项式时间转换

  • 两个问题的答案可以在多项式时间内相互转化

0X02 为什么需要近似算法?

  • 有一些问题我们不知道有没有多项式时间算法
  • 我们需要近似算法来找到一个较优解
  • 较优解和最优解的比值r
  • 如果r为常数,称为常数近似比算法
  • 光对着PPT读是不是不太合适

近似算法分类

  • 完全可近似:可以无限趋紧最优解(背包问题)
  • 可近似:存在常数近似比算法(最小顶点覆盖,多级调度)
  • 不可近似:找不到常数近似比算法(TSP问题)

最小顶点覆盖问题

  • MVC算法 r=2

多机调度问题

  • 神TM多机调度,就是k划分问题
  • 把一个集合划分成k个子集,使这k个子集的元素和中最大值最小
  • G-MPS:贪心,按输入的顺序分配元素,把当前元素分配给当前最小的集合
  • r?$ 2-\frac{1}{k} $
  • DG-MPS:在G-MPS的基础上把元素从大到小排序
  • r?$ \frac{3}{2}-\frac{1}{2k} $

TSP

  • 最近邻法NN:每次找一个最近的没走过的点
  • r?$ \frac{1}{2}\left( \lceil log_2{n} \rceil +1 \right) $
  • 这不好使,随着城市规模变大越来越不精确
  • 有没有常数近似比算法?
  • 在满足三角不等式的情况下,确实存在常数近似比算法
  • 一般的TSP问题不存在常数近似比算法

总结

  • 并非所有问题都能用近似算法解决

信息学竞赛中的整数和多项式

  • 毕克大爷啊orz
  • orz和郑州的讲课差不多

0x00 加法,乘法和乘方

一堆集合,有属于关系,做多n个元素,计数

做过的题

JSOI 子集选取

  • $ 2^{nk} $
  • 打表题

有什么用?

  • 发现集合中的每个元素独立
  • 最后的答案一定是$ x^n $的形式

求斐波那契数列的第n项

  • 矩乘
  • 多项式取模
  • FFT优化多项式取模
  • 考虑原根,对于1或9结尾的质数p,找一个数使$ x^2 $ = 5 (mod p)
  • 认为x就是$ \sqrt{5} $,代进通项公式
  • 也可以递归
  • $ f_{2n-1}=f_{n}^2+f_{n-1}^2 $
  • $ f_{2n}=\left(2f_{n-1}+f_{n}\right)f_{n} $

亿兆京垓(Radixphi)

  • 直接贪心?会有精度问题。
  • $ p^n $ 有两项, $ \sqrt{5} $ 和整数项,这两项的系数分别是斐波那契数列,分数不好搞,把整数项系数乘二以后都是整数
  • 最终的目标是使选出集合中的$ \sqrt{5} $系数和为0,整数项系数和为2n
  • 显然选n个第0项是合法的,但是不能选n个
  • 选n个第0项?这和普通的斐波那契拆分一样。
  • 那么从大往小贪心也是可以的
  • 但是有负数?怎么办?
  • 不妨把整个斐波那契数列往左移47位,即令n=n+n*f[47],然后从大往小贪心
  • 这样贪心涉及的整个数列就都是正的
  • 最后的答案再-47
  • 稳!

卷积?

  • 直接暴力
  • 插值,可以快速幂
  • FFT优化插值

求$ \sum_{i=0}^{n}i^k $

  • 差分拆成组合数
  • 高斯消元
  • 插值

生成树计数

  • Matrix-Tree定理
  • 基尔霍夫矩阵

生成树计数改:边分红蓝两种,要求统计恰好含有k条红边的生成树个数

  • 设红边为x,蓝边为1
  • 还想刚才那么搞,最后$ x^k $就是要求的生成树个数
  • 多项式运算不好做,插值

生成树计数改二:边分红黄蓝绿四种,要求红色不少于黄色,蓝色不少于绿色

-红边$ {x^2}y \(,黄边y,蓝边\) x{y^2}$,绿边x

0x01 生成函数

  • 断线

0x02 Burnside引理 Polya定理

  • 这公式太烦了我实在不能在一页ppt的时间里敲出来

总结

  • orz 晚上试机,尝试在linux下码了个对拍,打了个起床困难综合征,居然Day0都有一道提答
  • 系统是Ubuntu 14.04 LTS
  • 没有IDE啊,我怎么遭得住
  • 临时学习命令行

转载于:https://www.cnblogs.com/LoveYayoi/p/6745468.html

WC2017 Day3相关推荐

  1. WC2017 Day1

    WC2017 Day1 字符串算法 0x00 字符串的性质 字符串的周期(period):例如abcabca 周期为3 字符串的border :相同前后缀 显然如果一个长为s字符串有长度为r的bord ...

  2. 纪中2018暑假培训day3提高a组改题记录(混有部分b组)

    day3 模拟赛,看了看a组题,发现是博弈论,非常开心(因为好玩),于是做的a组.结果差点爆零,死命纠结t1的sg函数,但其实只是一个dp,不用扯到sg函数的那种. t1: Description 被 ...

  3. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  4. Java基础day3

    Java基础day3 Java基础语法 1. switch语句 1.1 switch语句结构 1.2 switch语句练习-春夏秋冬分类 2. for循环 2.1 for循环格式 2.2 for循环练 ...

  5. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  6. python网络爬虫与信息提取 学习笔记day3

    Day3: 只需两行代码解析html或xml信息    具体代码实现:day3_1    注意BeautifulSoup的B和S需要大写,因为python大小写敏感 import requests r ...

  7. 【视觉项目】【day3】8.22号实验记录(利用canny检测之后的来进行模板匹配)

    [day3]8.22号实验记录(几乎没干正事的一天,利用canny检测之后的来进行模板匹配) 今天没搞代码,主要是问研究生学长工业摄像头的接法的,学长也不知道,明天问问老师... 晚上搞了一下cann ...

  8. Linux运维-day3

    Day3 Georgekai---习惯:操作前备份,操作后检查 虚拟机网络配置与远程连接及其拍错 **1.everything:windows中搜索文件的工具 2.接上次安装完CentOS,开始配置网 ...

  9. 句句真研—每日长难句打卡Day3

    句句真研-每日长难句打卡Day3

最新文章

  1. Android利用Jsoup解析html 开发网站客户端小记。
  2. Java ObjectOutputStream writeDouble()方法与示例
  3. java 减法基础_java基础之运算符
  4. js中多行字符串拼接
  5. 基于RF框架的接口测试之代码分层管理
  6. 南邮 | 算法分析与设计实验三:回溯法
  7. 解读全新闪存FlashSystem 9100
  8. linux执行历史命令用哪个键,Linux中如何使用history命令即历史命令
  9. 移动端 --- 解决苹果手机滑动卡顿的问题
  10. 计算机实战项目之 [含论文+辩论PPT+源码等]微信小程序社区疫情防控+后台管理|前后分离VUE[包运行成功
  11. Android 高仿微信支付键盘
  12. 自媒体平台:大鱼计划,20亿大鱼平台奖励金如何获取?
  13. App上架应用市场操作流程
  14. 密码学篇(数据完整性)
  15. onenote uwp版安装失败解决方法 错误代码0x80073cfd
  16. 采访 Paradigm合伙人 :Crypto将是席卷 世界 的强大 浪潮
  17. 计算机信息系统安全的概论,信息安全概论
  18. 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器
  19. 日语五十音图龙泉速记法
  20. Tensorflow—TFRecord文件生成与读取

热门文章

  1. 05_CSS 盒模型
  2. python tcl tk_安装Python WARNING: The version of Tcl/Tk (8.5.9)
  3. 电话骚扰 【响完一声开始没有任何声音】
  4. 3D游戏角色模型建模| ZBrush制作3D兽人
  5. js股票K线图,比较专业的K线图插件
  6. 下载吧!新书另一部分的电子版
  7. ACM简单题——不能被3整除的数
  8. 轻量级肝脏与肝脏瘤2.5D分割网络阅读笔记
  9. C和C++编程和学习文档
  10. 改进蚁群算法 改进flod算法对路径进行双向平滑度优化,提高路径的平滑度