C语言写对拍程序,信息学

有耐心,慢慢地思考,切勿急噪。沉着,冷静,大胆,心细。考出自己的水平。

1. 数组范围开大一点点

2. 用if 判断 比 过程快

3. 数组记得fillchar

4. 想清楚算法 仔细对拍 将已想好的算法准确地用程序体现

5. 仔细看清楚题目 不要忽视一些细小的地方

6. 反复想 想不出 回头看题目 是否漏了细节

有时候一些关键信息很不起眼

7.差的绝对值可以讨论后去掉

8.用滚动数组不会比直接开数组慢

9.对题目的数据范围认真计算 不但可以让心中又把握 还可以直击算法的正确性

10.对于问题的边界讨论得越明晰越好 不要想着含糊简便 扎扎实实地分析 代码量并不 会

11.Inline 多什么在处理很多东西的一个过程中可以加速很多

12. A mod 在 A很大时会相当慢 用if

判断掉 A小的时候不用

13. extended 精度比real 好 但是比real 慢

14. 提交答案式的题目一般没有标准算法 贪心搜索之类的捞分

15. 后缀数组不是万能的 nlogn 1000000 2 s

16. 既要对自己的编程能力有信心 块而准地编程

也要仔细地静态差错 造数据查错 认真分析程序

17. 置换相当于是圆环同构

调试程序数据三则

1. 样例 程序普适性

2. 特殊数据 即特殊情况的考虑

3. 边界极限数据的考虑

对于整数ai f = bi * ai à f = gcd(a1 , a2 , a3 , a4…) * k;

所以 题目变成求 取出n个数

(ai<=M) 使得

gcd(a1 , a2 , a3 , … M) = 1

M = pi^qi;(i= 1.. n)

利用溶斥原理  1 shl n -1 的二进制状态 代表 gcd 是否有质因数 pi

G:\标准模型\数学方法

构造行列和为完全平方数的矩阵 c[i,j]=a[i]^2*b[j]^2

转换为构造 zig b[i] =u^2 令 zig

b1..n-1=2*k+1 => b[n]=k*k

G:\标准模型\构造

计算几何:

1. O(0,0,0)A (x1,y1 z1)

,B(x2,y2,z2) 法向量 e

(y1z2-y2z1,z1x2-z2x1,x1y2-x2y1)

2. A·B=|A|*|B|*cos u  A *

B=|A|*|B|*sin u=S

3. 三维 A*B=e |e|=法向量的长度=三点确定面的平行四边形面积

4.

凸包的广义最优性 hnoi 2004

enwrap

(枚举三个点确定凸平面 为防止面积重复计算将所有点抖动)

G:\标准模型\计算几何

连通性动规:

1. 统计矩阵中的曼哈顿回路个数 (插头和分割线

人为的将路径划分为可转移的)

G:\标准模型\动规\连通性动规

1d/1D 动规一般可以用斜率(凸线)来加速

先将朴素的转移方程写出来 将 I , j , k 的项归类 映射到平面上的点

维护凸线

尽量避免用除法,注意正负后不等式两边同乘法去除法

G:\标准模型\动规\凸单调性

动规主要是要有效性的分阶段的状态

创造这种状态就可以进行动规了

G:\标准模型\动规

将一条下降一条上升的链看做是两条上升的链 无重复的点权和上升的点权就可以划分阶段了

G:\标准模型\动规

贪心单调性:

G:\标准模型\数学方法

有些题目很具有欺骗性 注意认真分析题目中的细节 有时根本没有想象中的那么难

Zju 3331

双关键字排序即是 符合 第一关键字最优下第二关键字最优(最优可以是任意有传递性的定义)

双关键字动规

G:\标准模型\动规

搜索优化 可以用不正确(比如去掉某些限制条件)但是最优的动规来 剪枝

G:\标准模型\搜索

确立好合适的限制搜索

G:\标准模型\搜索

最大流的充要条件是没有增广路

二分图G 中 求出完备匹配后 在残量网络中求出强连通分量

1. 任意一条处于完备匹配的边e= xi->yi

两点处于不同强连通分量

推出e 必定处于G的完备匹配中(即没有增广路可以退掉边e)

2. 任意一条不处于完备匹配的边 同上

推出e必定不处于G的完备匹配中(即没有增广路可以加入边e)

命题1.,2是可逆的

G:\标准模型\图论\二分图

二分图最大流的hopcroft算法 O(sqrt(n)*m)

高斯消元

解异或方程 运用位运算压缩方程系数

利用高斯消元求异或方程组的解数属经典算法,在这里介绍一下算法流程:

1. 设有x个变量,y个方程,写出y*(x+1)的矩阵。

2. 从1至x依次考虑第i个变量,从第k(初始为1)行至第y行中找一个第i项系数不为0的行与第k行交换。

3. 若未找到则第i个变量为自由变量,i+1,k不变,继续处理。

4. 否则用第k行与第k行后且第i项系数不为0的行进行消元,i+1,k+1,继续处理。

5. 判断解的情况:

a) 无解:第k行至y行(系数全为0)中有常数不为0的。

b) 唯一解:消元过程中无自由变量,即形成了严格的上三角矩阵,利用回带逐一求出每个变量的值。

c) 多解:出现了S个自由变量,由于每个变量可取0或1,且对于这S个自由变量的每组取值,其余变量均有唯一取值与其对应,故共有2S组解。

注意第3步是处理特殊情况(

,解的判断等)的关键步骤。时间复杂度为O(xy2),该流程稍加变换即可应用于模p方程组或一般的线性方程组。

G:\标准模型\高斯消元

G:\标准模型\高斯消元 解混联电路的总电阻

实数的高斯消元 不需要 精度判断

If e[j , i] <>

0 then break; swap(e[j] , e[i]);

If e[j , i] <>

0 then

begin

T = e[j , i] / e[i , i];

For k := i + 1 to tot + 1 e[j , k] := e[j , k] – e[i , k] *

t;

end

利用系数的分布特点 可以 优化 很多

G:\标准模型\高斯消元

抓住一个条件作为突破口 在其中递归进行 考虑好边界就行 可以大大简化思考难度和编程难度

G:\标准模型\贪心 最大要求要么全不输要么输一场

经典算法的抽象应用 很重要的思想

特殊的动规 spfa 处理阶段不明显的动规

G:\标准模型\spfa

计算几何:

Nlogn

凸包 nlongn

判断凸包和一条直线是否相交

G:\标准模型\计算几何

最大流=最小割

最小割可以对应到很多模型 如

Xor 模型

(割分成两边)

G:\标准模型\网络流

Polya 原理 : zig

|Zi|=zig|Ei|*|Zi|=L*|G|

a/b mod p =

q

(b , p) = 1 à  b ^ ou(p) mod

p = 1

à  a * b ^

ou(p) / b mod p = q

à a * b ^ (ou(p) – 1) mod p

= q

组合数学初步

拓展欧几里得

Ax+Ny=b=> Ax+Ny=gcd(A,N)

=d => ax.+ny.=gcd(a,n)=1

x0=x.*b/d; xi=xi-1

+n; x0 - xd-1 为 mod

N 等价类

a^y mod z=k 将 y

看作 i*sqrt(z)+j 枚举 i 计算 j 时间复杂度为 sqrt(z)

G:\标准模型\数学方法

基图相同的初始DAG到目标DAG总有不同边数的可行变换

变换序按照 max(a[s[i]]) min(b[t[i]]) 即可保证始终为DAG

G:\标准模型\特殊算法

轮换和对换的乘积 轮换A(a1,a2,a3…)

B(b1,b2,b3…)

1. A B *

(a1,b1)->C(b1,b2,b3…a1,a2,a3…)

2. A*(a1,ai)->C(a1,a2..ai-1)D(ai,ai+1…)

传球游戏 刘书 P247

最优对换排序要考虑两种情况

分别对应上面1,2

Spoj 2277 silly sort

Polygon 刘书 p252

1.正多边形的点对称分布在外接圆圆周上

2.在多边形上取点可以看作是将点染色 转换到polya定理

3.可以发现平移不产生相同形 故只考虑翻转和旋转

4.旋转置换 产生 gcd(I,n) 个等价类 循环节长度为 n/gcd(I,n)

翻转置换 分

n奇偶讨论 奇: k(1)=1 k(2)=n div

2;

偶: 1. K(2)= n div 2

2. k(1)=2 k(2)=n div 2 -1;

基于Nim游戏的sg函数

1.局面分割定理 胜负与异或规则一致

sg(a,b,c,d…)=sg(a) xor sg(b) xor sg(c)…

2.sg(s)=0 所有s->t sg(t)<>0 ó sg(a)不属于g(a) (a属于S)

Sg(s)<>0

存在s->t sg(t)=0 <= x=(1..sg(a)-1)属于g(a)

3. sg(s)=min(sg(t))

处理时记得计算好边界 观察是否有循环节和其中的规律

G:\标准模型\博弈

Poi 2000 pas

序列k划分 最大最小

看到最大最小 首先二分答案 感性认识对于 当前ans 得到最多划分 rb

最少划分 lb 那么lb-rb 都是ans 下的可行划分 运用树状数组优化转移

总时间复杂度log ans log n *n

G:\标准模型\特殊算法

Spoj 2202 抽象模型 优化动规状态

树中的路径统计 O(N) (子树+经过父亲)

同色三角形的个数 C(n,3)-zig

a[i]*(n-1-a[i]) div 2

G:\题目\网上竞赛\spoj

上方子树 优化枚举断点断边

三步骤

生成子树 预处理子树 更新

K:\标准模型\图论\树\上方子树

原根的判定:

T-1=sit pi^qi

a^((t – 1) div pi) mod

t<>1 ==> a是T的原根

原根的性质:

a^0..t-2 mod t =(1..t-1)

G:\标准模型\数学方法\数论

最短路的推广定义 可以满足乘法运算

树上的动规大多转换成从叶子向根的贪心

G:\标准模型\贪心

Ai+x*Bi=Aj+y*Bj=….

只要两两有解 即

任意 (Ai – Aj) mod gcd(Bi , Bj) = 0 就有整数解

G:\标准模型\数学方法\数论

半平面的交

N^2 note: k1 * k2 < 0

X = (k2 * x1 – k1 * x2) / (k2 – k1)

虽然是n^2 但是很多时候都有不错的效果

G:\标准模型\计算几何\半平面的交

组合 1-n 最少个数 用二进制拆分

单源自动机

G:\标准模型\自动机

两次动规 + 贪心

G:\标准模型\动规

Treap 是一种很优秀的树形结构

G:\标准模型\图论\树\treap

树上边不相交的最长的两条链 特殊情况很多的树形dp

也可以贪心 先求一条最长链 把最长链边权赋值为-1

再找一条加权最长链

G:\标准模型\图论\树

凸四边形四点共圆的充要条件是 对角和=180度

由此推导 对角和>180

度 à 三角形外接圆 包含

对顶点

对角和<180 度 à 三角形外接圆 不包含 对定点

凹四边形外三角形的外接圆肯定包含另一内点

G:\标准模型\计算几何

N 个节点有特殊性的树 利用 puffer 码可以一一对应

所以总共有 n ^(n – 2) 棵树

而对于vi 节点 限制 度为 di 对应到 puffer 码 就是 vi 元素出现 di –

1 次

所以 度限制的树 共有 n ^ (n – 2) / (di – 1) ! 棵

G:\标准模型\数学方法

有时候朴素的算法效率也很可观

计算几何边界的处理 上下抖动 或者缩小范围

G:\标准模型\计算几何

动规 先写出最简单的动规方程 想优化

实在无法优化就用贪心 也可以取得不错的效果

Hnoi 2005 day1 comb 假定每个元素最多更改到相邻Lim个元素 高度 -

lim以上

于是删减了很多状态

G:\标准模型\动规

对于一类不易描述的状态 找其中的共性 使其表达简化

Triangle 这题很有代表性 每一个三角形都由三类边组成

而每个小三角形都有一条此三类边 因此

考虑直接将小三角形当做坐标系中的点

储存其本质不同的三类边 a , b , c

统计时 枚举一条 c

边 可以转换为在直线上的点统计

满足两个约束条件 因此

从左向右扫描 建立点事件 树状数组 满足两个条件

注意将边界考虑清楚

G:\标准模型\统计问题

经典棋盘问题 将棋盘黑白染色后 曼哈顿距离集合变成了规则的两个正方形

分别做矩形覆盖 减去超出边界的三角形 枚举一条边界后 旋转四次 减去四个角上最大的三角形即可

G:\标准模型\统计问题

高斯消元 异或方程模板

字符串中二分 适用于所存信息不太大 并且查找可排序的题目

G:\标准模型\字符串处理

认真分析表示好状态 搜索题目其实也不是很难打

剔除一些冗余的状态 实现记忆化搜索

比如此题 当父亲确定后 子树的范围就确定了一半 由此缩小了一维

G:\标准模型\搜索

后缀数组: turn -> sa -> rank -> h

快排 交换 sa o :=

k2[sa[(l + r) shr 1];

Sa[i] 表示 第 i 大 的串的序号

O(n logn logn)

基数排序是下标稳定下的排序

K1 名词数组

K2 第二关键字序号数组

Sa 当前关键字序号数组

每次进行一次基数排序

O(n logn)

H 数组 表示 母串中最优

1. 最长不重叠子串 生成

h 数组后 二分长度

可重叠重复k次最长子串 二分长度

2. 不同子串数     每个子串是后缀的前缀 所以 ans = zig n – i + 1 – h[i]

3. 最长回文子串 n + 1 + n  rmq

4. 最多连续重复子串 实际就是求串首最大的前缀与串尾最大后缀匹配

可以用后缀数组 也可以直接用kmp

5. 子串的最多连续重复子串

看见连续重复子串 一般就联想到枚举长度 取相邻

此题枚举长度i后 只需枚举 n / i 个点  1 + k

* i  因为任意长度为i连续重复子串必定跨过这些点

因此此题为 o ( n * ( 1/1 + 1/2 + 1/3 … 1/n)) = o(n

* ( ln(n) + e))

6. 两个串的最大公共子串

多个串的处理一般是添加一个特殊符号拼接起来

最小边集最小割 可以看作是双关键字的最小割

把 a->b c 记成 a->b c * ( m +

1)  + 1

最小割容量 ans div (m + 1)

最小割最小边数 ans mod (m + 1)

G:\标准模型\网络流

动规 找到 最优子问题 有时候直接如此转换 不用找一些特殊的限制条件 方便很多

考场上此题写的是搜索 效率很不错

G:\标准模型\搜索 如果写动规的话 直接枚举一次操作

字符串判重 一般的方法就是hash 挂链 效果很不错 hash函数并不用很复杂

G:\标准模型\字符串处理

计算几何并不难 要分析好 gdb  要注意是套在外面的

Pipe 这题不能之直接用线段和直线判相交 因为有可能直接穿出去了 为此调了很久

G:\标准模型\计算几何

更快的一种方法是 从管口射入一条光线 它始终只能走在管道中

并且光沿直线传播 所以对于下管道求上凸线 上管道求下凸线

二分一个终点 I 有光能到 I 的充要条件 是

上下凸线不相交

G:\标准模型\计算几何

一道相当经典的题目 可以看做求两个函数的最早交点

直接累加超时 而标准做法

是 把即时的函数断开成一前一后 每次让底下的函数增长当前差值 在把差值又加上上面函数增长的 以此往复 很像悖论的龟兔赛跑

G:\标准模型\数位统计 此题的函数可以以数位增长 保持 1-poi -1 位 始终为0 以此减小编程难度

把算法的空间时间复杂度想好了 就开始认真考虑细节 不要怕难 只怕漏

都考虑清楚之后程序就不难写了

Fence 这题考场上想的是枚举一条边 将其他所有边的投影映射到边上 判断是否有没被覆盖的地方 投影这一步有很多情况要讨论 考场上没想清

G:\标准模型\计算几何 时间复杂度 n^2 log n

区间信息 可传递性 一般可以用并查集做

G:\标准模型\并查集

动规 复杂度 线段树优化

线段树有些时候不用下放标记信息

比如 给一段添加值 返回最小值 可以直接 用 mi[ro] =

min(mi[ls] + mi[rs]) + ts[ro]

即为这一段的标记 加上 子树的最小值

K:\标准模型\动规

数学期望 这个纯靠积累和灵活运用了

游戏一般是倒着求期望 即从当前状态到目标状态

的期望

期望本质是加权平均数 即 e = p * q 表示状态与概率的乘积之和

分状态满足加法原理

K:\标准模型\数学期望

概率的算法 最优策略有极强的逻辑性 并且可以调整状态 使先手后手都表示目标的胜率

注意发现其中的规律 最终用矩阵乘法加速

K:\标准模型\数学期望

Number 求第n个非平方数倍数 的数

此类题一般是二分+判断 如何判断是关键

考虑 1..k 中 i

若正整数i不是SquareFree,必存在素数j使得j2|i,由二项式定理可以推出公式:

(1-1)^n =c (n , 0) – c(n , 1) + c(n , 2)… = 0

C(n, 0) =1 = c(n , 1) – c(n , 2) + c…

Num(K) = ∑ u(i) * [K/i2] 0

K:\标准模型\数学方法

也可以采取存取断点 枚举中间的方法 也可以解决本题

K:\标准模型\特殊算法

group

公式:K=∑n! / (n/i)! / (i!)^(n/i) {i|n}

由费马小定理,m^(p-1) mod (p-1)=1,故我们只需求出K mod (p-1)即可。

又p-1=2*13*5281*7283,由孙子定理,只需求出K对于每个质因子的模后即可解出K mod (p-1)。

由于对于每个质因子pp,我们枚举i,求出每部分x!包含pp的次幂数F(x)与剩下部分对pp的模G(x)。

F(x)=∑x/pp+x/pp^2+…… G(x)=G(pp)^(x/pp)*G(x mod pp)*G(x/pp)

K[pp]=∑G(n)/G(n/i)/G(i)^(n/i) {F(n)-F(n/i)-F(i)*(n/i)=0}

将4个k[pp]求出后用中国剩余定理或直接枚举可以求出K,最终答案为m^K

(上述过程中需多次应用快速幂,扩展欧几里德)

K:\标准模型\数学方法

【附2:模意义下的除法】

上面的讨论还忽略了一个小问题,即Ans需要对素数P取模,而计算过程中有除法,这里介绍两种方法:

1. 设 ,则 ,即 ,由于P是素数,利用扩展欧几里德解出Z即可。

2. 由欧拉定理, ,故 ,利用快速幂取模或者预处理YP-2即可计算。

将i 拆分成不超过j 的数的方案数 Fi,j=Fi,j-1+Fi-j,j

分析好状态 讨论好边界 优化转移

K:\标准模型\动规

两线段距离是单峰函数 所以三分 距离讨论好 注意sqrt

时 取 abs

K:\标准模型\数学方法

组合游戏 :

分解游戏与游戏的和(sg xor) 子游戏互不干扰

并且平等等价

将每一个棋子都看作一个子游戏

staircase nim

如果对方在奇数位上取硬币,那么我们也类似nim在奇数位上取硬币使SG值回到0;

如果对方在偶数位上取硬币。那么我们就把他刚刚从偶数位上传到奇数位上的硬币数。

原封不动的再传回偶数位。

硬币游戏的转换 POI2003/2004 stage I Game

game

F(i,j)表示在格子(i,j)有一枚反面向上的硬币时的sg值

暴力加找规律可以得到下述结论:

1.

2.

求出所有反面硬币的sg值求异或和即可。

K:\标准模型\博弈

归纳 转换游戏

Sg and anti-sg 游戏

对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1;(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1。

Anti-sg 规则

(1) 所有的终止局面为先手必胜局。(这一点显然,证明中略去)

(2) 游戏中的任何一个先手必败局一定只能够转移到先手必胜局;

(3) 游戏中的任何一个先手必胜局一定能够转移到至少一个先手必败局。

Multi-SG [定义]

l Multi-SG游戏规定,在符合拓扑原则的前提下,一个单一游戏的后继可以为多个单一游戏。

l Multi-SG其他规则与SG游戏相同。

删边游戏 图 -> 树 –>

[定理]

叶子节点的SG值为0;中间节点的SG值为它的所有子节点的SG值加1后的异或和。

即所有根的孩子看作一个子游戏 子游戏的sg为 子节点的sg +1

无向图的处理 多个重要点中选一个作为根 所有的与重要点相连的边都连向根

求块缩点 块内有奇数边则块的sg = 1 否则为

0

按照树的做 sg[i] = sg[i] xor (sg[j] + 1)

zmaj

将每个表达式写成一个矩阵的形式,则连续若干表达式等价于矩阵的积,循环则等价于矩阵的幂,用矩阵乘法+快速幂模拟程序,输出对应结果即可

K:\标准模型\模拟

Counts

N个数的排列与n个数的相对大小关系一一对应

所以求排列数就可以直接从最后约束个数进行递推 用矩阵乘法加速

K:\标准模型\矩阵乘法

先预处理 然后一位位统计就可以了 注意空间范围和细节

考试时可以自己测一些容易想的极限数据检测

K:\标准模型\数位统计

图中几个带最字的东西:

有向图:

最小链覆盖=最长反链

最小路径覆盖数 对应到最多的边数 直接拆点做二分图最大匹配

最小链覆盖数 对应到最多的关系数 拿关系作边 拆点做二分图最大匹配

不断删除链的被限制的尾节点 对应剩余的尾节点就是方案

K:\标准模型\图论\二分图\最大匹配

最小反链覆盖=最长链

无向图:

最小点集覆盖+最大独立集=|V|

最大团<=最小染色

最大独立集<=最小团覆盖

弦图:

最大团=最小染色

最大独立集=最小团覆盖

二分图:

最小点集覆盖=最大匹配

令S(n,k)=1^k+2^k+……+n^k,有

利用这个式子可以从S(n,1..k-1)递推出S(n,k)

Farey 序列 a / b < p

/ q < x / y  b ,

y <= n  and  ay +

1 = bx s

P = a + x q = b + y (q <= n) q

为最小分母

相邻 a / b < p /

q aq + 1 =

bp => p / q – a

/ b = 1 / qb < 1/n(n-1)

给定四个正整数 a , b , c , d

求 a / b < p / q

< c / d min(q) min(p)

易证 min(q) ->

min(p) 所以 b / a

> q / p > d / c min(p) min(q)

讨论 类似最小公约数的求法

K:\标准模型\数学方法\数论\farey

构造从a 不断加不等于1和本身的当前数的约数 使 a

变成 b

a不断加 奇约数 , 2 , 4 , 8 … 2^q(b

减)

使当前 a , b 都为 2 ^ q + 1 的倍数

直到 a = b

K:\标准模型\构造

题意要求给出可行的划分数 使集合内点对距离最大值小于与集合外所有点距离

可以发现 一个可行集合 不可分割 只能与其他集合合并

并且优先与边最小的其他集合合并 由此类似于最小生成树的操作

将边排序 不断合并集合(做背包)

K:\标准模型\图论\树

将平面抽象 ,

可以知道一个周长最小的围墙一定是从矩形的点到矩形的点连接,中间转一次,当两点组成的矩形中是空的时将两点间连边 ,

保证了所有的边都是可以走的。

接着要求一条最短的回路 , 要包围母矩形的任意一个点A(即包围了母矩形),任意发出一条线段AB ,

等价于AB要与回路相交奇数次 , 所以把点v拆开成两个点 v1 , v 2, 对于(u,v) 与AB 相交 , (v1 ,

u2)(v2 , u1)

不与AB相交 ,(v1 , u1) (v2 , u2)

有多少个性质就拆多少个点

和边

最后统计 v1 -> v2 单源最短路即是答案

K:\标准模型\图论\最短路

结论:一个图有解当且仅当其包含点0且从点0走有向边可以到达所有点。

其实这很显然 而且是充分必要的 所以枚举删点

每次都判断即可

关键要注意 0 为根节点这一信息

K:\标准模型\图论\有向图

环的同构判断 转换为最小字典序 直接判断 最小表式法

很有启发性

K:\标准模型\字符串处理\同构

很显然转换成最小生成树 询问即是两点路径上的最大点

在生成最小生成树时 可以把新加入的边当作一个点

a a->f1 a->f2

最后询问就转换为了询问两点的最近公共祖先的点权

K:\标准模型\图论\树

快速判定相等的情况可以用枚举 + 哈希进行优化

K:\标准模型\哈希

最小链覆盖=最长反链

最长反链覆盖=最长链

注意最长链缩强连通分量后 点权要累加

K:\标准模型\图论\连通性

推出递推式 直接用矩阵乘法优化

K:\标准模型\矩阵乘法

很直接的状态压缩dp(n = 15) 就可以看出

数据小的时候可能是搜索 也可能是动规

Ak 求前k个圆使它们有交集

判定方法 : 对圆两两求最右端的交点 求交点最左的 判定是否在所有圆中

K:\题目\poi\POI2005\day3\source\杨起道

路径剖分 很强大 其实也比较容易编

K:\标准模型\图论\树\分治

N^2地求环的中心点(各点到此点距离最小)

有细节要考虑下

K:\标准模型\数位统计

每一列是子游戏 f[I , j, k] 表示I 个白子 j 个黑子

sg 为 k 的方案(/(c[i+ j, i]就是概率) 很明显每次操作可以以一个黑子划分阶段

F[I + l , j + 1 , l +

ord(l>=k)] ++ f[I , j , k]

最后游戏的和做个背包

Sg函数的范围可以观察程序确定

K:\标准模型\博弈

图的同构计数 利用polya定理 点置换一一对应边置换 利用拆分数优化点置换搜索

Noi2008

employee 构造简单的等式关系 利用流量平衡 建立网络做最大流

一类问题的分析方法 :

看清题意 注意条件 抽象模型 转换函数

Noi 2008

trans、

最大权闭合子图 有环 所以可以认为环上的点必不取 令点权为-big就可以了

G:\标准模型\网络流 noi 2009 day2

动归 关键是转换平方就是点对的个数

G:\标准模型\动规 noi

2009 day2

动归 注意利用题目中的条件 上凸线 用treap维护

Treap 要注意值参和形参

删除的点可以先标记再删除比较方便

树内的关系可以用链表挂起来

G:\标准模型\图论\树\treap

对于 floyed 有很多迁移 它可以相当于为最短路找到了一种阶段

即最短路上节点标号的大小 以此来进行动归 所以相应的可以统计最小环,最短路条数…

最短路上任意一段也是最短路

G:\标准模型\图论\无向图

Dynrank loglogn

* m 离散化后 直接在线段树中走

G:\标准模型\图论\树\treap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值