posted @ 2017-07-31 07:39 HHshy 阅读(48) 评论(0) 编辑
posted @ 2017-07-31 07:39 HHshy 阅读(48) 评论(0) 编辑
摘要: 题意: 一棵n个节点的树,节点有黑白两种颜色,初始均为白色。两种操作:1.更改一个节点的颜色;2.询问一个节点所处的颜色相同的联通块的大小。 思路: 1.每个节点记录仅考虑其子树时,假设其为黑色时所处的黑色联通块的大小和假设其为白色时所处的白色联通块的大小(树状数组维护)。 2.查询时找到深度最小的阅读全文
posted @ 2017-07-16 09:43 HHshy 阅读(137) 评论(0) 编辑
摘要: 题目大意: 一个长度为n的序列,其中第i个数为a[i]。修改一个点的值询问区间[l,r]内的数从小到大排序后能否形成公差为k的等差数列。 思路: 1.一段区间符合要求满足:(1)区间中的max-min=(r-l)*公差;(2)区间相邻的两个数的差的gcd为公差;(3)区间内的数不重复。 2.(1)(阅读全文
posted @ 2017-07-16 09:38 HHshy 阅读(24) 评论(0) 编辑
摘要: 题意: 求1到n的全排列中有m对逆序对的方案数。 思路: 1.f[i][j]表示1到i的全排列中有j对逆序对的方案数。 2.显然,1到i的全排列最多有(i-1)*i/2对逆序对,而对于f[i][j]来说,新加入一个数i+1,产生的新的逆序对数与插入的位置有关(数目为插入的数的位置之后的数的数目),于阅读全文
posted @ 2017-07-16 09:22 HHshy 阅读(45) 评论(0) 编辑
摘要: 题意: 一维直线上有n个点,任取2k个互不相同的点组成k条链,求链的最小总长 思路: 1.最优时链不相交,相邻两两相减,将题目转化为:在n-1个数中取互不相邻的k个数使总和最小。 2.贪心取最小的“数”(设为a[x])累加(表示已经取了),再建立一个“反悔机制”(可能和网络流相似):将a[x]向两边阅读全文
posted @ 2017-07-16 09:05 HHshy 阅读(33) 评论(0) 编辑
摘要: 题意: n个点,有加边操作,询问与某一点处于相同的联通块的点中权值第k大的点 思路: 对所有点建立一棵权值线段树,加边就配合并查集进行线段树合并 反思: 动态开点,权值线段树要用sum[g[x=find(x)]](还是不够熟练),g为根。 代码:阅读全文
posted @ 2017-07-16 08:59 HHshy 阅读(20) 评论(0) 编辑
摘要: 题目大意: 给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值。 思路: 整体二分(二分答案),对于每个国家,如果在m次事件后到达目标则放在左边,否则放在右边(用下标映射)。区间加用树状数组维护。 反思:阅读全文
posted @ 2017-07-16 08:47 HHshy 阅读(24) 评论(0) 编辑
摘要: 题意: 先给出一棵树,然后再给出m条边,把这m条边连上,然后剪掉两条边,一条是原边,一条是新边,问有多少种方案能使图不连通。 思路: 从原边的角度看 1.树加边,一定成环,加一条(u,v)边就有u->lca->v上的边被覆盖一次 2.当一条边没被覆盖时,删去该边与任意一条新边都能使图不连通,即有m种阅读全文
posted @ 2017-07-16 08:34 HHshy 阅读(22) 评论(0) 编辑
摘要: 题目大意: 给一个n*m的X O构成的格子,对一个点操作可以使与它相连通的所有一样颜色的格子翻转颜色(X—>O或O—>X),问给定的矩阵最少操作多少次可以全部变成一样的颜色。 思路: 1.每次操作都将本身所在的连通块与和自己相邻的不同颜色的连通块变成同一种颜色,也就是变成一个连通块了,那么要使n次操阅读全文
posted @ 2017-07-16 08:24 HHshy 阅读(11) 评论(0) 编辑
摘要: 题目大意: 一棵树 n个点 有m个点被标记 求经过所有被标记的点的最短路径的长度以及起点(如有多条输出编号最小的起点)。 思路: 1.当且仅当一个点本身或其子树中有点被标记时该点在最短的路径上因此,可以将多余的点删去,得到新的一棵树。 2.不难发现,新树上的边必定被经过一次或两次,而且当只经过一次的阅读全文
posted @ 2017-07-16 08:12 HHshy 阅读(41) 评论(0) 编辑