zoukankan      html  css  js  c++  java
  • 结论和典例集合

    O 用kmp判断字符串循环节

    如果3*next[n]>=2*n,那么最大循环节长度为n-nxt[n],循环节个数为n/(n-nxt[n])

    特判:如果n是偶数且nxt[n]==n/2,那么循环节长度为n/2

    O Pólya定理

    O 所以用 m 种颜色给 n 元环染色的方案数为:

    O 给一堆分数,把其中某些分数的分子和分母分别加起来得到一个新分数,新分数的最大值是原来分数中最大的分数

    因为若两个分数a和b满足a<b,则a<=a+b<=b

    同理,新的分数最小值是原来分数中最小的分数

    O 每次给区间[i,i+n-1]里的数分别加上1,2,...,n,最后求每个数的值

    f[i]表示第i个数上有i个要加的序列,g[i]表示要加到i上的值

    操作的时候f[i]++,g[i]+=n,f[i+n]--
    求值的时候f[i]+=f[i-1],g[i]+=g[i-1]-f[i-1]

    如果是递减序列同理,递增递减结合就可以求每个字符属于的回文子串的个数

    O 错位排序方案数

    f(n)=(n-1)*[f(n-1)+f(n-2)]

    f(0)=1,f(1)=0,f(2)=1
    注意f(0)=1不是0

    O 卡塔兰数的四种求法

    h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)

    h(n)=h(n-1)*(4*n-2)/(n+1)

    h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

    h(n)=c(2n,n)-c(2n,n-1) (n=0,1,2,...)

    O 栈排序的结果数

    注意这里的栈排序只能从栈前进栈后出,否则什么序列都造得出来

    而且要求初始序列不能有重复元素,否则又要麻烦一些

    可以用卡塔兰数递推,洛谷某个题解写得很好很清楚

    O 栈排序的性质

    对于同一个初始序列,且初始序列中的数各不相同,压栈弹栈的操作序列与最终的结果序列是一一对应的

    即不存在两种不同的操作序列,使得它们排序的结果相同

    所以求栈排序的结果数也可以用f[i][j]递推,i表示还剩几个数,j表示栈里几个数

    O O(n)求1~n的逆元

    直接费马小定理可能被卡常

    推一个结论:

     所以 f [ i ] = ( p - p / i ) * f [ p % i ] % p

    O 分组并查集

    给每个点拆点,每有一个属性就拆一个点,然后相同属性的分为一组

    如果要载入组间关系,就合并两个组的点,如果载入组内关系就合并组内的

    例题:【NOI2001】食物链

    分组并查集,给每个动物拆ABC三个点,相同字母的分一组

     如果是吃的关系,就对A到B、B到C、C到A三种跨组关系都合并,如果是相等的关系,就三个组内合并

    这样若组间的点位于同一集合,就说明存在吃的关系,如果组内的点位于同一集合,就说明存在相等的关系

    两个动物的关系只有A吃B,B吃A,A等于B三种

    要判断某种关系是否存在,只需判断剩下两个关系是否存在,如果存在就表示冲突

    如果三种关系都不存在就表示不知道

    O dilworth定理

    对于一个偏序集,最少链划分等于最长反链长度

    序列的最少下降划分等于最长不下降子序列长度(注意不下降是类似递增的而不是类似递减的)

    O 整数分拆

    递推公式:

    O 最小二分子图

    二分答案,然后黑白染色

    O 最长公共子序列

    注意子序列特性,令c[i]表示a[i]在b中的位置,那么问题转化为对c求最长不下降子序列问题

    O 最长不下降子序列

    令g[i]为长度为i的不下降子序列里最后一个数最小是多少,显然g[i]随i递增

    那么如果当前数大于所有的g,就让最大长度+1,把当前数放进去,否则二分找到第一个大于此数的g,然后替换他

    二分方法:(g[md]<=x ? l : r)=md

    O 最优比率生成树:

    令原图为S,λ=a(x)/b(x),其中a(x)表示子图x的a权之和,λ*=a(x*)/b(x*)为λ的最优值,则有0=a(x*)-λb(x*)

    不妨设g(λ)=max{x⊆S | a(x)-λb(x)},则g(λ)是单调递减函数,且g(λ*)=0

    结论题:

    O F(x)为x中1的个数,满足∑_0^x F(i)=x的最大数为1111111110

  • 相关阅读:
    对其他组的评论与意见
    第一阶段结果展示
    团队第一阶段冲刺绩效评估
    团队冲刺第八天站立会议
    团队检查博客
    团队冲刺地七天站立会议
    团队冲刺第六天站立会议
    团队冲刺第五天战略站立会议
    团队冲刺第四天战略会议站立
    No2_2.接口继承多态_Java学习笔记_继承
  • 原文地址:https://www.cnblogs.com/cdcq/p/11827007.html
Copyright © 2011-2022 走看看