- 博客(11)
- 收藏
- 关注
原创 状压dp小结
从铺砖块说起Pro.现有n∗*∗m的一块地板,需要用1*2的砖块去铺满,中间不能留有空隙。问这样方案有多少种 Sol.这题应该每个人都做过吧qwq,这里用它引入介绍三种写法。[下面的(i,j)竖放都是指覆盖(i,j)和(i-1,j),为了方便直接写为竖放]
2018-11-08 15:07:55
1421
原创 AGC22E_Median Replace(自动机)
个人博客上的题解 题目传送门 题目大意:给你一个由’0’,’1’,’?’组成的串,’?’可以为’0’or’1’,每次操作你可以在原串中选连续的三个数使他们合并为他们的中位数 如’010’可以变成’0’,求有多少种方案(关于’?’的取值)使得原串是能在若干次操作后变为’1’(即beautiful的)我们可以发现如果对所有可能的01串构建自动机,那么这个自动机...
2018-04-04 14:59:27
257
原创 BZOJ2434_[Noi2011]阿狸的打字机(AC自动机+树状数组+dfs序)
题目我们可以发现以下性质: 1.打字机过程可以非常妙地放入AC自动机(字符是在AC自动机里加入字符,P是一个串的结束(标记节点),B是回到当前点的fa) 2.对于一个串y,若它被串x包含,那么它是x至少一个前缀的后缀 3.通过AC自动机构建fail树,fail树上x的祖先一定被串x所包含 那么对于一个询问(x,y),我们可以将AC自动机中root到y的点在fail树上标记为1,...
2018-04-02 23:10:31
209
原创 BZOJ1045_[HAOI2008] 糖果传递
贪心w 设每个人原来的糖果数为Ai,最后的糖果数为k(即平均数) 第1个人给了第n个人X1颗糖 第i个人给了第(i-1)个人Xi颗糖(i>1) 那么ans=|X1||X1||X1|+|X2||X2||X2|+……+|Xn||Xn||Xn| k=A1-X1+X2=A2-X2+X3=……=An-1-Xn-1+Xn=An-Xn+X1; 即X2=X1+k-A1 X3=X2+k-A2...
2018-03-06 10:27:27
190
原创 [COGS2278]树黑白
这是一题动态点分治qwq 动态点分治就是把原树中的重心拿出来构成了一棵树,然后每个重心记录它的联通块的信息,这样以后修改u就只会影响u到root路径上所有的重心点的信息,查询也可以只用访问u到root路径上所有的重心点。 具体看代码注释吧。。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#includ
2017-12-19 11:12:45
327
原创 模板整理——图论·最小生成树·Kruskal
思想:把所有边按权值从小到大排序,每次取最小的未处理边e,若e连接的两个点u,v不在同一集合,则将e加入最小生成树,将u,v放入同一集合(并查集),一共需要加入n-1条边 时间复杂度:O(mlgm)#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using names
2017-10-26 22:40:09
262
转载 10.3 T3
题目大意:给定一棵n个点n-1条边的树,每个点上有一个重量w[i]和价值c[i],有K个背包,容量分别为1~K。有Q个询问,每组询问给定两个点x,y,,可以取x到y的最短路径上的点的物品(每种无限个),求各个背包的最大价值的和异或和数据范围:n,Q<=40000 K<62 1<=w[i]<=K 1<=c[i]<=1000000 solution:暴力肯定是不行的,很容易想到倍增。在树上进
2017-10-03 20:08:04
210
原创 10.3 T2
T2给你一个n*m的矩阵,R=每一行最小值的最大值,C=每一列最大值的最小值,求最少修改多少数使R=C。 1 ≤ n, m ≤ 2, 000,0 ≤ Ai, j ≤ 1000,000分析 呃。。。这题其实我用了一个fkcdalao讲的玄学方法。。。正解O(n*m)不过很麻烦。。。于是。。。蒟蒻打了一个卡过的排序+二分O(n*mlogn)。。。 好像还能用堆和线段树等等奇怪的方法,不过数据结构
2017-10-03 20:05:07
220
原创 模板整理——图论·最短路·spfa
思想:每次取出队首u,弹出队首,松弛它的出边,并把u本次松弛的出边连接的未入队的点入队,若一个点入队次数超过n,说明有负权圈 时间复杂度:O(m*k)[k是常数,听说是2or3,然而我并不清楚] 那就假设是对的吧…… queue <int> q;bool spfa(int s){ for (int i=1; i<=n; i++) dis[i]=oo; ...
2017-09-27 20:59:05
241
原创 模板整理——图论·最短路·dijkstra+堆
思想:每次选择当前dis最小的点,更新其出边 时间复杂度:(n+m)logn typedef pairlong long,int> pa;priority_queuevector,greater > q;void dijkstra(int s){ for (int i=1; i//不要忘记清空 dis[s]=0; q.push(pa(0,s));
2017-09-24 20:24:24
302
原创 树链剖分& bzoj 1036 [ZJOI2008] 树的统计 Count 题解
好像是第一篇博客呢ww** 引入 1、作用:在一棵树上进行路径的修改、求极值、求和 2、树链:树上的路径;剖分:把路径分成轻链和重链。 **定义** 1、deep[u]——u的深度 fa[u]——u的父亲 son[u]——u的重儿子 top[u]——u所在重链的顶端 ...
2017-09-04 16:07:50
358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人