WC2017 Day3
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相关推荐
- WC2017 Day1
WC2017 Day1 字符串算法 0x00 字符串的性质 字符串的周期(period):例如abcabca 周期为3 字符串的border :相同前后缀 显然如果一个长为s字符串有长度为r的bord ...
- 纪中2018暑假培训day3提高a组改题记录(混有部分b组)
day3 模拟赛,看了看a组题,发现是博弈论,非常开心(因为好玩),于是做的a组.结果差点爆零,死命纠结t1的sg函数,但其实只是一个dp,不用扯到sg函数的那种. t1: Description 被 ...
- Python学习记录day3
2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...
- Java基础day3
Java基础day3 Java基础语法 1. switch语句 1.1 switch语句结构 1.2 switch语句练习-春夏秋冬分类 2. for循环 2.1 for循环格式 2.2 for循环练 ...
- Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】
视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...
- python网络爬虫与信息提取 学习笔记day3
Day3: 只需两行代码解析html或xml信息 具体代码实现:day3_1 注意BeautifulSoup的B和S需要大写,因为python大小写敏感 import requests r ...
- 【视觉项目】【day3】8.22号实验记录(利用canny检测之后的来进行模板匹配)
[day3]8.22号实验记录(几乎没干正事的一天,利用canny检测之后的来进行模板匹配) 今天没搞代码,主要是问研究生学长工业摄像头的接法的,学长也不知道,明天问问老师... 晚上搞了一下cann ...
- Linux运维-day3
Day3 Georgekai---习惯:操作前备份,操作后检查 虚拟机网络配置与远程连接及其拍错 **1.everything:windows中搜索文件的工具 2.接上次安装完CentOS,开始配置网 ...
- 句句真研—每日长难句打卡Day3
句句真研-每日长难句打卡Day3
最新文章
- Android利用Jsoup解析html 开发网站客户端小记。
- Java ObjectOutputStream writeDouble()方法与示例
- java 减法基础_java基础之运算符
- js中多行字符串拼接
- 基于RF框架的接口测试之代码分层管理
- 南邮 | 算法分析与设计实验三:回溯法
- 解读全新闪存FlashSystem 9100
- linux执行历史命令用哪个键,Linux中如何使用history命令即历史命令
- 移动端 --- 解决苹果手机滑动卡顿的问题
- 计算机实战项目之 [含论文+辩论PPT+源码等]微信小程序社区疫情防控+后台管理|前后分离VUE[包运行成功
- Android 高仿微信支付键盘
- 自媒体平台:大鱼计划,20亿大鱼平台奖励金如何获取?
- App上架应用市场操作流程
- 密码学篇(数据完整性)
- onenote uwp版安装失败解决方法 错误代码0x80073cfd
- 采访 Paradigm合伙人 :Crypto将是席卷 世界 的强大 浪潮
- 计算机信息系统安全的概论,信息安全概论
- 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器
- 日语五十音图龙泉速记法
- Tensorflow—TFRecord文件生成与读取
热门文章
- 05_CSS 盒模型
- python tcl tk_安装Python WARNING: The version of Tcl/Tk (8.5.9)
- 电话骚扰 【响完一声开始没有任何声音】
- 3D游戏角色模型建模| ZBrush制作3D兽人
- js股票K线图,比较专业的K线图插件
- 下载吧!新书另一部分的电子版
- ACM简单题——不能被3整除的数
- 轻量级肝脏与肝脏瘤2.5D分割网络阅读笔记
- C和C++编程和学习文档
- 改进蚁群算法 改进flod算法对路径进行双向平滑度优化,提高路径的平滑度