- 博客(133)
- 资源 (2)
- 收藏
- 关注
原创 【Amritapuri 2009】 Find the Number
【题目大意】给定k个数p1,p2,,,pk,给定n,求第n大的数,满足有且仅有一个序列p中的数整除它。给定的p两两互质。(k32,25)【分析】二分答案+容斥判定其实看到k的范围就应该想到枚举子集来容斥了。【题目】/* Ciocio's Oi Template */#include #include #include #include #inc
2014-03-10 19:11:30
1001
原创 【SGU 275】 To xor or not to xor
【题目大意】给定一个非负整数序列a1,a2,,,an (118)。要求选出其的一个非空子集,使得异或和最大。求最大异或和。【分析】先给出算法,再简略说明正确性。从高到底枚举每一个二进制位L。1.找出第L位为1的数ai,如果找到则转2,否则转4.2.若ans的第L位为0,ans^=ai。3.使所有第L位为1的数aj^=ai。4.枚举下一个二进制位。
2014-03-10 18:58:19
1552
原创 【NOI2003】 editor
【题目大意】要求一种数据结构,能够支持(1)在某个位置插入长度为n的字符串(2)删除从某个位置开始的长度为n的字符串(3)输出从某个位置开始的长度为n的字符串【分析】块状链表很裸的一道题,练练手。要注意几点细节:(1)空间可以循环使用(2)注意随时保证复杂度,即合并小区间【代码】#include #include #include
2014-03-04 16:18:17
1554
原创 【BZOJ 1880】 Elaxia的路线
【分析】我们分别从两个起点,两个终点,做四次最短路。然后我们可以知道哪些点和边是两人都经过的,并且按照经过的次序使边变为有向的。这样就构成了一个DAG。毫无疑问,我们要求的是这个DAG的最长路。用拓扑排序+DP即可完成。(PS:不知道标解是怎样,感觉我的做法很奇葩,但是在BZOJ上排rank4)【代码】#include #include #inclu
2014-02-25 19:36:19
950
原创 【BZOJ 1975】 魔法猪学院
【分析】很明显是求k短路,我们用A*优化的Spfa来实现。先预处理Dist[i]表示当前点到终点的最短距离。然后优先队列中的关键字为dis+Dist[i],每次取出最小的关键字的i。用它的dis更新它可以到的点的dis,然后放入优先队列。当终点第k次出队的时候,就是到终点的k短路。【代码】#include #include #include #includ
2014-02-25 19:27:09
1245
原创 【PYC#1 欢乐赛】 题解
【题目地址】点击打开链接【分析们】【T-1】树状数组+Trie树【T-2】首先显然这是个堆,这个堆以位置为关键字,且形状固定。我们要做的就是将数字1~N填入堆中,并且令这些数字也满足堆性质。考虑我们有一个以x为根的堆,有i个数字可以填。我们用M[i]表示以i为根的堆的结点个数,可以逆序O(N)求得。用f[i]表示有i个数的方案数。我们得到一个
2014-02-23 15:57:00
1446
3
原创 【KpmCup#0 省选模拟赛】题解
【题目地址】【T-1】很明显的差分约束系统,判负环。但是裸的要超时,我们注意到一个负环必定在一个强连通分量中。于是我们先求出SCC,再判负环。只需要判断入队次数大于sqrt(N)即可,虽然这样是有反例的,但大多数数据是能过的。【T-2】斜率优化dp我们可以得到一个dp方程: f[i]=min{f[j]+sigma(b[k]*(i
2014-02-20 16:45:11
1504
原创 【POJ 3469】 Dual Core CPU --最小割
【题目地址】点击打开链接【分析】这种题应该一看就是最小割的题目。然后我们考虑这样建图:1.S向每个任务连一条容量为A[i]的边。2.每个任务向T连一条容量为B[i]的边。3.如果输入u,v,w。那么u向v连容量w的边,v向u连容量w的边。那么如果任务a,b是由不同的cpu完成的,即各自分属S集和T集。那么割边集必然包含连接a,b的边。【代码】
2014-02-19 19:08:29
798
原创 【HDU 1569】 方格取数2 --最大点权独立集
【题目大意】给你一个m*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大。(n,m【分析】将图黑白染色,然后按照矛盾关系建成二分图。那么求一个最大点权独立集即可。建图:i + j 为奇数的与S节点相连,边的权值为棋盘上对应位置的值。i +
2014-02-19 18:58:37
711
原创 【UVa 10780】 Again Prime? No time.
【题目大意】给定两个正整数N,M。求一个最大的正整数k,使得Mk|N!【分析】直接将N!和M的质因子分解,然后比较指数即可。N!的质因子分解式: 设N!=p1a1 × p2a2 × p3a3 ××× pkak那么pi的指数ai=sigma(N/(pij)) pij【代码】#include #include #include #inc
2014-02-18 13:21:29
787
原创 【HNOI2012】 永无乡
【题目地址】点击打开链接【分析】平衡树的启发式合并,可以证明是O(nlogn)的。【代码】#include #include #include #include #include #include #include using namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);++i)#
2014-02-17 17:14:54
966
原创 【CTSC 2008】 网络管理 --树链剖分+树状数组+Trie树
【题目大意】给定一颗点上带权的树,每次可以修改某点的权值,或者询问两点u,v树上唯一路径的第k大权值。【分析】这类树上路径问题直接轻重权树链剖分就好啦。。但是是询问第k大,所以我们用一个树状数组套Trie树维护区间权值即可。。注意用BFS来剖分避免爆栈【代码】#include #include #include #include #inclu
2014-02-15 23:23:54
924
原创 【POJ 1741】 Tree --点分治
【题目大意】 给定一棵N个节点、边上带权的无向无根树,再给出一个K,询问有多少个数对(i,j)满足i【数据规模】多组测试数据,每组数据满足N≤10000,1≤边上权值≤1000,1≤K≤10^9。【出处】楼天城男人必做8题之一……【分析】很显然有个暴力算法:从每个点出发遍历整棵树,统计数对个数。也很显然时间复杂度O(N^2),要TLE。
2014-02-14 15:41:18
787
原创 【BZOJ 2818】 gcd
Description给定整数N,求1数对(x,y)有多少对.Input一个整数NOutput如题Sample Input4Sample Output4HINThint对于样例(2,2),(2,4),(3,3),(4,2)1【分析】 设有x,y满足条件,有(x,y)=p,p
2014-02-14 00:34:06
989
原创 Splay维护区间
Description给你一个长度为N的序列{ai}和M个操作 1.查询第k个数的值 2.将第k个数增加d 3.查询一段区间的和 4.查询一段区间的最大值 5.将一段区间镜面翻转(例如序列{1,2,3,4,5,6},将从2到5的区间翻转后得到序列{1,5,4,3,2,6}) 对于除操作2,5以外的操作,输出相应的答案Input第一行两个正整数N,M 第二行N
2014-02-11 22:18:57
1044
原创 【ZJOI2013 DAY1】K大数查询 --树套树水题
Description时限:2s 有n 个位置和m 个操作。操作有两种,每次操作如果是1 a b c 的形式,表 示往第a 个位置到第b 个位置每个位置加入一个数c。如果操作形如2 a b c 的形 式,表示询问从第a 个位置到第b 个位置,第c 大的数是多少。Input第一行两个数n,m。意义如题目描述。 接下来m 行每行形如1 a b c 或者2 a b c 如题目
2014-02-08 23:55:54
1148
原创 zbrka
Description考虑一个由N个整数构成的数列,其中1到N都在数列中出现了恰好一次。 在这个数列中从左到右任取两个数,如果前者比后者大,那么这对数就是一个逆序对。 而整个数列的逆序数就是其中所有逆序对的总数。 例如,数列(1,4,3,2)的逆序数为3,因为存在三个逆序对:(4,3),(4,2)和(3,2)。 写一个程序,计算有多少长度为N的这种数列,使它的逆序数恰为C。
2014-02-06 10:50:46
1825
原创 【Usaco Jan08 Gold】电话网络 --树型dp
DescriptionFarmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流。不过,为此FJ必须在奶牛们居住的N(1 所有草地中只有N-1对是相邻的,不过对任意两块草地A和B(1 请你帮FJ计算一下,为了建立能覆盖到所有草地的通信系统,他最少要建多少座无线电通讯塔。Input* 第1行: 1个整数,N * 第2..N行: 每行为2个用空格隔开的整数
2014-02-04 19:29:54
998
原创 【JLOI2013】删除物品 --树状数组
Description箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆。 (2)所有物品都是一样的,但是它们有不同的优先级。 (3)你只能够移动某堆中位于顶端的物品。 (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端。若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动。 (5)求出将所有物品删除所需的最小步数。删除操作不计入步数之
2014-02-04 18:55:52
901
原创 TopCoder SRM 607 题解
。。。第一次进div1,就一道都没有搞出来,第一题理解错了题意,第二题乱搞没有成功,第三题没看 。果然深夜+感冒不是适合刷题的模式啊,不过幸好还保持在blue。最后看了看WJMZBMR神犇的代码,表示自己果然傻逼,连第一题这样的傻逼题都没A。250pt:分奇数和偶数长度分别讨论,然后直接枚举中心和长度计算即可。。。(一开始理解错题意,以为不是按顺序拼凑,对出题人只能呵呵,明
2014-02-03 22:30:29
1374
1
原创 HDU-4704 --费马小定理降幂
Problem Description Sample Input2 Sample Output2Hint1. For N = 2, S(1) = S(2) = 1.2. The input file consists of multiple test cases. 【分析】题目中,S[i]表
2014-02-02 20:28:26
1139
原创 CodeForces 128B --后缀自动机
【题目地址】点击打开链接【题目大意】给定一个字符串s,每次提问它的第k小子串。 起始位置不同的相同子串看做不同字串。【分析】这道题的做法跟我博客上的上一题差不多。只需要改一个地方:x.sz=x.same+sigma(y.sz) y是x的儿子【代码】/**************************** ID:Ciocio
2014-02-02 16:25:21
908
原创 SPOJ Lexicographical Substring Search --后缀自动机
【题目地址】点击打开链接【题目大意】给定一个字符串s,每次提问它的第k小子串。 如果某个字符串在s中重复出现,将其看做一个子串。【分析】•我们引入另一个域x.size,表示从x点开始向后遍历得到的子串数,从原点开始沿正向转移边深搜可以得到。其作用与平衡树中的size域相同,在自动机中查找第K大子串的方式可以参照在平衡树中找第K大元素的方法。
2014-02-02 15:34:01
784
原创 Codeforces Round #227 (Div. 2) T5
【题目地址】 点击打开链接【分析】仔细分析题目后,我们可以简化模型:给出一个1~N的全排列,并标记一些数要保留。求每个不保留的数左边第一个比自己小的要保留的数,以及右边第一个比自己小的要保留的数。这样用STL中的set就可以轻松解决了【代码】/************************* ID:Ciocio LANG:C++ D
2014-01-31 20:06:04
712
原创 动态区间k小问题
【分析】 其实就是在静态区间k小的基础上,利用了树状数组的思想。然后利用sz的可加性,用l-1,r的版本来维护一个区间[l,r]的sz。其实每个节点用一般的线段树即可,只需要注意动态添点避免爆空间,但我懒得写了,就用可持久化水过了。【代码】/**************************** ID:Ciocio LANG:C++
2014-01-29 22:14:33
806
原创 BZOJ 3339 Rmq Problem
【题目地址】点击打开链接【题目大意】给出长度为N的数字序列A[],Q个提问,每次询问为l,r,输出区间[l,r]的mex。mex{S}定义为自然数(包括0)中最小的,不在集合S中的值。N,Q,A[]范围均为20w级别(尼玛,题目名字跟意思毫无关系啊有木有)【分析】我们可以预处理区间[1,x]的mex,用数组Mex[x]记录。 并用一棵线段树来保存区间信息
2014-01-29 21:06:09
1187
原创 SPOJ Substrings --后缀自动机
【题目地址】 点击打开链接【分析】 •这道题首次遇到需要计算每个状态(所代表的子串)在原串中的出现次数,对于点x我们令这个出现次数为x.same(可以理解为有多少串与自己相同)。为了避免重复计算,初始时真节点值为1克隆节点为0。然后沿后缀链接拓扑排序,依拓扑序向前累加x.pre.same+=x.same,即可得到所有节点的same值。 •知道了每
2014-01-28 20:48:12
737
原创 SPOJ LCS2 --后缀自动机
【题目大意】 求N(N【分析】 依旧构造第一个串的后缀自动机,用其余字符串与其匹配。 除了记录与当前字符串成功匹配的位置和位数以外,要在每个节点上记录到上一个串为止、在该节点处能够成功匹配的最长位数。并且根据性质,那些被当前已匹配串所包含的串也是可以成功匹配的,所以还需要沿着后缀链接向前实时更新。【代码】/*******
2014-01-28 20:15:58
739
原创 SPOJ LCS --后缀自动机
【题目大意】 两个字符串的最长公共字串长度【代码】/************************ ID:Ciocio LANG:C++ DATE:2014-1-28 TASK:LCS************************/#include #include #include #include #includ
2014-01-28 14:01:35
854
原创 Ural 1519 Formula --插头DP
题目地址:点击打开链接【题目大意】 一个N*M的方格,有一些点不能访问,求汉密尔顿回路条数【分析】 裸的插头DP,我代码中是用的括号表示法,而且用排序代替了Hash,这样速度比较快。【代码】/************************* ID:Ciocio LANG:C++ DATE:2014-1-27
2014-01-27 20:53:15
817
原创 猴子大王 --左偏树
题目地址:点击打开链接【分析】...左偏树裸题【代码】/************************* ID:Ciocio LANG:C++ DATE:2014-1-27 TASK:monkey king*************************/#include #include #include #inclu
2014-01-27 15:54:23
790
原创 CVS
原题地址:点击打开链接【分析】。。函数式链表【代码】/************************** ID:Ciocio LANG:C++ DATE:2014-1-26 TASK:CVS**************************/#include #include #include #include #in
2014-01-26 23:26:07
695
原创 Count Path Pair
题目地址:点击打开链接【分析】我们设总的方案数为A,然后f,g相交的方案数为B。那么答案就是A-B了。A很好计算,A=C(m+n,n)*C(m-p+q,q)从图中我们可以看出,f,g在E点相交,等价于f从E点穿过。所以相交的方案数B就等价于“A到C,B到D的方案数”。那么,B=C(m+q,q)*C(m-p+n,n)至此,问题完美解决【代码】/
2014-01-26 22:59:11
797
原创 HDU 4757 可持久化字典树(Trie)
【题目大意】 一颗无根树,每个节点有权值,每次提问x,y,z,回答节点x到y的唯一路径上xor z的最大值。【分析】 Trie保存每个2进制位,然后类似贪心的遍历一次即可,遍历的时候,用x,y,lca,falca的各个版本来维护是否有串即可。【代码】/*********************** ID:Ciocio LANG:C++
2014-01-24 14:02:18
1357
原创 POJ 2761 静态区间K大
。。可持久化线段树模板题具体讲解看CLJ神犇的论文,总之函数式编程的关键就是不要赋值,每次都新建节点就好了。【代码】/************************ ID:Ciocio LANG:C++ DATE:2014-1-22 TASK:Feed the dogs************************/#include #include
2014-01-24 13:55:58
1112
原创 ZOJ 3728 Collision
题目大意: 有一个圆形奖章固定在一个光滑桌面,我们抛出一些硬币,让它们朝着奖章碰撞。还有一个圆形范围内,圆形范围与奖章有同样的圆心,圆形奖章严格小于圆形范围半径。假设硬币碰撞奖章时不损失能量,然后镜面反射移动方向。 假设圆奖牌和圆范围的圆心是(0,0),硬币的初始位置是严格在圆外的。奖章半径Rm,硬币半径r,则圆范围半径R,初始位置(x,y)和初始速度矢量硬币
2014-01-21 20:02:33
833
原创 【SCOI2010 DAY2】 字符串 --折线原理+乘法逆元
Description时限:2s lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗?Input 输入数据是一行,包括2个数字n和mOutput 输出数据是一行,包括1个数字
2014-01-20 14:28:43
1195
1
原创 HEOI-2012 DAY1 题解 (BZOJ 2742-2744)
Pro 1:【题目大意】给出一个一元n 次方程: a0 + a1x + a2x2 +…+ anxn= 0 求此方程的所有有理数解。 Input第一行一个整数 n。第二行n+1 个整数,分别代表a0 到anOutput第一行输出一个整数 t,表示有理数解的个数。 接下来t 行,每行表示一个解。 解以分数的形式输出,要求分子和分母互质,且分母必须是正整数。 特
2014-01-19 14:28:59
2270
原创 【UVA 11178】 Morley's Theorem
Morley’s theorem states that that the lines trisecting the angles of an arbitrary plane triangle meet at the vertices of an equilateral triangle. For example in the figure below the tri-sectors of ang
2013-12-29 18:00:30
777
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人