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

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

原创 传送门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 1024

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

原创 My Booklist

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

2015-08-28 23:52:26 525

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

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

原创 【收集向】位操作技巧 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 936 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 505

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

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

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

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

原创 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 746 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 593

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

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

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

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

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

2015-08-05 12:29:54 578

原创 spoj K-th Number (classic! 区间静态第k大)

这道题的 comment 里有人说 题目链接 Beautiful problem. There exists solution which run in O(log^3 N), O(log^2 N), and O(log N) per query. Explore them and learn something new! 我学到的第一种应该是最大的那种, 就是构造一个线段树, 其中每个节点

2015-08-02 02:00:53 462

原创 【补题向】ZOJ Monthly, July 2015

B Help Bob 简单博弈。。E The Exchange of Items MinCostMaxFlowconst int N = 200;const int INF = 1e9;const double EPS = 1e-9;const int V = N + 2;const int MAXE = 5000;struct Edge { int cap, nxt, to,

2015-08-01 02:42:25 402

原创 codeforces 277E - Binary Tree on Plane (MinCostMaxFlow, 简单)

题意: 。。。 思路: 将每个点 u 拆成两个顶点 u-in, u-out, 但不连边。 从s向u-in连边, 容量为2, 限制u的子节点最大为2。 从u-out向t连边, 容量为1, 限制u只有一个父亲。 对 y[u]>y[v]y[u] > y[v], 连一条边 (u, v), cost 为距离。 然后跑 MinCostMaxFlow, 最后check一下是否满流。#include

2015-08-01 01:21:28 773

空空如也

空空如也

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

TA关注的人

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