kk_想要学习的知识

2018/4/27

计算几何

.简介

计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往往题目描述还常为英文,所以还是需要一定的题量支撑,来判断具体考察的是什么。

 

.题型分类

下列仅为一部分,可与《算法与实现》第三章计算几何互相补充。

1.点

判断点是否在多边形中★★

平面最近点对/最远点对★

曼哈顿距离

点集的有序化(极角序,水平序)

2.线段

判断线段是否在多边形内★

线段求交★

    向量叉积/点积★

3.面(二维计算几何)

判断四点共面★

三角形相关重点

计算多个矩形组合成的图形的周长(降维思想)★★

凸包问题 Graham算法 滚包裹法 ★★

旋转卡壳

半平面交

多边形重心

4.三维计算几何

三维点积

三维叉积

三维凸包

 

.模板整理

《算法与实现》第三章已经特别全,建议两天的时候抽出半天的时间慢慢把这一章所有函数看一遍。再加上-f_zyj的模板的计算几何单元,基本上省赛难度的几何题所用模板都有了。计算几何在省赛被考到,基本上都是模板题,不需要怎么改,但是其模板往往都是50行以上,又长又复杂,所以敲模板时一定要认真,别犯低级错误。

 


2018/4/25

DP

.简介

ACM中,动态规划是一种将一个复杂问题分为多个简单的小问题的思想。在使用动态规划时,原问题须满足重叠子问题和最优子结构这个性质。

运用动态规划思想设计的算法一般比朴素的算法高效很多。因为在计算某个状态的时候,已经被计算的子问题将不需要重复计算,而是调用之前存储下的结果。这样就减少了大量的重复计算。

动态规划思想的本质是在一个有向无环图中,求一个函数的最优值,也可以看做是一个加入了“记忆化”的搜索过程。


.算法分类

1.基础DP ★★★

1.1 整数划分 五种

1.2 双向DP

 

2.链(环)式动态规划 ★★★

2.1背包问题

01背包

完全背包

多重背包

混合背包

二维费用背包

分组背包

2.2 连续序列

最大连续子序列 MCS

最长公共子序列LCS  (有的会用到滚动数组)

最长上升子序列 LIS

最大连续子矩阵

首尾相连的最大字段和

最大M子段和

3. 其他较难动态规划 (常用到状态压缩)

3.1区间DP ★★

3.2概率(期望)DP ★★

3.3数位DP★

3.4树形DP★

3.5集合DP

3.6斜率DP

 

.模板整理

分类中★号越多越需要整理,但注意★号越多也更需要先理解。因为比赛中遇到的往往都是原算法分类的变形,要求可以灵活地修改模板。

.练习题集

NYOJ动态规划分类

HDUOJ 46道 见文件夹(有几道比较难,可放到最后做)

XYNUOJ 动态规划分类

五.其他

动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段。动态规划的理论性和实践性都比较强,一方面需要理解“状态”、“状态转移”、“最优子结构”、“重叠子问题”等概念,另一方面又需要根据题目的条件灵活设计算法,可以这么说,对动态规划的掌握情况在很大程度上能直接影响一个选手的分析和建模能力。


数据结构

一.简介

数据结构在比赛中通常用于对一些题目逻辑简单,但是测试数据比较大,用朴素(模拟或暴力)算法,会导致超时或超出内存限制的题目。重点算法需要熟悉掌握和灵活应用。


二.算法分类

1.线性表

 单调栈

队列 双端队列 优先队列

链表

块状链表

2.集合

2.1散列表★

2.2并查集 /带权并查集★

2.3二分查找★

3.排序 //虽然ACM比赛中排序大部分都是直接用sort,但是花一些时间去明白下面排序算法,有利于提高以后对其他算法的抽象理解能力,还是很有必要的

3.1朴素排序算法

插入排序

冒泡排序

3.2高效排序算法

归并排序算法

快速排序算法

线性排序算法

4.树的基本概念★

4.1二叉树

二叉树的先序,后序,中序遍历和层次遍历。

二叉树的链式表示法和数组表示法

二叉排序树(二叉搜索树)

Treap名次树

平衡二叉树 Size Balance Tree

伸展树 实现可分裂与合并的序列

4.2  RMQ问题 ST表 ★

线段树 动态范围最小值问题 ★

主席树 查询区间内有多少不同的数 ★

划分树

笛卡尔树

4.3堆 (完全二叉树)

二叉堆

左偏树

5.其他

树状数组

逆序数★

滚动数组

树链剖分


资料中没有的部分可百度学习。另外可以把html文件和mhtml文件的默认打开方式从IE调为自己用的浏览器,IE真的是太卡了。

三.模板整理

同数学模块一样,本模块算法也比较多,而且有些短时间可能难以明白。请务必先学懂学通★号的部分,其他的难度过高,出现在省赛的几率很低,仅做了解,知道其作用和整理下模板题目即可。



字符串

.简介

字符串处理在ACM省赛中是每年必出,而且往往是铜牌必A题,难度不高,但是考验做题速度和准确性,特别考察对小细节的处理,可谓是坑点十足,而且特别消耗时间。所以在赛场说往往都是被排到第4道或者第5道题来做,基本上没有队伍会选择首先做字符串题目。

 

.算法分类

0.简单模拟题

1.(四则运算)表达式计算

2.Trie 字典树

3.字符串匹配KMP

4.后缀数组

5.扩展KMP

6.最长公共前缀(LCP)

7.基于哈希值的LCP算法

8.最长重复子串

9.最长回文子串manacher

10.字符串散列

11.串的最小表示

12.AC自动机(做两三道题即可)

 

.模板整理

上述每一种都可以整理一下。比赛中也是对上述某种模板的改编,决不会简简单单考模板。

STL标准模板库

.简介

STL和数据结构在ICPC竞赛的作用类似,大部分情况都是题目很难用朴素算法在规定的时间和内存条件中完成,才不得不用的一种优化方式。

ACM竞赛中,需要用到数组、字符串、队列、堆栈、链表、平衡二叉检索树等数据结构和排序、搜索算法,以提高程序的时间、空间运行效率。这些数据结构如果都需要手工来编写,那是相当麻烦的事情,幸运的是C++中包含了一个C++ STL,又称C++泛型库,它在std命名空间中定义了常用的数据结构和算法,使用起来十分方便。

 

.内容范围

1.string 字符串 流式读写 头文件<string>  stringstream  头文件<sstream>)

2.排序和检索 sort  头文件<algorithm>

3.不定长数组:vector 容器

4.集合set

5.映射map

6.栈,队列与优先队列

7.list双向链表容器

8.bitset位集合容器

9.deque双端队列容器(不太重要)

 

.补充内容

关于sort:(重要)

1.待排序/查找的元素可以放在数组里,也可以放在vector里。前者用sort(a,a+n)的方式调用,后者用sort(v.begin,y.end())的方式调用。

2.lower_bound的作用是查找“大于或者等于x的第一个位置”。

upper_bound的作用是查找“大于或者等于x的第一个位置”。

      unique函数可以删除有序数组中的重复元素。

 

.模板整理

可以像数据结构一样每种整理一个经典的模板题,多了意义也不大,关键是理解并灵活应用和修改。


图论

模块中经典算法的思想;

最短路径:Dijkstra、bellman-ford、spfa、floyd、heap(堆)+Dijkstra;

最小生成树:prim、Kruskal;(图的其他存储形式实现)

topology-sort_拓扑;

重构图;

并查集;

二分图的最大匹配_ 匈牙利算法;

最大流的增广路_ KM算法;

差分分约束系统的建立和求和;

最小费用最大流;

KE算法;

Dinic算法;

双连通分量;

强连通分支及其缩点;

图的割边和割点;

最小割模型、网络流规约;

度限制最小生成树和第K最短;

最短路、最小生成树、二分图、最大流(抽象建模);

最优比率生成树;

最小树形图;

次小生成树;

无向图、有向图的最小环;

简介

图(graph)是数据结构和算法学中最强大的框架之一。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。在历届比赛中总会有1-2到题目与图论相关,图论问题往往会和现实问题相结合,而对于同一道问题,总会有好几种解法。而不同的解法往往并不是都可以有效的解决问题,因此,在解决问题时需要对题目进行仔细的研究,考虑是否存在特殊情况(有重边,是否存在回路,是否存在负权值),选出最适合的算法,才能快速解决问题。

算法分类

1.拓扑排序

2.最短路径

3.最小生成树

4.欧拉回路

5.二分匹配

6.并查集

.题目汇总:

1.XYNUOJ中NYOJ图论分类所有题目

2.HDUOJ上的题目 优先做AC数高的题目

3.HDU 图论

以下是最小生成树+并查集

Hdu 官方分类网址:http://acm.hdu.edu.cn/typeclass.php

 

HDU】

1213 How Many Tables 基础并查集

1272 小希的迷宫 基础并查集

1325&&poj1308 Is It A Tree? 基础并查集

1856 More is better 基础并查集

1102 Constructing Roads 基础最小生成树

1232 畅通工程 基础并查集

1233 还是畅通工程 基础最小生成树

1863 畅通工程 基础最小生成树

1875 畅通工程再续 基础最小生成树

1879 继续畅通工程 基础最小生成树

3371     Connect the Cities   简单最小生成树

1301 Jungle Roads 基础最小生成树

1162 Eddy's picture 基础最小生成树

1198 Farm Irrigation 基础最小生成树

1598 find the most comfortable road 枚举+最小生成树★★

1811 Rank of Tetris 并查集+拓扑排序★★

3926 Hand in Hand 同构图

3938 Portal   离线+并查集★★

2489     Minimal Ratio Tree dfs枚举组合情况+最小生成树★

4081     Qin Shi Huang's National Road System 最小生成树+DFS★★

4126     Genghis Khan the Conqueror 枚举+最小生成树+DFS(难)★★★★

1829 A Bug's Life 基础种类并查集

1558 Segment set 计算几何+并查集★

3461 Code Lock 并查集(有点难想到)★★

3367 Pseudoforest 最大生成树

2473 Junk-Mail Filter 并查集+设立虚父节点(马甲)★★

3172 Virtual Friends 带权并查集

3635 Dragon Balls 带权并查集

3047 Zjnu Stadium 带权并查集

3038 How Many Answers Are Wrong 种类并查集★★

2818 Building Block 带权并查集

3234 Exclusive-OR 异或并查集(难)★★★

2121     Ice_cream’s world II   最小树形图(要输出根有点恶心)★★

4009     Transfer water 最小树形图(模板题)★

3311   Dig The Wells    斯坦纳树(状压DP)(模板题)★★

4085 Peach Blossom Spring 斯坦纳树(状压DP)(有可能是森林...)★★★

2586 How far away ? LCA★

2874 Connections between cities LCA★

3486 Interviewe RMQ★

2888 Check Corners 二维RMQ★

3183  A Magic Lamp RMQ(有点难想到,有点难联系到RMQ)★★

XYNUOJ-1923 食物链 种类并查集★★

===============================以下是最短路系列

HDU】

1548     A strange lift 基础最短路(或bfs)★

2544     最短路   基础最短路

3790    最短路径问题 基础最短路

2066     一个人的旅行 基础最短路(多源多汇,可以建立超级源点和终点)★

2112     HDU Today 基础最短路

1874     畅通工程续 基础最短路

1217     Arbitrage    货币交换 Floyd (或者 Bellman-Ford 判环)★

1245     Saving James Bond 计算几何+最短路★

1317     XYZZY   Bellman-Ford判环,有负权★

1535     Invitation Cards    有向图的来回最短路,(反向建图)★

1546     Idiomatic Phrases Game   最短路

2680     Choose the best route    最短路

2923     Einbahnstrasse 最短路

3339     In Action   最短路+背包★

2224     The shortest path 双调旅行商问题★★

2807     The Shortest Path 矩阵运算+最短路(floyd)★★

1595     find the longest of the shortest枚举+最短路(删掉任意一条边的最长最短路)★★

3986     Harry Potter and the Final Battle 枚举+最短路(删掉任意一条边的最长最短路)★★

1599     find the mincost route floyd求最小环★

1839 Delay Constrained... 二分下限+最短路(带限制最短路)★★

3631 Shortest Path                   Floyd插点法★★

4114 Disney's FastPass 最短路+二维状压DP(难)★★★

3832     Earth Hour 三点连通(斯坦纳树)★

3873     Invade the Mars Dij变体(好题!,带限制最短路)★★★

4063 Aircraft 几何构图+最短路★★★★

 

hdu4179 Difficult Routes dis[][]开二维状态的最短路(带限制最短路)★★

 

1869 六度分离 Floyd最短路★

1385     Minimum Transport Cost     最短路+输出路径(输出字典序最小路径,有点恶心)★★

1224     free DIY Tour 最短路+输出路径★

1142     A Walk Through the Forest   最短路+记忆搜索★★

1596     find the safest road    乘积最小的最短路

1598     find the most comfortable road 二分速度差+最短路(带限制最短路)★★

2722     Here We Go(relians) Again 最短路

2962     Trucking   二分+最短路(带限制最短路)★★

1690     Bus System 最短路

2433     Travel 删边+最短路之和(预处理桥边)★★★

2363     Cycling 二分+最短路(带限制最短路)★★

2377     Bus Pass 最短路(寻找一个点的最长最短路最小)★★

2833     WuKong 最短路+记忆化搜索(求两条最短路的最多公共点)★★

1688     Sightseeing 最短次短路条数★★

3191     How Many Paths Are There 次短路条数★★

2482     Transit search 最短路★★★

============================以下是二分匹配系列

普通匹配,多重匹配

HDU】

1068 Girls and Boys

1150 Machine Schedule

1151 Air Raid

1179 Ollivanders: Makers of Fine Wands since 382 BC.

1281 棋盘游戏

1498 50 years, 50 colors

1507 Uncle Tom's Inherited Land*

1528 Card Game Cheater

1845 Jimmy’s Assignment

2063 过山车

2119 Matrix

2444 The Accomodation of Students

2768 Cat vs. Dog

3081 Marriage Match II

3360 National Treasures

1045 也可搜索

1350 最小路径覆盖

3118 类似二分匹配

2819 完全匹配

1668 二分+多重匹配

3605 多重匹配

3861 强连通+二分匹配

2236 无题II

hdu3468

hdu4185 奇偶匹配

============================以下是KM算法系列、

HDU】

2255 奔小康赚大钱

1533 Going Home

1853 Cyclic Tour

3488 Tour

3435 A new Graph Game

2426 Interesting Housing Problem

2853 Assignment

3718 Similarity

3722 Card Game

3395 Special Fish

2282 Chocolate

2813 One fihgt one

2448 Mining Station on the Sea

3315 My Brute

3523 Image copy detection

HDU】

强连通:

1269   迷宫城堡   判断是否是一个强连通

2767 Proving Equivalences   至少加几条边让整个图变成强连通

3836 Equivalent Sets   至少加几条边让整个图变成强连通

1827    Summer Holiday   传递的最小费用

3072     Intelligence System   传递的最小费用

3861 The King’s Problem 强连通+二分匹配

3639 Hawk-and-Chicken   强连通缩点 + 树形dp(累加子节点的总权值)

3594 Cactus 仙人掌图

 

双连通:

2242 考研路茫茫——空调教室   双联通缩点+树形DP

2460 Network  边双连通

3849 By Recognizing These Guys, We Find Social Networks Useful  双连通求桥

3896 Greatest TC   双连通

4005 The war   边双连通

 

LCA:

2586 How far away ?

2874 Connections between cities

3078 Network   LCA+排序

3830 Checkers   二分+LCA

============================以下是欧拉回路系列

HDU】

1878 欧拉回路  判断

3018 Ant Trip 一笔画问题

1116

2894 兹鼓欧拉回路

1956

3472 混合欧拉

2337 Catenyms   欧拉路径

1392 Ouroboros Snake   兹鼓欧拉回路

1780   code

1637   混合欧拉

拓扑排序

HDU】

1285 确定比赛名次

2094 产生冠军

2647 Reward

3342 Legal or Not

1811 Rank of Tetris   拓扑+并查集


数论

一.简介

数论是ACM中的重点内容。历年竞赛题目,一般都有1~2道题目与数论有密切关系。数论涉及的概念和算法很多,用途也非常广泛。掌握与数论有关的方法,是参赛者需要具备的必要技能。数论的学习应该注意简单的概念要能熟练掌握,可以手写代码。较难理解的概念和知识点应注意模板的整理,模板的整理要注意规范接地气,变量名函数名简单易懂通用,写明模板函数的作用,在比赛中能快速上手使用,最好是本人理解后所写的。

二.算法分类

分类一:

参考《算法与设计》中的

1章 数学:

1.1矩阵

1.2整除与剩余 ★

1.3素数和函数 ★

1.4数值计算

1.5其他 ★ (高精度整数现在不用看)

5章 论题选编  中的

5.2 转换 ★

5.4 计算

6章 代数

9章 组合数学 ★

 

分类二: 

参考《知识与入门》中的第三章《数学基础》

 

1.概率论:

1.1事件与概率 ★

1.2期望与方差 ★

2.代数学

2.1矩阵       ★

2.2行列式   ★

2.3解线性方程组 ★

2.4多项式 ★

2.5复数

2.6群

3.组合学

3.1 排列与组合 ★

3.2 鸽巢原理  ★

3.3 容斥原理  ★

3.4 特殊计数序列

3.5  polya 定理

4.数论概念

4.1整除 ★

4.2不定方程

4.3同余方程和欧拉定理 ★

4.4原根、离散对数和二项同余方程 ★

4.5连分数

 

分类三:

重要的:

a) 欧几里德算法求最大公约数

b) 筛法求素数

c) 康托展开

d) 逆康托展开

e) 同余定理

f) 次方求模

g) 扩展欧几里德算法

f) 求逆元

g) 同余方程

h) 中国剩余定理

 

以下了解即可:

a) 积性函数的应用

b) 欧拉定理

c) 费马小定理 

d) 威乐逊定理

e) 群论基础

h) Polya定理与计数问题

i) Catalan数

 

.题目汇总:

1.XYNUOJ中NYOJ数学分类所有题目

 

2.HDUOJ上的下列题目 优先做AC数高的题目


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值