自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 背景

转载于:https://www.cnblogs.com/HHshy/p/7260322.html

2017-07-31 07:39:00 142

转载 bzoj3637 CodeChef SPOJ - QTREE6 Query on a tree VI 题解

题意:  一棵n个节点的树,节点有黑白两种颜色,初始均为白色。两种操作:1.更改一个节点的颜色;2.询问一个节点所处的颜色相同的联通块的大小。思路:  1.每个节点记录仅考虑其子树时,假设其为黑色时所处的黑色联通块的大小和假设其为白色时所处的白色联通块的大小(树状数组维护)。   2.查询时找到深度最小的、与该点颜色相同的且两点之间的点颜色均与这两点相同(两点可以重合)(...

2017-07-16 09:43:00 191

转载 BZOJ4373 算术天才与等差数列 题解

题目大意:  一个长度为n的序列,其中第i个数为a[i]。修改一个点的值询问区间[l,r]内的数从小到大排序后能否形成公差为k的等差数列。思路:  1.一段区间符合要求满足:(1)区间中的max-min=(r-l)*公差;(2)区间相邻的两个数的差的gcd为公差;(3)区间内的数不重复。   2.(1)(2)用一个线段树维护,(3)首先,序列出现过的值最多只有600000...

2017-07-16 09:38:00 222

转载 洛谷P1521 求逆序对 题解

题意:  求1到n的全排列中有m对逆序对的方案数。思路:  1.f[i][j]表示1到i的全排列中有j对逆序对的方案数。   2.显然,1到i的全排列最多有(i-1)*i/2对逆序对,而对于f[i][j]来说,新加入一个数i+1,产生的新的逆序对数与插入的位置有关(数目为插入的数的位置之后的数的数目),于是n^4暴力就新鲜出炉了。   3.换一个角度来说,当i>...

2017-07-16 09:22:00 294

转载 [CTSC2007]数据备份Backup 题解

题意:  一维直线上有n个点,任取2k个互不相同的点组成k条链,求链的最小总长思路:  1.最优时链不相交,相邻两两相减,将题目转化为:在n-1个数中取互不相邻的k个数使总和最小。   2.贪心取最小的“数”(设为a[x])累加(表示已经取了),再建立一个“反悔机制”(可能和网络流相似):将a[x]向两边各拓展一个,合并成为新的“数”,其值为两边之和减去a[x](取这段则...

2017-07-16 09:05:00 129

转载 [HNOI2012] 永无乡 题解

题意:  n个点,有加边操作,询问与某一点处于相同的联通块的点中权值第k大的点思路:  对所有点建立一棵权值线段树,加边就配合并查集进行线段树合并反思:  动态开点,权值线段树要用sum[g[x=find(x)]](还是不够熟练),g为根。代码: 1 #include<cstdio> 2 const int M=100005,N=55000...

2017-07-16 08:59:00 129

转载 [Poi2011]Meteors 题解

题目大意:  给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值。思路:  整体二分(二分答案),对于每个国家,如果在m次事件后到达目标则放在左边,否则放在右边(用下标映射)。区间加用树状数组维护。反思:  整体二分不熟练。二分计算时算到mid,now表示当前已经经历了几次...

2017-07-16 08:47:00 104

转载 poj 3417 Network 题解

题意:  先给出一棵树,然后再给出m条边,把这m条边连上,然后剪掉两条边,一条是原边,一条是新边,问有多少种方案能使图不连通。思路:  从原边的角度看     1.树加边,一定成环,加一条(u,v)边就有u->lca->v上的边被覆盖一次     2.当一条边没被覆盖时,删去该边与任意一条新边都能使图不连通,即有m种方案     3.当一条边被覆盖1次...

2017-07-16 08:34:00 206

转载 ZOJ - 3781 Paint the Grid Reloaded 题解

题目大意:  给一个n*m的X O构成的格子,对一个点操作可以使与它相连通的所有一样颜色的格子翻转颜色(X—>O或O—>X),问给定的矩阵最少操作多少次可以全部变成一样的颜色。思路:  1.每次操作都将本身所在的连通块与和自己相邻的不同颜色的连通块变成同一种颜色,也就是变成一个连通块了,那么要使n次操作后全部变成一样的颜色,也就是从某点出发到达其余所有点。  ...

2017-07-16 08:24:00 80

转载 CodeForces - 592D Super M 题解

题目大意:  一棵树 n个点 有m个点被标记 求经过所有被标记的点的最短路径的长度以及起点(如有多条输出编号最小的起点)。思路:  1.当且仅当一个点本身或其子树中有点被标记时该点在最短的路径上因此,可以将多余的点删去,得到新的一棵树。   2.不难发现,新树上的边必定被经过一次或两次,而且当只经过一次的边的集合为树的直径时,路径最短。反思:  “如有多条输...

2017-07-16 08:12:00 139

转载 逆元 板子

  逆元就是在模意义下的除法,设B/A≡r(mod p),找一个C使得A*C≡1(mod p),则B*C≡r*A*C≡B/A(mod p),则C即为A的逆元。  那么如何求逆元呢?先贤有n种方法,我就抄两个貌似比较好懂、方便的方法。  一、运用费马小定理    当p为质数时可得ap-1≡1(mod p),所以ap-2 mod p为a的逆元,ap-2mod p可用快速幂求得。...

2017-02-07 20:09:00 204

转载 CodeForces - 425E Sereja and Sets 题解

题目大意:  我们有一个集合 S,其中包含了 m 个不完全相同的区间[l1,r1],[l2,r2]…[lm,rm] (1≤li≤ri≤n,li,ri 都为整数)。  定义 f(S)=k,表示集合 S 中能取出最多 k 个区间,使得这 k 个区间两两不相交。 问当 f(S)=k 时,符合条件的集合 S 有多少个。思路:  f[i][j]表示集合S中所有区间的端点均小于等于i...

2017-02-06 17:05:00 171

转载 SPOJ - QTREE Query on a tree题解

题目大意:  一棵树,有边权,有两个操作:1.修改一条边的权值;2.询问两点间路径上的边的权值的最大值。思路:  十分裸的树链剖分+线段树,无非是边权要放到深度大的一端的点上,但是有两个坑爹的地方,改了好久:  1.数组定义10000和40000会TLE,要乘10;  2.以前的树剖求解的最后是这样的: if (deep[x]>deep[y]) s...

2017-02-05 17:51:00 109

转载 [HAOI2011]Problem b 题解

题目大意:  对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y)=k。思路:  设f(k)为当1≤x≤n,1≤y≤m,且n≤m,使gcd(x,y)=k的数对(x,y)的对数,g(k)为当1≤x≤n,1≤y≤m,且n≤m,使k|gcd(x,y)的数对(x,y)的对数。则,莫比乌斯反演,得。和会有连续的一段相同且相同的为一定连续的一段...

2017-01-20 15:15:00 150

转载 Codeforces 486E LIS of Sequence 题解

题目大意:  一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是。思路:  求以每一个元素为开头和结尾的最长上升子序列长度,若两者相加比最长上升子序列长度+1小,则一个也不是;否则若有另一元素与它的两个值完全相同,则不是所有;否则在所有。代码: 1 #include<map>...

2016-12-18 11:59:00 137

转载 未完

#include<cstdio>using namespace std;int read(){ int x=0; char ch=getchar(); while (ch<'0' || ch>'9') ch=getchar(); while (ch>='0' && ch<='9') x=(x<<1)+(x<<...

2016-12-16 17:41:00 110

转载 ZOJ-3820 Building Fire Stations 题解

题目大意:  一棵树,在其中找两个点,使得其他点到这两个的距离的较小值的最大值的最小值及其方案。思路:  首先显然一棵树的直径的中点到其他点的距离的最大值必定比其他点的小。  那么感性思考一下就将一棵树的直径平分成两段,在找分成的两棵树的直径的中点。  PS:dfs貌似要爆栈,用非递归或bfs。代码: 1 #include<cstdio> ...

2016-12-11 19:43:00 159

转载 UVA - 11604 General Sultan 题解

题目大意:  有若干模式串,将某些模式串拼接起来(一个可以使用多次)形成一个长模式串,判断能否有两种或更多种不同的拼法拼成相同的模式串。思路:  神奇的构图,暴力的求解。  可以发现,若有不同的拼法,则一个模式串的前缀要与一个模式串的后缀相同。  因此我们就将问题转化成:从两个模式串开始,不停的按照前后缀匹配,最后达到两个串同时在一个点结束。  那么,将每一个串的...

2016-12-11 12:41:00 84

转载 UVALive-4839 HDU-3686 Traffic Real Time Query System 题解

题目大意:  有一张无向连通图,问从一条边走到另一条边必定要经过的点有几个。思路:  先用tarjan将双连通分量都并起来,剩下的再将割点独立出来,建成一棵树,之后记录每个点到根有几个割点,再用RMQ求LCA计算。  注意:数组范围。代码: 1 #include<cstdio> 2 #include<vector> 3 #...

2016-12-11 12:11:00 158

转载 [JSOI2008]完美的对称 题解

题目大意:  首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心。  点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组。X是用来产生对称中心S的,即点阵X以S为中心的像点的集合即为点阵X本身。思路:  找到中心就要使得其位于点阵的中心,所以将每个点双关键字排序(横坐标小的在前,一样的使纵坐标有序)代码:...

2016-11-15 13:41:00 171

转载 [VijosP1656]萌萌赶考 题解

题目大意:  有一个地图,有障碍,不能重复经过一点(但起点可以),判断能否恰好在t时刻从起点到达终点。思路:  一开始DFS一遍,30分,于是要有优化减枝。最重要的是从起点到终点的距离的奇偶性是与起点与终点的曼哈顿距离的奇偶性一样(因为远离“最短路”后必将回来,所以会加一个偶数,奇偶性不变)当然还有其他,如最短距离+当前时间>要求时间则减去、搜索方向为先左上再右下。...

2016-11-15 13:21:00 117

转载 [VijosP1764]Dual Matrices 题解

题目大意:  一个N行M列的二维矩阵,矩阵的每个位置上是一个绝对值不超过1000的整数。你需要找到两个不相交的A*B的连续子矩形,使得这两个矩形包含的元素之和尽量大。思路:  预处理,n2时间算出每个点左上方的数的总和,如此可以O(1)算出一个目标矩阵的和。再预处理出自底向下到每行最大的子矩阵、自右向左到每列最大的子矩阵,再n2枚举一个子矩阵,计算与其右方和下方最大的子矩阵的...

2016-11-15 12:58:00 82

转载 [VijosP1639]机密文件 题解

题目大意:  m个人抄n份资料,资料有编号,每人抄连续的几份资料,每份资料页数不一定相等,每个人抄的速度相同,求使得总时间最少的方案(总时间相同,越前面的人抄的越少)思路:  假设每人一天抄一页,二分天数,倒着安排资料即可。代码: 1 #include<cstdio> 2 int n,m,l,r,i,p,a[1001],ans[1001]; 3...

2016-11-13 20:56:00 112

转载 [NOIP2014]寻找道路 题解

题目大意:  在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。2 .在满足条件1 的情况下使路径最短。思路:  先将与终点相通的点求出来(从终点倒着bfs,再将进入未访问到的点的点踢去),再在部分图跑最短路。代码: 1 #includ...

2016-11-13 20:46:00 120

转载 [NOIP2014]联合权值 题解

题目大意:  有一棵树,求距离为2的点权的乘积的和以及最大值。思路:  枚举每一个点,则与其相邻的点互为距离为2的点。该部分的最大值为点权最大的两个点的积,和为点的权值和的平方减去每个点的平方,这样每条边都被跑了两次,所以复杂度为O(n)。  用邻接表存储要开双倍数组(无向),当然像cyk大神一样直接跑边就不用考虑这个了。代码:  邻接表: 1 #incl...

2016-11-12 08:48:00 141

转载 [NOIP2012]国王游戏 题解

题目大意:  n个人排成一排,排头固定,其他可以变。每一个人左右手都有一个整数,一个人的分数为他所有前面的人左手上的数的乘积除以他右手上的数(向下取整),求在整列中最大分数的最小值。思路:  首先,一切序列都可以通过若干次相邻的人的交换实现转换,而相邻的人的交换只会影响这两个人的分数。  假设相邻的两人为i,i+1,则令a[i]*b[i]<=a[i+1]*b[i+1...

2016-11-12 08:29:00 387

转载 [NOIP2012]借教室 题解

题目大意:  有一个n个数的数列,m个操作,第i个操作使[li,ri]区间建di,问第几个操作使数列中出现负数。思路:  暴力显然过不了,那么就可以优化了,不难想到线段树,显然需要良好的姿势,那么就差分。  a[i]表示第i天比第i-1天多了多少房间,于是a的前缀和即为该天的房间数量。而a的维护显然为a[li]+=di,a[ri+1]-=di。  因为求最前的操作,于...

2016-10-31 12:33:00 120

转载 [USACO] 铺放矩形块 题解

题目大意:  给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠。所谓最小矩形指该矩形面积最小。思路:  枚举矩形的安放顺序,再按照题目所给的图判断即可,主要要想到枚举。代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int i,n,sum=10009,p[5]...

2016-10-30 15:51:00 740

转载 CodeForces 279D The Minimum Number of Variables 题解

题目大意:  有一组n个不相同的数字组成数串:a1,a2,a3…an。  1.一个数组b。  2.第一个操作我们将b0的值赋为a1。之后我们有n-1个操作,第k次操作我们将by=bi+bj(y,i,j可能相同)。  3.每次操作结束后我们依次取出by。按顺序组成新串。 问操作结束后,我们获得的新串能否与a数串相同。如果可以输出数组b所需的最小长度。反之输出-...

2016-10-30 15:42:00 159

转载 [NOIP2011]观光公交 题解

题目大意:  就省了吧思路:  应该算是贪心。  不难发现,加速只对所有在使用加速器之后连续的一段下车时不用等人的站点下车的人有用。这非常重要。  先算出不加速时的和,并预处理出每个站点最迟到的人的时间、每个站下车的人数。然后一个一个放加速器,加速器放在惠及最多的人的一段,同时维护到每个站点的时间(判断用不用等人)。  于是就有了一种比较暴力的算法:每次n2暴力求...

2016-10-29 16:27:00 116

转载 [NOIP2011]聪明的质监员 题解

题目大意:  额……貌似蛮清晰的,就不赘述了。思路:  首先不难发现M越大Y越小,因此可以二分答案(方向不要弄错),二分出最小的不小于S的Y即可。而计算Y时可用前缀和O(n+m)求得。两种边界情况也要考虑一下(同时long long不要少开)。代码: 1 #include<cstdio> 2 #include<iostream> 3...

2016-10-29 08:43:00 76

转载 [NOIP2011]Mayan游戏 题解

题目大意:  有一个5*7的方格,上面有几种颜色的方块,如果在一横行或者竖列上有连续三个或者三个以上相同颜色的方块,则它们将立即被消除,方块消除之后,消除位置之上的方块将掉落。每步移动可以且仅可以沿横向拖动某一方块一格:当拖动这一方块时,如果拖动后到达的目标位置也有方块,那么这两个方块将交换位置;如果目标位置上没有方块,那么被拖动的方块将从原来的竖列中抽出,并从目标位置上掉落,直到不...

2016-10-28 18:01:00 184

转载 BZOJ 2303: [Apio2011]方格染色 题解

题目大意:  有n*m的方格,中间的数要么是1,要么是0,要求任意2*2的方格中的数异或和为1。已知一部分格子中的数,求合法的填数的方案数。思路:  由题意得:a[i][j]^a[i][j+1]^a[i+1][j]^a[i+1][j+1]=1,令这个式子为S(i,j),那么对于某一格(i,j),我们把S(1,1)...S(i,j)异或起来,则可得当i,j均为偶数时a[1][1...

2016-09-04 19:29:00 187

转载 【NOI2016】优秀的拆分 题解(95分)

题目大意:  求一个字符串中形如AABB的子串个数。思路:  用哈希做到O(1)判断字符串是否相同,O($n^2$)预处理,ans[i]为开头位置为i的形如AA的子串个数。再用O($n^2$)枚举出AABB中的AA,加上BB(已预处理)的个数即可。时间复杂度为O($n^2$),最后一个点过不掉~~。(此方法为在下所想的朴素算法,比不得大神们的方法,代码更是烂得要死)代码:...

2016-08-30 19:54:00 392

转载 【NOI2016】区间 题解

题目大意:  有n个区间,当有m个区间有公共部分时,求m个区间长度的最大值与最小值之差的最小值。思路:  按区间的长度从小到大排序,可知连续的几个区间最优,则用两个指针指其头尾,线性扫描,再用线段树区间覆盖。代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<algor...

2016-08-30 19:50:00 121

转载 bzoj3083 遥远的国度 题解

题目大意:  给定一棵有根树,每个点有一个权值,提供三种操作:  1.将x节点变为根节点  2.将x到y路径上的点的权值全部改为v  3.询问x的子树中点权的最小值思路:  用DFS序剖分,记录每个节点入栈出栈的时间,其之间的区间即为子树。操作2用线段树直接搞,而换根先不管,可用原来的DFS序。询问时分类讨论:记最开始的根为root,换根之后,对于当前的根rtno...

2016-08-30 19:47:00 116

转载 [Sdoi2014]旅行 题解

题目大意:  给出一个n个点的树,和m次操作。每个点有颜色和权值。 每次操作分4种 1:修改一个点的颜色 2:修改一个点的权值 3:询问从x到y的路径上,和x相同颜色的点的权值和(保证x,y同颜色) 4:询问从x到y的路径上,和x相同颜色的点的权值最大值(保证x,y同颜色)思路:  树链剖分,用线段树来维护和以及最大值。代码: 1 #include<cst...

2016-08-30 19:46:00 122

转载 [SDOI2011]染色 题解

题目大意:  给定一棵有n个节点的无根树和m个操作,操作有2类:  1、将节点a到节点b路径上所有点都染成颜色c;  2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段)思路:  树剖之后,维护其两端的颜色、答案和标记即可。代码:#include<cstdio>#include<iostream>#defi...

2016-08-30 19:44:00 118

转载 [Noi2015]软件包管理器 题解

题目大意:  有n个软件安装包,除第一个以外,其他的要在另一个安装包的基础上安装,且无环,问在安装和卸载某个软件包时,这个操作实际上会改变多少个软件包的安装状态。思路:  可构成树,用树链剖分,线段树。已安装的为1,未安装的为0。对于安装操作,就是询问x到0的路径上0的个数,然后把这个路径赋为1;对于卸载操作,就是询问x的子树中1的个数,然后把子树赋为0。代码: ...

2016-08-30 19:41:00 114

转载 BZOJ1103[POI2007]大都市meg 题解

题目大意:  有一棵树,最先每条边的权值是1,然后给出n+m-1个操作,操作有两种:1.询问一个点到根的路径上的权值和;2.将一条边的权值改为0.思路:  用dfs序将树化为序列,在dfs序中我们会保存节点i进入时间come[i]和出去时间leave[i],这两个数之间的区间即为其子树。询问实为前缀和,可用树状数组记录。修改只会影响其子树(即区间),其他部分并不会改变(+1-...

2016-08-30 19:39:00 148

空空如也

空空如也

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

TA关注的人

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