自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 bzoj1316 树上的询问(多个定值树链询问)

Description一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No.Input第一行两个整数n, p分别表示点的个数和询问的个数. 接下来n-1行每行三个数x, y, c,表示有一条树边x→y,长度为c. 接下来p行每行一个数Len,表示询问树中是否存在一条长度为Len的路径.Output输出有p行,Yes或No.Sample Inpu

2017-11-30 21:26:25 450

原创 bzoj1468 Tree

Description给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于KInputN(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是kOutput一行,有多少对点之间的距离小于等于kSample Input7 1 6 13 6 3 9 3 5 7 4 1 3 2 4 20 4 7 2 10 Sample Output

2017-11-30 14:19:31 212

原创 poj2114 Boatherds

题目翻译分析:

2017-11-30 13:55:44 217

翻译 poj2114 Boatherds(好久没翻译的说)

译文:时间限制:&nbsp;2000MS&nbsp;空间限制:&nbsp;65536K问题描述Boatherds inc是一家在Trabantustan的帆船公司,在Trabantian rivers提供河上旅行。所有的河流都发源于山中的某个地方,在向低地流的途中,逐渐汇入,最终形成一条大河流向大海。然而,Trabantian村正好位于河流的入海口。注意:...

2017-11-30 11:01:10 336

原创 bzoj2599 [IOI2011]Race(定权值最短树上路径)

Description给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N Input第一行 两个整数 n, k第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始)Output一个整数 表示最小边数量 如果不存在这样的路径 输出-1Sample Input4 3 0 1 1 1 2 2 1 3 4 Samp

2017-11-29 20:31:08 494

原创 bzoj2152 聪聪可可

2152: 聪聪可可Time Limit:&nbsp;3 Sec&nbsp;&nbsp;Memory Limit:&nbsp;259 MBSubmit:&nbsp;2065&nbsp;&nbsp;Solved:&nbsp;1081[Submit][Status][Discuss]Description聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人...

2017-11-29 18:43:19 272

原创 poj1741 tree(点分治)

Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 17730 Accepted: 5784DescriptionGive a tree with n vertices,each edge has a length(positive integer less than 1001). Define di

2017-11-29 17:15:11 354

原创 点分治(高级的坑就要专心填)

点分治是一种树分治算法 在解决树上路径满足某种属性的数量统计方面有着很大的作用基本思想:考虑到树上的路径对于一个点来说只有两种情况: 一是经过这个点,二是不经过这个点对于不经过这个点的情况我们可以直接往下递归处理,主要问题就是解决经过这一个点的路径如果一条路径要经过这个点, 那么ta必然是由两条在这个点两边不同子树中到这个点的路径组合而成具体流程First . 选取一个点,将无根树变成有根树为

2017-11-29 10:43:35 389

原创 bzoj3651 网络通信(LCT)

Description有一个由M 条电缆连接的 N 个站点组成的网络。为了防止垄断,由 C 个公司控制所有的电缆,规定任何公司不能控制连接同一个站点的两条以上的电缆(可以控制两条)。同时规定,每个公司不能有多余的电缆,所谓的多余,是指属于同一个公司的电缆不能形成环。 在运作过程中,不同公司之间会进行电缆买卖。请你写一个程序判断买卖是否合法。 Input输入第一行有4个由空格隔开的整数 N,M,C和

2017-11-28 20:28:12 523

原创 bzoj4530 [Bjoi2014]大融合(LCT维护子树大小)

Description小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。例如,在上图中,现在一共有了5条边。其中,(3,8)这条边的负载是6,因为有六条简单路径2-3-8,2-3-8-7,3-8,3-8-7,4-3-8,4-3-8-7路过了(3,8)。现在,

2017-11-28 16:05:47 838

原创 LCT的扩展操作

声明:本文大部分参考neither_nor‘s Blog,语言风格是博主按照自己的设定修改的LCT可以支持关于点权和链的修改,换根,LINK,CUT和查询链信息操作, 然而有句话说得好:这世上本没有路,走的人多了,也便成了路(是树人老爷子的至理名言) 随着时代的发展,毒瘤出题人越来越多, 为了适应这样新的环境,神犇们就想出了一些diao的不行的方法 这里我们要讲解的就是LCT的另外一些NB操

2017-11-28 15:15:31 809

原创 cv1743 反转卡片(splay)

题目描述 Description【dzy493941464|yywyzdzr原创】 小A将N张卡片整齐地排成一排,其中每张卡片上写了1~N的一个整数,每张卡片上的数各不相同。比如下图是N=5的一种情况:3 4 2 1 5接下来你需要按小A的要求反转卡片,使得左数第一张卡片上的数字是1。操作方法:令左数第一张卡片上的数是K,如果K=1则停止操作,否则将左数第1~K张卡片反转。第一次(K=3)反

2017-11-27 20:01:51 275

原创 bzoj 1251 序列终结者(splay)

Description网上有许多题,就是给定一个序列,要你支持几种操作:A、B、C、D。一看另一道题,又是一个序列 要支持几种操作:D、C、B、A。尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量……这样 我也出一道题,我出这一道的目的是为了让大家以后做这种题目有一个“库”可以依靠,没有什么其他的意思。这道题目 就叫序列终结者吧。 【问题描述】 给定一个长度为N的序列,每个序列

2017-11-27 19:20:55 233

原创 bzoj2209 [Jsoi2011]括号序列(splay)

DescriptionInput输入数据的第一行包含两个整数N和Q,分别表示括号序列的长度,以及操作的个数。 第二行包含一个长度为N的括号序列。 接下来Q行,每行三个整数t、x和y,分别表示操作的类型、操作的开始位置和操作的结 束位置,输入数据保证x不小于y。其中t=0表示询问操作、t=1表示反转操作、t=2表示翻转操 作。Output对于每一个询问操作,输出一行,表示将括号序列的该子序列修改

2017-11-26 20:28:16 354

原创 bzoj3223[Tyvj 1729] 文艺平衡树(splay模板题:区间翻转)

Description您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 Input第一行为n,m n表示初始序列有n个数,这个序列依次是(1,2……n-1,n)  m表示翻转操作次数接下来m行每行两个数[l,r] 数据保证 1<=l<=r<=n Output

2017-11-25 16:45:47 711

原创 bzoj3282 tree

Description给定N个点以及每个点的权值,要你处理接下来的M个操作。操作有4种。操作从0到3编号。点从1到N编号。0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和。保证x到y是联通的。1:后接两个整数(x,y),代表连接x到y,若x到Y已经联通则无需连接。2:后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在。3:后接两个整数(x,y),代表

2017-11-25 15:28:18 205

原创 bzoj2631 tree(路径权值的加乘操作)

Description 一棵n个点的树,每个点的初始权值为1。对于这棵树有q个操作,每个操作为以下四种操作之一:+ u v c:将u到v的路径上的点的权值都加上自然数c;- u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树;* u v c:将u到v的路径上的点的权值都乘上自然数c;/ u v:询问u到v的路径上的点的权值和...

2017-11-25 11:26:17 805

原创 bzoj1180 [CROATIAN2009]OTOCI(详解LCT操作)

Description给出n个结点以及每个点初始时对应的权值wi。起始时点与点之间没有连边。有3类操作: 1、bridge A B:询问结点A与结点B是否连通。如果是则输出“no”。否则输出“yes”,并且在结点A和结点B之间连一条无向边。 2、penguins A X:将结点A对应的权值wA修改为X。 3、excursion A B:如果结点A和结点B不连通,则输出“impossible”。否则输

2017-11-24 19:22:53 314

原创 bzoj1426 收集邮票(递推+概率期望)

分析: 和这道题蛮像的,主要分析转自这里受到UVa10288启发之后,我们就可以很容易的求出g[i]表示当前有i张邮票,得到n张得期望步数 同时我们定义pr(x,i)表示买x次能从i种买到n种的概率 实际pr就是这个: 假设我们现在手里已经有了k图案,令s=k/n,拿一个新的图案需要t次的概率:s^(t-1)*(1-s)则有 设计状态:f[i][j]表示现在有i张不同的邮票,下一次

2017-11-23 19:08:49 622

原创 bzoj1415 [Noi2005]聪聪和可可 (概率与期望)

DescriptionInput数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数。 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号。 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景点Ai和景点Bi之间有一条路。 所有的路都是无向的,即:如果能从A走到B,就可以从B走到A。 输入保证任何两个景点之间不会有多于一条

2017-11-23 10:53:38 366

原创 bzoj 1419 Red is good(概率与期望)

Description桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。Input一行输入两个数R,B,其值在0到5000之间Output在最优策略下平均能得到多少钱。Sample Input5 1Sample Output4.166666HINT输出答案时,小数点后第六位后的全部

2017-11-22 19:39:34 391

原创 Tyvj1952 Easy(期望+dp)

题目链接补充:n<=300000分析: 比较好想的是二维的dp: f[i][j]表示到第i位,已经连续有j个零的期望 且不说如何转移,这样的时间复杂度是O(n^2),显然GG所以我们需要改变状态: 考虑将第二维也变成期望 f[i]表示到第i次点击的期望得分,g[i]表示到第i次点击的期望o的连续长度(这一段连续的o一定是以i为结尾)转移的时候只要分类讨论即可(o,x,?)tip第一遍WA,

2017-11-22 18:32:44 282

原创 bzoj1076 [SCOI2008]奖励关(期望+dp)

题目链接分析: 这道题显然有dp的影子在, 然而每步的决策都和当前有的宝物有关,而且n<=15,所以我们就可以状压了 设计状态:f[i][j]表示第i步,状态是j时的最大期望获利 因为每种宝物出现的概率是相等的,所以我们可以用这个公式: 期望=总情况/情况总数因此每一步的决策就变成了:f[i][j] = sigma{ max( f[i+1][j] , f[i+1][j|(1<<(k-1

2017-11-22 17:09:16 199

原创 noip2017D1T1 math

题目链接分析: 考场上想出来的是exgcd解法 实在是不想承认这道题是小学奥数 所以一直认为,exgcd 是这道题的标算我们需要连续的拼凑整数 假设我们已经能够拼出S 那么我们就需要x个a硬币,和y个b硬币拼出1(这样S+1就合法了) 于是就有方程:ax+by=1 因为a,b互质,因此上述方程一定有解得到二元组(x,y),我们会发现x和y一定不同号 所以每次我们都需要减少一种硬币,增

2017-11-22 10:36:26 1037

原创 日常(关于noip和文化课的思考)

blog停更了很长一段时间,主要是因为noip和文化课的牵制noip准备了很长时间,也很用心 然而今年不知道为什么,从一开始就不是很顺利 loli代我们抽的考场号,于是就落到了日照一中的老爷机 绝望之中发现ZYXZYXZYX和yhzq也在rzyz,心里多少有一点安慰了 (Mency也在日照一中的第3考场)同一个考场有一堆夏令营一起上课的大佬(dzm,烟台一中的小帅哥),一下子感觉心理压力就有

2017-11-22 10:12:33 390

原创 noip2017 treasure(状压dp)

题目链接分析: 首先我们需要明确,最后我们打通的道路组成的一定是一个树形结构一个朴素的想法是这样: 我们如果有一棵生成树,现在要往里面加入一个点 那么贪心的加边即可(枚举该点到生成树每一个点的连边) 当然上述做法显然有纰漏,如果这个点的最优路径端点不在生成树中,就不对了 但是如果给定一个加点序列,我们会发现上述贪心得出的是该排列下的最优解 所以枚举全排列,之后贪心即可 时间复杂度O(n

2017-11-21 20:44:39 592 1

原创 poj1144 Network(割顶)

题目链接分析: 割顶练手题 注意输入就好了 (第一个数是结点编号,剩下的一行里是与之向连的点的编号)//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=110;int n;struct node{ int x,y,nxt;};node way[

2017-11-09 11:28:53 201

原创 bzoj4034 [HAOI2015]树上操作

题目链接分析: 树链剖分练手题 注意线段树是建立在dfs序上的,所以子树一定在线段树上是一个连续的区间 子树加的时候直接线段树区间加即可 询问树链信息的时候,因为top,deep,pre数组都是建立在原树上的 所以传入的是原树上的结点编号(输入编号)这道题也算是一个史前巨坑了,以前一直A不了 今天终于一A了tip开ll//这里写代码片#include<cstdio>#include<

2017-11-09 10:54:01 349

原创 字符串哈希

字符串hash一种玄学的技巧 递推公式:H[i]=H[i+1]*x+s[i] (H[len]=0) 预处理出H数组后,求i~j的长度为L的哈希值,有公式:H[i]-H[j+1]*x^L 一般情况下,我们用map存hash值(曲神表示map只存数字的话不会被卡) 用ull存hash值,这样直接%2^64,比较快 如果不放心,可以选一个大质数%一下(1e9+7,998244353)//这里写

2017-11-09 08:29:34 261

原创 RMQ

作为一种使用率极高的算法,一定不要写错 在倍增的时候,不要无脑循环,要判断数据范围//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int N=100003;int maxn[N][20],n,m;int main(){ scan

2017-11-09 07:26:21 239

原创 矩阵快速幂

题目链接矩阵的模板写起来还是比较熟悉的 要注意H最大只能开到100*100,再大就会炸掉(编译都不行) 三重循环一定要写好了曲神今天给我辟了一下谣 矩阵计算的是每个数的系数,所以我们在计算最后答案的时候,第一列的所有元素都要算进去//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#define ll long long

2017-11-08 21:56:54 182

原创 luoguP3387 【模板】缩点

题目背景缩点+DP题目描述给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。输入输出格式输入格式: 第一行,n,m 第二行,n个整数,依次代表点权 第三至m+2行,每行两个整数u,v,表示u->v有一条有向边输出格式: 共一行,最大的点权之和。输入输出样例输入样例#1

2017-11-08 21:01:14 529

原创 割顶(桥)

新学的知识,实现起来有点不熟练 要注意的就是对于 dfs 树根的特判 并且注意“存在即合理”的特性//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=100005;struct node{ int x,y,nxt;};node way[N<<1];

2017-11-08 20:04:04 264

原创 后缀数组

后缀数组的模板是非常容易写错的 (注释内容都是需要注意的地方) 看好题目要求,字符集是小写字母/全字符,写法是有一点不一样的//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;int sa[N],w1[N],w2[N],cc[200],hei[

2017-11-08 19:14:06 186

原创 AC自动机

AC自动机:简单版 询问每个字符串是否出现过 为了压缩时间,我们当碰到一个ed结点的时候, 如果该结点没有访问过,我们就按照fail跳一遍 如果该结点之前统计过,我们就不用顺着fail指针再统计了//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=10000

2017-11-08 19:06:11 181

原创 KMP

KMP模板,不知道使用率高不高,但是毕竟是AC自动机的精简版 注意失配数组的求解//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;char s[N],w[N];int t[N],l1,l2;void fail() //失配函数

2017-11-08 17:23:40 195

原创 noip之前的最后一次zan联ren考pin?(11.8)

下午看了评测包 My_Square:澍神这波人品攒的好啊 我:。。。mdzz,要攒人品啊 澍神:emmmmT1.D分析: 做过双栈队列吧,那道题是二分图染色,但是这道题要简单得多 实际上就是最长严格下降子序列//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using name

2017-11-08 14:19:48 255

原创 Bellman_Ford的负环

大家都知道Bellman的优化版是SPFA 但是我还是偏向于叫Bellman 这是一种重要的负环判断法(同时维护单源最短路)//这里写代码片struct node{ int x,y,v;};struct Bellman{ int n,m; vector<node> e; //边列表 vector<int> G[N]; //每个

2017-11-07 21:55:08 535

原创 LCA(倍增)

LCA的倍增算法,算是一种比较好些并且使用率很高的算法了//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namespace std;const int N=500005;struct node{ int x,y,nxt;};node way[N<<1];int pr

2017-11-07 21:50:52 257

原创

没什么好说的 稳就好手写小根堆//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1000005;int Q[N],tot=0;void insert(int x){ Q[++tot]=x; int now=tot; int fa=

2017-11-07 21:49:09 172

空空如也

空空如也

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

TA关注的人

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