自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

slowlight93的专栏

Keep moving.

  • 博客(16)
  • 收藏
  • 关注

原创 POJ 1741 Tree (树分治入门)

kuangbin 专题传送门POJ 1743 Musical Theme先对原序列差分,然后就转化成找出至少出现两次的最长的不相交子串。可以二分长度,然后利用lcp数组的性质查找。POJ 3261 Milk Patterns同上一题一样,直接二分长度,然后查找lcp数组就行了。 也可以用,求直方图上的最大矩形时,用一个L数组存 lcp[j]<lcp[i]lcp[j]<lcp[i] 的最小的 j,然

2015-09-29 23:20:07 805

原创 hdu 5442 Favorite Donut (最小表示法 or 后缀数组)

题意: 给一个字符串,正向找一遍循环最小,逆向找一遍循环最小。 然后把两个最小根据下标关系,取一个答案。。 思路: 这道题用 后缀数组 很好解决。 但是,还有个更适合的方法,最小表示法算法。 最小表示法 - 周源 PPT这是一个非常简洁的 O(n)O(n) 算法,可以求一个字符串的最小 or 最大表示。int maxPresent(const char s[], int len) {

2015-09-15 00:26:09 642

原创 【总结】lucas 定理 + 中国剩余定理

先上学习资料: Lucas’ Theorem 中国剩余定理 Chinese Remainder Theorem 组合数取模 - ACdreamerlucas 定理用来计算组合数模素数。如果素数P可以先确定,则可以O(P)O(P)预处理,每次计算时间复杂度为 O(logPlogN)O(logPlogN)。不预处理的时间复杂度,O(PlogN)O(PlogN)。中国剩余定理用来解模方程组 其

2015-09-14 14:58:58 2726

翻译 【转载+翻译】Pascal 三角形中的奇数

原文: https://www.math.hmc.edu/funfacts/ffiles/30001.4-5.shtml翻译: 如果问,Pascal 三角形的第N行中有多少个奇数? N = 0,1,2,3 …数一数,得到下面的结果 row N: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 odd : 1 2 2 4 2

2015-09-13 21:47:19 618

原创 codeforces 280 C Game on Tree (离散概率)

题意: 给一棵树。 每次等可能地选个节点,去掉其代表的子树。 求消掉整棵树的期望。 思路: 把最终的期望看成是每个节点的期望值和。 消掉一个节点有两种方式 1)消去祖先 2)该节点被直接选择 E(u) = 1 * dep(u) + 0 * ( dep(u) - 1 ) dep(u) 等于根到u的路径上的节点数void dfs(int fa, int u, int dep) {

2015-09-12 23:30:27 535

原创 HDU 5032 Always Cook Mushroom (极角排序 x 树状数组)

题意: 给定一个 [1, 1000] x [1, 1000] 的点阵,每个点阵中的点有一个权值。 n 组询问,每次询问一个由 (0,0)、(x,0) 点一以及从原点出发的方向向量 (a,b) 构成的直角三角形包围的点的权值和。 思路: 极角排序 + 离线处理 + 树状数组 这篇题解很详细const double EPS = 1e-12;struct Node { int x, id

2015-09-11 12:52:45 650

原创 codeforces 576B Invariance of Tree (观察)

题意: 。。。 思路: 尝试把排列分解成若干个环。 然后就会发现如果在环中连了一条边,最终整个环就会被连上。 所以有以下结论 1)如果有大小为1的环,即置换后不变的点,把其他点全部连在这个点上。 2)剩下的环中,如果存在奇环,则无解。 3)剩下的环中,如果不存在长度为2的环,则无解。 4)拿出一个长度为2的环,其它的环拆开后连在这个环的两个端点上,可以构造出树。typedef ve

2015-09-11 11:39:26 810

原创 light oj 1422 Halloween Costumes (区间DP)

题意: 。。。 思路: 跟着kuangbin的blog开始刷区间DP。。 开始也是对这道题没想法。。 不对,联系了一下 hdu 2476 String painter 这道题。。 发现思考模式是一样的。。 dp[i][j]dp[i][j] 照例是区间 i,j 的最小代价 考虑从 dp[i+1][j]dp[i+1][j] 转移过来 费用就是 i 与 i+1 穿的衣服是否相同 dp[

2015-09-07 01:36:23 615

原创 poj 1651 Multiplication Puzzle(区间DP)

题意: 。。。 思路: 区间DP入门题int n, ai[N+5], dp[N+5][N+5];int main() { scanf("%d", &n); for (int i = 0; i < n; ++ i) scanf("%d", ai + i); const int INF = INT_MAX / 10; for (int len = 3; len <=

2015-09-07 00:56:52 390

原创 poj 2955 Brackets (区间dp)

题意: 。。。 思路: 区间DP入门题char str[N+5];int dp[N][N];inline bool match(int x, int y) { return str[x] == '(' && str[y] == ')' || str[x] == '[' && str[y] == ']';}int main() {#ifdef _LOCA_ENV_ freo

2015-09-07 00:32:41 326

原创 zoj 3537 Cake (区间DP x 最优三角形剖分)

题意: 。。。 思路: 思路可以看这里区间DP的顺序目前遇到比较多的有两种,无论哪种,保证算大区间时,所包含的小区间都已经算完大概就行了。。 1)// 第一层 loop 枚举长度for (int len = 1; len <= n; ++ len) for (int i = 0; i + len - 1 < n; ++ i)2)// 直接枚举端点for (int j = 0; j

2015-09-05 23:13:57 425

原创 hdu 2476 String painter(区间DP)

题意: 给A,B两个串,|A| = |B| 一次操可以把 A 的一个字串刷成同一种字符。 求最少多少次操作可以把 A 变成 B。 思路: 很经典的一道区间DP。。 首先观察到,如果 B[i]=B[j]B[i] = B[j],那么 i, j 可以由一次操作得到。 所以由空串得到 B 的方程 dp[i,j]=min(dp[i+1][j]+1,dp[i][k−1]+dp[k][j] and

2015-09-04 23:36:09 528

原创 【算法笔记】并查集小结

并查集最朴素的用法就是用来维护连通性。 然后可以用在 Kruskal 算法中求 MST。 并查集还可以维护更多信息 1)加上顺序 poj 1456,需要找 1 - i 格子中最靠右的空格。 让每个节点的根代表往左找到的第一个空格。 当一个空格子被占用,维护操作只需要pa[pos] = pos - 1PS:这道题也可以不用并查集,用二分来找 2)为点加上权值 zoj 3261 可以看

2015-09-03 16:31:44 449

原创 UESTC 360 Another LCIS(线段树 x 经典区间合并姿势)

题意: 定义 CLIS 为在原序列中连续的一段构成的 LIS。 两种操作 a)给某个区间加上一个值 b ) 询问区间 CLIS 思路: 。。。const int N = 100000 + 5;#define lc o<<1#define rc o<<1|1int g_len;struct Node { int lv, rv, l, r, m, add; void upd(

2015-09-01 17:50:32 481

原创 POJ 2892 Tunnel Warfare (线段树)

题意: 。。。 思路: 类似 Hotel。。 不同的地方是,需要通过单点来得到包含它的空区间。 因为空区间一定会在某个节点分成两半,一半在左孩子,一半在右孩子。(空区间长度为1特例) 所以查询时加个判断就行了。 PS:set 可秒const int N = 5e4;#define lc o<<1#define rc o<<1|1struct node { int l, r,

2015-09-01 15:40:28 425

原创 uva live 5031 Graph and Queries(Treap x 并查集)

题意: 。。。 同样收录在 HDU 3726,不过hdu貌似有时候 re 会报 wa,不方便调错。。 思路: 教科书题。。 用来练 Treap 模板很合适尝试写了几发GC, 用stack来装指针。。发现效率都不是很高。。还很耗内存。。于是放弃了。。// 纯动态#include <iostream>#include <cstdio>#include <algorithm>#inclu

2015-09-01 15:29:59 567

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除