自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(157)
  • 收藏
  • 关注

转载 HDU 6218 (线段树+set)

HDU 6218 BridgeProblem :给一个2×n的矩阵,一开始矩阵所有相邻点之间有一条边。有其、个询问,每次给出两个相邻的点的坐标,将其中的边删除或者添加,问如此操作之后整张图的割边数量。, q<=2*10^5, 图始终保证联通。Solution :首先可以发现不能成为割边的边,一定被某个环所包含。因此只要维护每个环的大小即可。若某条横边在两行中均出现了两次...

2017-11-14 18:51:00 179

转载 Wannafly挑战赛2_D Delete(拓扑序+最短路+线段树)

Wannafly挑战赛2_D DeleteProblem :给定一张n个点,m条边的带权有向无环图,同时给定起点S和终点T,一共有q个询问,每次询问删掉某个点和所有与它相连的边之后S到T的最短路,询问之间互相独立(即删除操作在询问结束之后会立即撤销),如果删了那个点后不存在S到T的最短路,则输出-1。n,q <= 10^5Solution :注意到题中所给的是DAG,首先...

2017-11-13 23:51:00 428

转载 BZOJ3926 (后缀自动机)

BZOJ3926 诸神眷顾的幻想乡Problem :给一个n个节点的树(n<=10^5), 每个点有一种颜色(c<=10), 询问所有点对之间路径组成字符串的种类。保证叶子节点小于等于20.Solution :分别从每个叶子节点开始遍历整棵树,将遍历到的字符串加入后缀自动机。只需要修改后缀自动机的last,就可以实现添加多串。#include <bits/s...

2017-09-21 21:03:00 128

转载 Codeforces 848C (cdq分治)

Codeforces 848C Goodbye SouvenirProblem :给一个长度为n的序列,有q个询问。一种询问是修改某个位置的数,另一种询问是询问一段区间,对于每一种值出现的最右端点的下标与最左端点的下标的差值求和。Solution :定义pre[i] 为 第i个位置的数字上一次出现位置,对于询问l, r 就是对于所有满足l <= pre[i] < i...

2017-09-14 21:26:00 173

转载 CERC 2014 (动态树+主席树)

CERC 2014 Pork barrelProblem :n个点m条边有边权的无向图,有q个询问,每次询问权值在[L,R]内的边组成的最小生成树的权值和,强制在线。n <= 1000, m <= 100000, q <= 100000Solution :参考了网上的一份题解按照边权从大到小加入边,用LCT来维护最小生成树。再用一棵权值主席树,第i棵主席树记...

2017-08-27 23:36:00 169

转载 UOJ 58 (树上带修改的莫队)

UOJ 58 糖果公园Problem :给一棵n个点的树,每个点上有一种颜色,对于一条路径上的点,若 i 颜色第 j 次出现对该路径权值的贡献为 w[i] * c[j], 每次询问一条路径的权值,或者修改某个点的颜色。Solution :树上的带修改的莫队。使用dfs序来对左右端点进行分块。第一关键字分块排序左端点,第二关键字分块排序右端点,第三关键字排序询问顺序。用S(...

2017-08-25 23:47:00 129

转载 UVA12345 (带修改的莫队)

UVA12345 Dynamic lenProblem :给一个序列,每次询问一个区间里面的数字种类数量,或者修改某一个位置的值。Solution :第一关键字分块排序左端点,第二关键字分块排序右端点,第三关键字排序询问顺序。左端点移动总的时间复杂度为 q * block_size + block_num * block_size右端点移动总的时间复杂度为 q * block...

2017-08-25 14:44:00 233

转载 BZOJ2038 (莫队)

BZOJ2038: 小Z的袜子Problem :N只袜子排成一排,每次询问一个区间内的袜子种随机拿两只袜子颜色相同的概率。Solution :莫队算法真的是简单易懂又暴力。莫队算法用来离线处理区间询问,要求每次区间的端点左右移动1可以直接求出,通过第一关键字分块排序左端点,第二关键字排序右端点,来合理安排询问的顺序,使得总的时间复杂度下降。每次询问直接暴力修改就行。假设分为k...

2017-08-25 14:37:00 90

转载 Gym 215177D 母亲节的礼物

Gym 215177D 母亲节的礼物Problem :给n个点m条边的无向图,每个点的度数小于等于7,要求用4种不同的颜色给每个点染色,使得每个点相邻的点中最多只有一个相同颜色的点。(n<=25000)Solution :首先给每个点进行随机染色,调整不合法的点的颜色。对于某个不合法的点,必然可以找到一种颜色只出现过1次或0次,调整为这种颜色就行了。考虑不合法的边的数量,...

2017-08-16 19:22:00 114

转载 HDU 6076 (动态规划)

HDU 6076 Security CheckProblem :有两个长度为n的队列过安检,每个人有一个特征值。如果两个队列中的第一个人的特征值之差小于等于k,那么一次只能检查其中一个人,否则一次可以检查两个人。每次检查花费1的世时间。问最后检查完所有人之后所需要的时间。(n <= 60000, k <= 10)(3s时限)Solution :容易想到一个dp方程,d...

2017-08-03 21:25:00 99

转载 HDU 6070 (线段树)(统计颜色)

HDU 6070 PartitionProblem :给一段长度为n的序列,要求找出一段区间,使得这段区间的数字种类除以区间长度最小。输出最后的答案即可。(n <= 60000)(9s时限)Solution :显然,答案是0~1中的一个数字,可以很自然的想到二分答案的做法。假设目前二分到的答案为mid,那么需要判断\[\frac{cnt(l, r)}{r- l + 1} ...

2017-08-03 20:12:00 82

转载 HDU 4651 (生成函数)

HDU 4651 PartitionProblem :n的整数划分方案数。(n <= 100008)Solution :参考资料:五角数 欧拉函数 五边形数定理 整数划分 一份详细的题解欧拉函数的定义如下:\[\phi(q) =\prod\limits_{n=1}^{\infty}(1-q^n) \]五边形定理对欧拉函数展开如下:\[\phi(q) = \sum_...

2017-08-02 20:38:00 197

转载 HDU 6035 (虚树)(统计颜色)

HDU 6035 Colorful TreeProblem : 给一棵树,每个结点有一种颜色,定义每条路径的权值为这条路径上颜色的种数,询问所有路径(C(n,2)条)的权值之和。Solution : 分开考虑每种颜色对答案的贡献。对于一种颜色,一共有C(n,2)条路径,再考虑问题的反面。不含有这种颜色的路径的数量,即为将这棵树上所有这种颜色的点删去后,所有剩下的树的路径数量。问题关...

2017-07-25 19:54:00 209

转载 HDU 4436 (后缀自动机)

HDU 4436 str2intProblem : 给若干个数字串,询问这些串的所有本质不同的子串转换成数字之后的和。Solution : 首先将所有串丢进一个后缀自动机。由于这道题询问的是不同的子串之间的计数,不涉及子串的数目,因此考虑用后缀链即后缀自动机的nt转移数组来做。首先将所有节点进行按照距离大小进行基数排序,然后从小到大枚举每个节点的出边,假设当前点为u,转移到v,那么更...

2017-07-24 19:38:00 142

转载 HDU 4622 (后缀自动机)

HDU 4622 ReincarnationProblem : 给一个串S(n <= 2000), 有Q个询问(q <= 10000),每次询问一个区间内本质不同的串的个数。Solution : 由于n只有2000,对串S的每一个左端点建立一遍后缀自动机,暴力计算出所有答案的值。。。#include <iostream>#include <algor...

2017-07-22 20:46:00 101

转载 POJ 3518 (后缀自动机)

POJ 3518 BoringProblem : 给一个串S,询问串S有多个子串出现至少两次且位置不重叠。Solution : 对S串建立后缀自动机,再建立后缀树,dfs一遍统计处每个结点的子树中最长节点max和最短节点min。枚举一遍后缀自动机的节点,那么对于其对应后缀的长度要求为小于等于max - min。#include <iostream>#include &...

2017-07-22 19:54:00 112

转载 POJ 3415 (后缀自动机)

POJ 3415 Common SubstringsProblem : 给两个串S、T (len <= 10^5), 询问两个串有多少个长度大于等于k的子串(位置不同也算)。Solution :最开始的想法是将S串和T串先后插入后缀自动机,统计出每个节点对应串的出现次数,不过这种做法被卡空间了。第二种想法是只将S串插入后缀自动机,建立后缀树,统计出每个节点对应串的出现次数,在...

2017-07-22 19:48:00 126

转载 HDU 4416 (后缀自动机)

HDU 4416 Good Article Good sentenceProblem : 给一个串S,和一些串T,询问S中有多少个子串没有在T中出现。Solution :首先对所有的T串建立后缀自动机,统计出本质不同的子串个数ans1,再将S串插入后缀自动机,统计出本质不同的子串个数ans2,则答案即为ans2-ans1。将多个串插入后缀自动机,只需要每次将last赋值为root即...

2017-07-21 17:42:00 189

转载 SPOJ SUBLEX (后缀自动机)

SPOJ SUBLEXProblem : 给一个长度为n的字符串,要求输出字典序第k小的子串。Solution :首先对字符串建立后缀自动机。从根节点开始根据nt数组即后缀链进行一边dfs记忆化搜索,预处理出当前状态下之后还能形成的字符串数量。对于每一个询问,从小到大枚举每一位的每个字母即可。#include <iostream>#include <string...

2017-07-21 17:01:00 119

转载 SPOJ NSUBSTR (后缀自动机)

SPOJ NSUBSTRProblem : 给一个长度为n的字符串,要求分别输出长度为1~n的子串的最多出现次数。Solution :首先对字符串建立后缀自动机,在根据fail指针建立出后缀树,对于n个后缀对应的节点打上标记,则每个结点对应的一些子串所出现的次数即为其子树内标记的个数,在后缀树上进行1遍dfs统计,之后根据答案的单调性线性扫描一遍进行统计。#include <...

2017-07-21 16:57:00 116

转载 SPOJ LCS2 (后缀自动机)

SPOJ LCS2Problem : 给若干个串,询问这些串的最长公共子串。Solution :对第一个串建立后缀自动机,对于之后的每个串在后缀自动机上进行匹配。每个节点记录当前串所匹配到的长度以及所有串所匹配到的长度最小值,需要注意的是如果一个串在某个节点匹配成功,那么其fail到根的路径的所有节点都可以匹配成功,需要在最后建立出fail后缀树,进行一遍dfs进行更新。#incl...

2017-07-21 14:13:00 83

转载 SPOJ LCS (后缀自动机)

SPOJ LCSProblem : 给两个串S、T,询问两个串的最长公共子串。Solution :复(yu)习(xi)了一下后缀自动机。后缀自动机一定要结合后缀树来理解呀 !!!后缀自动机的fail指针实现了原串的逆序的后缀树,后缀自动机的nt转移数组相当于后缀树上的后缀链。#include <iostream>#include <string>usi...

2017-07-21 12:14:00 105

转载 POJ 2778 (AC自动机+矩阵乘法)

POJ 2778 DNA SequenceProblem : 给m个只含有(A,G,C,T)的模式串(m <= 10, len <=10), 询问所有长度为n的只含有(A,G,C,T)的串中有多少个不含有模式串的串。(n<=2000000000)Solution :首先对所有模式串建立AC自动机。然后dp[i][j]表示长度为i,走到AC自动机的节点j这样的字符串满...

2017-07-17 11:29:00 116

转载 HDU 2896 (AC自动机)

HDU 2896 病毒侵袭Problem : 给n个模式串,m个目标串,询问每个目标串含有哪些模式串。Solution : 将模式串建立AC自动机,对于每个目标串,开一个数组表示每个模式串是否匹配,在AC自动机上跑一遍即可。#include <iostream>#include <string>#include <queue>using ...

2017-07-16 18:47:00 92

转载 HDU 2222 (AC自动机)

HDU 2222 Keywords searchProblem : 给若干个模式串,询问目标串中出现了多少个模式串。Solution : 复习了一下AC自动机。需要注意AC自动机中的fail,和next的含义。fail指向了一个最长的与当前匹配出具有相同后缀的一个前缀节点,next用来转移下一个字符,指向最远可以匹配的位置。另外,在目标串匹配时,需要用一个temp指针不断经过fail...

2017-07-16 17:28:00 56

转载 数位dp

1. Codeforces 55D Beautiful numbersProblem : 询问一个区间内有多少个数,可以整除其每一位的数字。Solution : 记录一下前若干位数字的lcm和前缀和,由于1~9的lcm是2520,所以前缀和可以对2520取模。对于合法的lcm压缩一下状态,就可以存下来了。#include <bits/stdc++.h>using n...

2017-07-15 19:35:00 335

转载 Codeforces Round #416 (Div. 2)

Problem C. Vladik and Memorable Trip题目大意有n个人打算坐火车,排成了一列。给定每个人要去的目标城市。将这些人分成若干段,同一段内的人坐在同一节车厢里面。(也可以不分配某个人,即这个人不坐火车)规定去往相同城市的人要么都不坐火车,要么都在火车的同一节车厢里面。定义每节车厢的舒适度为同一节车厢内去往城市的编号的异或和。询问所有车厢的舒适度之和的最大值...

2017-05-28 18:03:00 77

转载 POJ 2104 K-th Number (可持久化线段树)

题目大意给一个长度为n的序列,有m个询问,每次询问一个区间里面第k小的数。解题分析静态的区间第k大。复习了一下可持久化线段树。首先对数值离散化,建一颗权值线段树。按照序列的顺序依次插入,每一个数对应于一个版本的线段树。对于每个询问[l,r],在第r个版本的线段树和第l个版本的线段树之间进行查询。本质上来说,可持久化线段树干了一件前缀和的事情,每棵线段树记录了1~i序列的权值信...

2017-05-05 20:27:00 105

转载 POJ 2828 Buy Tickets (线段树 || 树状数组)

题目大意一些小朋友在排队,每次来一个人,第i个人会插到第x个人的后面。权值为y。保证x∈[0,i-1]。按照最后的队伍顺序,依次输出每个人的权值。解题分析好气吖。本来是在做splay练习,然后发现这道题用splay写T掉了,可能是我的splay常数太大了吧。要不要考虑去学一下自顶向下建树的splay,据说会快一点。可以倒着考虑问题。如果倒着安排小朋友的队伍的话,就不用考虑插队的...

2017-05-04 21:44:00 90

转载 HDU 1754 I Hate It (Splay 区间操作)

题目大意维护一个序列,支持两种操作操作一:将第x个元素的值修改为y操作二:询问区间【x,y】内的元素的最大值解题分析splay的区间操作,事先加入两个编号最小和最大的点防止操作越界。具体的区间操作类似于线段树。参考程序#include <bits/stdc++.h>using namespace std;const int INF=2000000000;...

2017-05-03 23:01:00 126

转载 codevs 1296 营业额统计 (splay 点操作)

题目大意每次加入一个值,并且询问之前加入的数中与该数相差最小的值。答案输出所有相差值的总和。解题分析= =参考程序#include <bits/stdc++.h>using namespace std;const int INF=2000000000;class splay_tree{private: struct node { ...

2017-05-03 19:54:00 98

转载 codeforces gym 100357 H (DP 高精度)

题目大意  有r*s张扑克牌,数字从1到 r,每种数字有s种颜色。  询问对于所有随机的d张牌,能选出c张组成顺子的概率和组成同花的概率。解题分析  对于组成顺子的概率,令dp[i][j][k]表示一共选出了i张牌,数字从1~j,最后有k张牌是顺子。对于每个数字进行考虑,有0~s种选法。要保证连续c张牌的顺子。  对于组成同花的概率,令dp[i][j]表示一共选出了i...

2017-05-02 22:28:00 267

转载 codeforces gym 100357 K (表达式 模拟)

题目大意将一个含有+,-,^,()的表达式按照运算顺序转换成树状的形式。解题分析  用递归的方式来处理表达式,首先直接去掉两边的括号(如果不止一对全部去光),然后找出不在括号内且优先级最低的符号。如果优先级相同,则如果是左结合性(+,-,*,/)则选择最右边的一个,如果是右结合性(^)则选择最最左边的一个。  主要恶心的地方在于输出上。主要是记录一下每个点和符号的...

2017-05-01 00:12:00 232

转载 codeforces gym 100357 I (费用流)

题目大意   给出一个或与表达式,每个正变量和反变量最多出现一次,询问是否存在一种方案使得每个或式中有且仅有一个变量的值为1。解题分析  将每个变量拆成三个点x,y,z。 y表示对应的正变量,z表示对应的反变量。  由S向每个点的x部连一条流量为1的边,表示该变量的某个正变量或反变量的取值为1。  由每个点的x部向y部和z部分别连一条流量为1的边,表示每个正变量和...

2017-05-01 00:03:00 88

转载 codeforces gym 100357 J (网络流)

题目大意  有n种物品,m种建筑,p个人。 n,m,p∈[1,20]  每种建筑需要若干个若干种物品来建造。每个人打算建造一种建筑,拥有一些物品。  主角需要通过交易来建造自己的建筑,交易的前提是对方用多余的物品来换取自己需要的物品。  询问主角是否能建造成功自己的建筑,并给出方案。  解题分析  超级恶心的读入,而且有一组数据的给出方式里没有逗号,和样例所示不同...

2017-04-30 23:45:00 97

转载 Hihocoder 1337 (splay)

Problem平衡树 SBT题目大意  维护一个序列,支持两种操作。  操作一:插入一个数。  操作二:询问第k小的数。解题分析  ~~刷刷水题,再熟悉一下splay的基本操作。  ps:哇咔咔,有连续四天的假期了,好开心~~参考程序 1 #include <bits/stdc++.h> 2 using namespace s...

2017-04-28 00:04:00 85

转载 Hihocoder 1333 (splay)

Problem 平衡树 splay2题目大意  维护一个序列,支持四种操作:  操作1:添加一个数,编号为x,权值为y。  操作2:删除编号在区间【x,y】内的数。  操作3:将编号在区间【x,y】内的数的权值增加为z。  操作4:询问编号在区间【x,y]内的数的权值和。解题分析  由于增加了区间加和区间查询,所以要给每个增加一个lazy标记。  在每...

2017-04-27 20:52:00 95

转载 Hihocoder 1329(splay)

Problem平衡树 Splay题目大意  维护一个数列,支持三种操作。  操作1:添加一个数x。  操作2:询问不超过x的最大的数。  操作三:删除大小在区间【a,b】内的数。解题分析  和上一题相比,多了一个删除的操作。  首先将a的前驱节点x旋转到根,然后将b的后驱节点y旋转到x的右孩子,这样所有大小在【a,b】内的数均位于y的左子树内,直接将其删...

2017-04-26 22:38:00 94

转载 Hihocoder 1325 (splay)

Problem 平衡树 Treap题目大意  维护一个数列,支持两种操作。  操作1:添加一个数x。  操作2:询问不超过x的最大的数。解题分析  尝试了一下用指针来写splay,感觉写起来还是比较流畅的,不过用指针的时候还是需要注意一些小细节,要防止对空指针进行赋值。  之后继续把指针版splay的各种功能补齐吧,最后写成模板的形式,方便以后使用。(= =树...

2017-04-26 00:09:00 84

转载 codeforces 723E (欧拉回路)

ProblemOne-Way Reform题目大意  给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案。解题分析  最多点的数量就是入度为偶数的点。  将入度为奇数的点每两个组成一队,连一条无向边,之后求出欧拉回路即可。参考程序 1 #include <map> 2 #include &...

2016-10-06 16:29:00 162

空空如也

空空如也

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

TA关注的人

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