自定义博客皮肤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.

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

原创 传送门2号 - 算法 x C++

算法资源topcoder题解 http://apps.topcoder.com/wiki/display/tc/Algorithm+Problem+Set+AnalysisTopCoder算法教程 https://www.topcoder.com/community/data-science/data-science-tutorials/ 有很多经典教程算导答案 ( 不完全 http

2015-08-20 22:17:17 1026

原创 [Python]学习Celery

文档: http://docs.celeryproject.org/en/latest/userguide/workers.html#stopping-the-worker笔记:Celery 对名字空间有较为严格要求,应该采用类似 Django 的以项目名开始的路径,例如 proj.tasks.taskACelery的最简单的消息处理方式是采用默认的celery queue,direct ex

2016-02-20 21:43:55 683

原创 [Python]回顾Python中的内省机制

学习资源http://zetcode.com/lang/python/introspection/ http://www.ibm.com/developerworks/library/l-pyint/index.html http://www.diveintopython.net/power_of_introspection/index.html内省(Introspection) 是什么?在计算

2016-02-13 19:21:31 3829

原创 [Python]学习装饰器语法

阅读材料https://www.python.org/dev/peps/pep-0318/http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819879946007bbf6ad052463ab18034f0254bf355000装饰器语法 The current

2016-01-29 01:14:08 574

原创 python, web 以及 后台开发

开发协作Gitpro gitMercurialNginxNginx开发从入门到精通nginx 启动失败原因:端口占用,配置文件语法错误…HAProxy负载均衡基础 http://www.haproxy.com/resources/faq-technical-articles/ 其中 The application scalability with load balancing 非常值得一读,可以

2016-01-19 16:04:25 2323

原创 eu in haskell

本文的内容: 通过 euler project 题目的 haskell 解法来学习这门语言。 代码来自 eu forum一些 haskell 学习资料: http://learnyouahaskell.com 中文版 《Haskell趣学指南》problem 1 - Multiples of 3 and 5sum [n | n <- [1..999], n `mod` 5 == 0 |

2015-12-09 01:42:01 1170

原创 【log】近期刷题 - 2015.9 - 2015.10

2015 沈阳赛区网络赛hdu 5456 Matches Puzzle Game从低位到高位dp,每次枚举 B,C,维护借位,还有B,C是否到达最高位。 dp(剩余火柴数,是否需要借位,B是否到达最高位,C是否到达最高位)const int N = 500;const int num[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};LL dp[N+

2015-10-08 14:56:02 514

原创 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 789

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

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

2015-09-15 00:26:09 630

原创 【总结】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 2697

翻译 【转载+翻译】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 593

原创 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 512

原创 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 638

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

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

2015-09-11 11:39:26 796

原创 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 602

原创 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 381

原创 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 319

原创 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 414

原创 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 515

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

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

2015-09-03 16:31:44 434

原创 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 471

原创 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 421

原创 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 560

原创 uva live 6428 A+B(gcd拓展)

题意: 给三个整数 a, b, S。 每次 1) a += b 或者 2) b += a 问经过若干次操作后,能否得到S 思路: 首先需要得到 ax + by = S 的正整数解系。 然后可以观察并且可以猜想。。。满足gcd(x, y) = 1 的解一定可以凑出S。。 注意long long可能溢出LL a, b, s;LL gcd(LL a, LL b){ return b

2015-08-29 21:51:05 691

原创 My Booklist

标记解释: 紫色:初步熟读 绿色:初步读完 橘色:正在读 蓝色:准备读 红色:比较难,放置中。。 黑色:查阅用。。操作系统unix高级环境编程unix网络编程 卷1Linux 内核设计与实现深入理解计算机系统网络协议TCP/IP详解 卷1:协议HTTP权威指南C++Acceleraated C++深度探索C++对象模型PythonPython核心编程算法算法导

2015-08-28 23:52:26 528

原创 hdu 4630 No Pain No Game (区间gcd相关x线段树or树状数组)

题意: 给定1-n的一个排列。 在一段区间,找两个位置不同的数,使得gcd最大。 思路: 因为给的序列很特殊。 首先容易想到,对1-n每个数作为约数维护一个状态。 把序列中x的倍数,按原来的位置,过滤出来。 对一个询问li, ri 如果其中至少有两个落到[li, ri]区间中,则x为一个可能值。 考虑将询问按右端点从小到大排序。 last[x]last[x]保存x最近出现的位置,

2015-08-28 02:06:10 540

原创 codeforces 46D Parking Lot(线段树模拟区间管理 or set模拟)

题意: 可以看成是 poj Hotel 那道题的加强版。 这里是找车位,还要考虑与前后车之间的距离。。 不过这里n只有100,用set,就成了水题啊。。。思路: 1) 线段树 比起 Hotel 也就是多讨论几种情况吧。。const int N = 100000 + 5;struct Node { int len, l, r, m, tag; // 0 - no tag, 1 - f

2015-08-28 01:47:39 380

原创 【收集向】位操作技巧 bitwise operation trick

参考:http://www.codeproject.com/Articles/28681/Bitwise-Operation-Explainedhttp://blog.csdn.net/haoni123321/article/details/7415498//=============Let`s begin================//bitwise operation trick交换两

2015-08-27 14:30:31 941 2

原创 zstuoj 4186 表白计划(区间操作x线段树)

题意: 。。 这道是zstu2015校赛题。。 传送 思路: 对于第一个询问,先维护差分序列,然后求对差分序列求两次前缀和得到前缀和。 对第二个询问。 假设用pair<int, int>来表示区间。 先把表白计划按girl分开存,对每个girl处理出她不发好人卡的区间。 这一步是 O(mlogm),m 为区间数 建一个线段树,节点 v(l,r)包含girl_l到girl_r的不发

2015-08-26 00:04:57 508

原创 UVALive 6838 (括号匹配x线段树)

题意: 。。 思路: 定义a, b数组, indexed from 1a[i] = a[i-1] + ( s[i] == '(' ? 1 : -1 );定义一个b数组b[i] = a[i] - is平衡的必要条件是,a[n] = 0。虽然仅靠这个是不可靠的。。但用这个必要条件已经可以ac了。。 如果b[i] < 0,则 [1, i] 中一定有右括号 1)修改a[x]为 ),[x,n]区间减

2015-08-25 17:02:53 747

原创 hdu 4366 Successor (线段树xdfs序x排序预处理)

题意: 给一颗树,每个节点两个属性(x,y)。 每次查询一个子树中,x大于root(子树的根)且y最大的节点。思路: 查询子树,很容易想到先求出dfs序然后用线段树维护y值。 但如何保证 x 呢? 如果让线段树初始为空,叶子的值是-1。 将节点按 x 从大到小排序,x 相等则 dfs序小的在前 (这里子树中root的dfs序最小) 然后只要按序查询每个节点对应的子树,然后将节点更新到线

2015-08-25 01:23:02 528

原创 poj 2985 The k-th Largest Group (并查集x全局动态第k大)

题意: 。。。 思路: 用一个数据结构来存所有树的大小,合并操作先消去旧的再插入新的大小。 可以用 treap, BIT等等。。 这里有个树状数组 O(logn)O(logn) 查询的方法,没能看懂。。const int N = 200000 + 5;typedef long long LL;namespace Treap { static const int MaxNode =

2015-08-21 03:56:02 569

原创 hdu 5381 The sum of gcd (线段树x树状数组x区间和维护进阶x离线处理)

题意: 重复,在t的起始找第一次出现的w,从t中删掉。 求最后的t。 思路: T: 文本 , W: 关键词 KMP过程中T中每个位置都对应了一个W的失配函数值。 我们可以把任何一个状态拿出来,然后继续匹配下去。 匹配过程中把这些pair压入stack。 删除:弹出连续|W|个状态,于是状态回到|W|个字符前,继续与剩下的T进行匹配const int Mxn = 5e6 + 5;ch

2015-08-20 02:47:53 743

原创 codeforces 570D Tree Requests (树转dfs序,区间统计)

题意: 。。。 思路: 比赛的时候,想到dfs序,不过对层想不到好的处理方法。。 结束发现其实很简单。。分层统计不就行了吗。。 所以可以对每个询问,二分在层内的位置,也可以存前缀和,离线处理询问,甚至可以每一层都建一个BIT。。。 下面是离线处理的代码 注意题目的特殊条件,可以用异或来代替加减const int N = 500005;typedef pair<int, int> pi

2015-08-15 00:39:55 574

原创 HDU 5378 Leader in Tree Land (概率dp,进阶)

题意: 给一棵有n个节点,根为1的树的每个节点赋一个值 1-n 的唯一的值。一个子树的代表是其中最大的节点。则一共有m个代表,求m=k的方案数。 思路: 多校题。。这样的dp还是不太会。。 1) u是一个代表 等价于 u是以他为根的子树的最大值 2)有k个代表 等价于 有且只有k个子树,根为该子树中的最大值 sz[u]表示sz[u]表示 u的子树大小 dp[i][j]dp[i][j]表

2015-08-12 15:15:08 748 2

原创 【算法笔记】Aho-Corasick 算法(AC自动机) 小结

参考: 《训练指南》 http://codeforces.com/blog/entry/14854这个改进《训练指南》中说过, 本文的目的是总结并实现一个自用的模板。。 AC自动机每个节点有一个 fail 指针, 作用与KMP中相同。 假如我们的节点是这样的// link 就是 fail指针struct Node { Node *go[CharSet], *link; in

2015-08-10 21:18:12 595

原创 codeforces 154C Double Profiles (简单图论+哈希)

题意: 给一个无向图,定义pair(u, v),使得任意k(k != u, v),k到u,v都有边或者k到(u,v)都不存在边 求这样的无序对数目。 思路: 对点u,让它的相邻点集为S(u), 不包括u 对于pair(u, v) 可以分为两类 if (u, v)存在直接相连的边 则 S(u) + u = S(v) + v else S(u) = S(v) 所以一

2015-08-09 21:22:59 725

原创 hdu 4622 Reincarnation(后缀自动机,入门级)

题意: 求字符串任意字串的不同字串数。 思路: 用后缀自动机可以做到 O(n2)O(n^2)预处理,O(1)O(1)回答查询。 不过我的代码跑了 1000+ms 别人的代码可以跑到 100ms-200ms。。 VJ的记录#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#includ

2015-08-09 14:46:17 538

原创 uva 1670 Kingdom Roadmap(图论构造题)

题意: 给你一颗树, 让你加最少的边使这个图不存在割边。 思路: (在acdream群里看到有人问这个问题, 就去做了。。做完的感想是。。图论构造题是太无解了。。) 很容易猜到答案是 (m+1) / 2 ,m是叶子的个数。 关键是怎么构造? 比如 9 1 2 2 3 3 4 4 5 4 6 2 7 7 8 7 9 从这样的数据可以想到要连一些交叉边。。不过还是想不到科

2015-08-08 01:02:56 1155

原创 【算法笔记】最短路总结

次短路目前只会用dijstra求解。。(貌似有用spfa的。。 当然如果是DAG, 拓扑排序加DP也是可以的。。次短路的求解和计数hdu 3191这道题有边权为0的情况。 dij所使用的贪心性质:S是目标集合(已经求得最短路或次短路的点),从 V - S 中选估计值最小的一个u,那么d[u]d[u]就是u的最短路长度。 如果边权有0存在, 那么这条性质就无法保证了。。 幸而数据比较特殊, 只

2015-08-05 12:29:54 581

空空如也

空空如也

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

TA关注的人

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