博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日常note
阅读量:7078 次
发布时间:2019-06-28

本文共 1254 字,大约阅读时间需要 4 分钟。

1.插入使相同的最少次数

给定两个序列A,B

每次只能进行把一个元素插入特定位置的操作

求至少对A进行多少次才能使A等于B

设A,B的长度为Len,那么答案为 \(Len-LCS(A,B)\)

2.\(A_{i-1}+A_{i+1} \ge 2\times A_i\)

会发现这个东西,就是一个下凸函数

3.字符串本质不同方案

dp[0]=1;FOR(i,1,n){    dp[i]=dp[i-1]*2-sum[str[i]];    sum[str[i]]=dp[i-1];}

然后有一个扩展的式子

大概是对于每个字符,取它的概率为\(p_i\),求期望本质不同方案数

dp[0]=1;FOR(i,1,n){    dp[i]=(dp[i-1]*2-sum[str[i]])*p[i]+dp[i-1]*(1-p[i]);    sum[str[i]]=dp[i-1]*p[i]+sum[str[i]]*(1-p[i]);}

4.树形背包合并是\(O(n^2)\)

复杂度比较容易证明

把合并两个子树的过程看做枚举以 \(son[x][i]\) 为左端点,以 \(son[y][j]\) 作为右端点路径

这样的路径一共只有 \(n\times (n-1)\)

所以下面合并子树的次数也只有 \(n\times (n-1)\)

void dfs(int x,int f){    sz[x]=1;    LFOR(i,x,E){        int y=E[i];        if(y==f)continue;        dfs(y,x);        sz[y]+=sz[x];        memset(DP[x],0,sizeof DP[x]);        FOR(i,0,sz[x])FOR(j,0,sz[y])dp[x][i+j]+=dp[x][i]*dp[y][j];        memcpy(dp[x],DP[x],sizeof dp[x]);    }}

5.1e5以内因子个数最多为128 [这个数为83160]

6.树上路径问题

比如要表示包含某条路径(x,y)的点对

利用dfs序即可化作二维坐标上的问题

  1. lca(x,y)!=x&&lca(x,y)!=y\(a \in [L[x],R[x]]\)\(b\in[Lt[y],Rt[y]]\)

  2. lca(x,y)==x&&lca(x,y)!=y

    定义s为y所在的关于x的子树的根节点,\(a\in [1,L[s]-1]\cup[R[s]+1,n]\)\(b\in [L[y],R[y]]\)

  3. x==y

    定义s为x子树 , \(a \in [1,L[s]-1]\cup[R[s]+1,n]\)\(b\in[L[s],R[s]]\)

    或者 \(a=L[s]\) \(b\in [1,n]\)

转载于:https://www.cnblogs.com/Zerokei/p/9867428.html

你可能感兴趣的文章
linux中的僵尸进程
查看>>
clustershell批量执行shell命令
查看>>
fedora 19 安装mp3 解析
查看>>
redhat7.2配置yum源
查看>>
iOS开发之左右抖动效果
查看>>
血的教训---工作中注意的事项(未完)
查看>>
php转义之gpc
查看>>
IE中用JS让页面全屏的方式(达到F11的 效果)
查看>>
exec-timeout
查看>>
CSS伪类的一些用法以及visibility:hidden和display:none的一些区别
查看>>
VLAN及vlan路由
查看>>
Centos 配置 puppet 服务
查看>>
Android四大组件
查看>>
删除异常的MS SQL进程
查看>>
git删除忽略文件.idea
查看>>
Java线程挂起
查看>>
PHP二维关联数组的遍历方式
查看>>
XML的特殊符号
查看>>
iOS证书(.p12)和描述文件(.mobileprovision)申请
查看>>
我的友情链接
查看>>