自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yashem66

Think twice , code once!

  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 (模板)中国剩余定理 重学笔记 POJ1006

资料推荐有很大帮助的博客 ——(本文多处引用其中金句,特此注明出处并鞠躬感谢博主。)主要定理定理一: 几个数相加,如果任何一个数不能被div整除,那么这几个数的和一定不能被div整除。定理二: 两数不能整除,若除数扩大(或缩小)了几倍,而被除数不变,则其商和余数也同时扩大(或缩小)相同的倍数(余数必小于除数)。主要步骤求出各个除数(div)的最小公倍数(lcm)。求出各个除数的基础数(b

2017-04-24 15:13:30 832 1

原创 BZOJ4327 玄武密码 (AC自动机)

题目大意给出一个母串和一些特征串,询问字串能在母串中匹配的最长的前缀的长度。题解将特征串一一插入AC自动机并构建fail指针,这样母串匹配的时候走过的路径上的点所代表的前缀就都是可匹配的了。所以把所有的特征串插入AC自动机后构造fail树,然后把母串在AC自动机上跑一下并在可匹配的点上留下标记就可以了,这里要注意标记一定要顺着fail指针传上去一并打上标记,否则可能会遗漏。然后对于每一个特征串,从叶

2017-04-20 16:11:22 1192

原创 BZOJ2251 外星联络 (Trie树)

题目大意给出一个01串,要求按照字典序输出在串中出现两次以上的子串的出现次数。题解我是在hzwer学长的后缀数组专题中看到这道题的,但是我并没有很理解黄学长的暴力是怎么思考的…于是我在另一个地方得到了另一种思路。首先要知道字串的性质:一个串的所有字串都可以表示为这个串某个后缀的某个前缀。换句话说,就是一个串的所有后缀的所有前缀都与这个串的子串一一对应。利用这个性质,这道题就可以写得很简短。所以,这道

2017-04-17 19:00:51 626

原创 BZOJ4429 Elementary Math小学数学 (二分图匹配)

题目大意给出n个数对,支持加减乘三种操作,输出一种方案使每一个式子的结果各不相同。如果没有方案的话输出impossible。题解因为每个方案中,每一个式子都能且只能对应一个值,所以说式子和值的关系是一一对应的。有因为每一个式子最多只能对应3个值,所以说空间和时间复杂度都允许。代码#include <cstdio>#include <iostream>#include <algorithm>us

2017-04-17 14:27:45 781

原创 BZOJ3307 雨天的尾巴 (树链剖分 线段树合并 dfs相关)

题目大意N个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。题解看到这道题之后我本能的想法就是位置线段树套权值线段树的,但是看了一下,这道题的时间限制和空间限制卡得都比较近,树套树卡起来应该是十分的困难的。这道题虽然是处理树上问题,但是我们先考虑如何处理这样的区间问题。 如果所有的操作和询问都是

2017-04-17 13:44:32 1212

原创 BZOJ4127 Abs (树链剖分 线段树)

题目大意给出一棵带权有根树,要求完成以下几种操作:1 u v d 表示将路径 (u,v) 加d (0<=d<=1e8) 2 u v 表示询问路径 (u,v) 上点权绝对值的和题解正常树剖,用线段树维护几个信息:绝对值的和,区间内负数的个数,区间内最大的负数 以及 最大的负数所在的位置,因为有区间加操作,所以还要维护一个加标记。这道题棘手的地方就在于,数字的正负性会随着区间加操作而改变,所以说不能

2017-04-14 14:56:53 1288

原创 BZOJ2002 弹飞绵羊 (LCT)

题目大意要求维护一棵有根树,支持断开一条边并加入一条边,查询到根的距离。题解LCT维护即可,注意是有根树,link和cut之前不能move_root否则会tle。代码#include <cstdio>#include <iostream>using namespace std;const int maxn=int(2e5)+111;int n,m;int p[maxn];struct Nod

2017-04-14 08:04:00 636

原创 BZOJ1858 序列操作 (线段树)

题目大意要求维护一个01序列,要求完成以下几种操作:0 x y 把区间[x,y]内的数字都变成0 1 x y 把区间[x,y]内的数字都变成1 2 x y 把区间[x,y]内的数字都异或1(取反) 3 x y 询问区间[x,y]内的数字1的个数 4 x y 询问区间[x,y]内最长连续数字1的个数题解线段数操作,因为有要完成操作4,所以要维护区间最左端和最右端的连续最长的长度。因为有取反操作

2017-04-13 15:35:58 1562

原创 BZOJ2258 文本校对 (Splay Hash 二分答案)

题目大意同bzoj1014,注意这里面的询问很鬼畜。要注意二分答案的上界的设定。题解题解见bzoj1014:读完题目我首先想到的是后缀数据结构,但是后缀数据结构并不支持修改操作。想了一会儿发现思路并不太对于是我就去翻了大爷的题解,发现是splay+hash+二分答案。大体思路就是用splay结构维护这个字符串,并且在每一个结点维护子树字符串的哈希值。由于询问操作的答案具有单调性,所以可以用二分答案解

2017-04-12 09:17:08 559

原创 BZOJ1269 文本编辑器 (Splay)

题目大意: 维护一个文本编辑器,支持下列操作: 1.将光标移动到某一位置 2.在光标后插入一段字符串 3.删除光标后的一段字符 4.翻转光标后的一段字符 5.输出光标后的一个字符 6.光标– 7.光标++ ——PoPoQQQ题解Splay模板训练题,注意读入Insert之后要读入一个回车(多余字符),这道题bzoj给我发了一份错误的数据,导致

2017-04-11 18:57:26 494

原创 BZOJ1552/3506 robotic sort (Splay 离散化)

题目大意区间长度为n,操作n次,在第i次操作的时候找出区间中第i小的元素的位置pos并翻转区间[i,pos],并输出位置pos。对于键值相同 的元素,初始位置靠前的优先翻转。题解splay裸题,每次维护最小元素键值和最小元素的指针。代码#include <cstdio>#include <iostream>#include <algorithm>using namespace std;cons

2017-04-11 13:49:37 973

原创 BZOJ3323 文艺平衡树 (splay 绿色无毒模板)

题目大意您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 。题解splay裸题,维护子树翻转信息即可。代码:#include <cstdio>#include <iostream>using namespace std;struct Node { int

2017-04-10 18:12:19 477 2

原创 BZOJ1013 球形空间产生器sphere (高斯消元)

题目大意有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。题解以二维为例,设圆心坐标为 x0x0 和 y0y0,若有两点的坐标(x1x1 , y1y1)、(x2x2 , y2y2),则有以下关系:(x1−x0)2+(y1−y0)2=(x2−x0)2+(

2017-04-10 10:08:30 349

原创 BZOJ1015 星球大战starwar (并查集)

题目大意给出一个n个点m条边的无向图,分k次删掉k个不同的点。每删掉一个点,这个点所连的边就会消失、无效。题目要求每次删点之后输出图中联通块个数。题解因为没法直接维护图中联通块个数并同时进行删点操作,所以可以将询问离线处理,把删点变成加点,每次加点都用并查集维护联通块个数就可以了。代码#include <cstdio>#include <iostream>using namespace std;

2017-04-10 08:07:55 454

原创 BZOJ1014 火星人prefix (splay 哈希 二分答案)

题目大意给定一个字符串,要求可以完成以下三种操作:I pos ch 在pos这个位置之后插入字符ch;R pos ch 将pos这个位置的字符换为ch;Q x y 查询从x开始的后缀和从y开始的后缀的LCP(最长公共前缀)。题解读完题目我首先想到的是后缀数据结构,但是后缀数据结构并不支持修改操作。想了一会儿发现思路并不太对于是我就去翻了大爷的题解,发现是splay+hash+二分答案。大体思

2017-04-09 15:16:48 556

原创 BZOJ1012 最大数maxnumber (线段树)

题目大意现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操作。语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。限制:n是非负整数并且在长整范围内。注意:初始

2017-04-07 11:46:44 583

原创 BZOJ1009 GT考试 (DP 矩阵乘法优化)

题目大意阿申准备报名参加GT考试,准考证号为N位数X1X2….Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。他的不吉利数学A1A2…Am(0<=Ai<=9)有M位,不出现是指X1X2…Xn中没有恰好一段等于A1A2…Am. A1和X1可以为 0题解DP,设状态f[i][j]为:长度为i的串 的后缀 至多与不吉利数字的前j位匹配 的串的个数。则对于每一个状态j,加上相同的数字ch都会

2017-04-07 10:56:32 484

原创 BZOJ1008 越狱 (快速幂)

题目大意给出序列长度n和颜色数m,求出存在相邻元素颜色相同的染色方案数。题解正难反易 因为正向解决这个问题比较困难,所以我们可以将问题转化为求出不存在相邻元素颜色相同的染色方案数,然后用所有排列的情况减去。对于序列中的每一个人,只要和前一个人的颜色不同就可以了,所以共有m-1种选择。对于第一个人无论选什么颜色都可以,那么就有m种选择。所以ans=m^n-m*(m-1)^(n-1)。代码#inclu

2017-04-07 08:51:46 422

原创 BZOJ1007 水平可见直线 (单调栈 直线判交)

题目大意给出n条直线,表示成y=Ax+B的形式(|A|,|B|<=500000),且n条直线两两不重合.求出所有可见的直线。可见的定义为从y为无穷大的地方往下看可见,既未被其他直线完全覆盖。题解把所有的直线按k递增为第一关键字,b递减为第二关键字排序。因为所有可见的直线一定能组成一个类似下凸的形状。然后逐个压入栈中,压栈之前把这条直线能覆盖的直线都弹出,既只要这条直线与sta[top-1]的交点在s

2017-04-07 08:42:52 631

原创 BZOJ1005 明明的烦恼 (prufer序列 组合数 高精度)

题目大意自从明明学了树的结构,就对奇怪的树产生了兴趣……给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树?题解prufer序列有两个性质:表示大小为n的树的prufer序列的长度为n-2;树上的每个结点在prufer序列上出现的次数为“度数-1”。所以说限定了某些点的度数之后,问题就转化为了排列组合问题,在这里设m为未限定度数的结点的个数,left

2017-04-07 07:44:47 603

原创 BZOJ1004 Cards (burnside dp 扩展欧几里德)

题目大意有三种颜色的卡片分别sa,sb,sc张,并给出m种相等的置换方式,求所有本质不同的排列方式。题解:根据burnside引理,本质不同的排列数(ans)=sigma(Zi)/m。其中Zi表示对于第i种置换,无论怎么置换,置换几遍都相同的排列的个数,既不动点的个数。根据Polya定理可知,对于某个置换的某个循环节,循环节内所有的元素都相同的排列可称为一个不动点。由于有sa,sb,sc的约束,所以

2017-04-06 17:07:42 351

原创 BZOJ1003 物流运输 (DP spfa)

题目大意给出m个点e条带权边,在n天内每天从1到n走一遍,边权即为代价,每次更换线路需要k点代价,问最小的代价。题解考虑到数据范围很小,可以先预处理出所有时间区间内的从1到n的最短路的长度dis[i][j],然后进行dp。初始状态: f[i][j]=dis[i][j] dp方程为: f[i][j]=min(f[i][k-1]+f[k][j]+K) (i代码:#include <cstdio>#i

2017-04-06 16:24:06 505

原创 BZOJ1002 轮状病毒 (DP 高精度)

题目大意求给定点数的最小生成树的个数。题解看到大家的题解中都用到了基尔霍夫矩阵,但是我用的是不太主流的一种dp。既把环处理为两部分,对于一条完整的链进行dp,对于另一部分用乘法原理进行统计。题解:http://z55250825.blog.163.com/blog/static/150230809201411692636459/代码:#include <cstdio>#include <iostr

2017-04-06 16:19:31 584

原创 BZOJ1001 狼抓兔子 详解 (平面图 spfa)

题目大意:求网格图的最小割。题解:把平面图中的每一个面积块转化为一个结点,并在网格外的面积块中分出两个面积块分别作为S和T,spfa求出的最短路即为最小割。因为只要选择了一条联通的S-T路径,图一定被割为两部分。update! 把图建好之后应该是这样的,每条新边(彩色边)的边权就是它割开的原图中那条边的边权。如果选择了一条从S到T的路径(如图中浅绿色路径所示),那么就相当于选择了一些原图中的边并将

2017-04-06 16:15:27 893

窗口置顶工具

启动后,选中窗口按F8后,窗口将始终保持置顶状态。

2016-09-20

codeblock官方主题包

把此文件放置在PregramFile中的APP Data中的codeblock的文件夹中,覆盖原有的default文件。

2016-09-20

空空如也

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

TA关注的人

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