自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BZOJ1925: [Sdoi2010]地精部落 滚动数组DP

以数字个数iii作为阶段,表示111~iii的排列设f[i][j][0/1]f[i][j][0/1]f[i][j][0/1]表示111到iii的排列以jjj结尾,第三维为000表示峰 为111表示谷则容易写出一个方程f[i][j][0]=∑k=1j−1f[i−1][k][1]f[i][j][0] = \sum_{k = 1}^{j-1}f[i-1][k][1]f[i][j][0]=k=1∑j−...

2018-10-22 19:12:45 167

原创 牛客2018提高组模拟day4 T2 区间 差分

我的做法似乎和泥萌不太一样啊。。还常数挺大 不过也是O(n)O(n)O(n)的记f[i]f[i]f[i]表示iii作为GCD的时候能向左拓展的格数可以发现如果能拓展 f[i] = f[i + 1] + 1 直到拓展到一个不能整除的格子上面的式子是可以在数组上差分来算的。设cur为当前gcd的下标 那么每次拓展之后 f[i]++, f[cur-1]–;反向同理 倒过来做一遍就行最后加一...

2018-10-07 22:54:43 110

原创 BZOJ1609 [Usaco2008 Feb]Eating Together麻烦的聚餐 DP

题应该人人都会做,主要用这题练习一下对拍 因为我的暴力跑得太慢了 就把数据范围改小了一点,用于检测正确性足够了(大概) BZOJ1609[dp].cpp#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 30007;#d...

2018-08-27 14:33:55 234

原创 BZOJ1576: [Usaco2009 Jan]安全路经Travel 最短路径树+并查集

不难发现求出最短路径树后,每一条非树边(u, v) 可以用来更新u~lca(u, v), v~lca(u,v)这两条链上的点 对于一个可被更新的点x,他的答案可以被更新为dis[u] + dis[v] + 该非树边的边权 - dis[x] 似乎和dis[x]无关 那么可以按dis[u] + dis[v] + 边权给非树边排序 取最小的来更新就好 这里有一个并查集更新链上结点信息的姿势:令...

2018-08-26 05:05:17 207

原创 BZOJ1588: [HNOI2002]营业额统计 Splay求前驱-后继-插入

第一次码splay,参考了多方代码。 由于每次插入的数都旋转到根,求前驱、后继的函数就统统改为求根的前驱-后继了 其他splay的经典操作还没涉及到,慢慢练吧:P#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namesp

2018-08-24 21:13:30 199

原创 BZOJ1026: [SCOI2009]windy数 数位dp模板

f[i][j]表示当前有i位 第i位数字是j的合法windy数有几种 统计1~x的答案时先考虑位数比x少的,然后枚举1~{x的某一位-1} 加入答案 注意个位上的数要加1 不然取不到闭区间#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>

2018-08-23 20:25:22 128

原创 BZOJ3295: [Cqoi2011]动态逆序对 CDQ分治

cdq模板题 把删除操作的时间倒过来就变成了插入,转三维偏序 用和陌上花开一样的方法做就行,而且没有重复元素,不用离散化 插入一个数对答案的贡献要考虑左上角的元素个数与右下的元素个数,做完一次把x,y全部换成n-x+1与n-y+1就可以统计原坐标系中的右下角元素个数了 记得long long#include<cstdio>#include<cstring>#i...

2018-08-22 22:20:48 121

原创 BZOJ1477: 青蛙的约会 exgcd

(m−n)x+Ly=y−x(m−n)x+Ly=y−x(m-n)x+Ly=y-x 不妨设m−n=a,L=b,y−x=cm−n=a,L=b,y−x=cm-n=a,L=b,y-x=c 原式化为ax+by=cax+by=cax+by=c 因为ax0+by0=d,d=gcd(a,b)ax0+by0=d,d=gcd(a,b)ax_0+by_0=d, d = gcd(a,b)可以用exgcd搞 如果d|...

2018-08-21 21:41:13 147

原创 BZOJ1912: [Apio2010]patrol 巡逻 树的直径

最致命的bug是没有bug。 题面里最后一张图:加两条边以后答案为15 我跑出来一直是10 于是与空气斗智斗勇半个小时+ k = 1的时候不难发现求个直径就完事了 k = 2的时候就大力讨论 不会有新加的边在第一次加的边形成的环中使答案最优 重复统计的地方 边权搞成-1完事了 以及第二次有了负权边就不能dfs/bfs求直径了 得dp 因为这个wa了好久。 不说了太困了#inclu...

2018-08-21 01:29:06 152

原创 BZOJ3732:Network kruskal重构树

题面 kruskal重构树:kruskal的过程中每通过一条边合并两个集合 就新建一个结点作为代表这两个集合的结点的父亲,点权为该边边权 叶子结点都是原图中的点== 那么不难发现父节点点权都大于子节点 刚好使询问的两点所在集合合并的边的边权就是所求 即重构树上lca的点权#include<cstdio>#include<cstring>#include&lt...

2018-08-20 00:44:47 134

原创 BZOJ1031: [JSOI2007]字符加密Cipher Burrows-Wheeler变换 后缀数组

https://www.lydsy.com/JudgeOnline/problem.php?id=1031题目里说的这加密算法是后缀数组的经典应用之一。。断环成链即可, 注意复制原数组时int和char分开赋值,否则会出玄学错误。人傻bug多裸题还交了好几发才ac..z要赋值n << 1 | 1不然会RE我也不知道为啥 如果哪位大爷知道了还请教教我#inclu...

2018-08-19 11:28:42 200

原创 BZOJ4245: [ONTAK2015]OR-XOR 按位贪心

题面 在天津大爷一顿教育下 + 看题解水过了这题。 为什么我会去想奇奇怪怪的dp… 二进制求全部或起来、异或起来之类的一顿位运算操作后答案最大或最小的题都可以从高位开始按位贪心 比如10000总比01111大 这样。 确保最高位是1/0能保证更优 先搞出异或前缀和 然后按高位向低位贪心 如果对于某一位有大于等于m个异或前缀和是0,且这一位上1出现偶数次,就可以分成m段区间使答案上这一位...

2018-08-17 14:02:33 186

原创 BZOJ1040: [ZJOI2008]骑士 基环树DP

题面 一般的基环树DP 处理环时的思路是断环成链,转为序列上的dp 其他地方同树形DP 但这样写起来挺麻烦 这道题可以以一种更简洁的方法处理: 把图建成无向图,用dfs找环。对于每个环,任意切断其环上的一条边,并记录两端点编号。 一颗基环树砍掉一条环上的边后即变成了一颗树,可以在上面做树形dp 由于我们建的是无向图,可以从一个端点出发做一次树形dp,另一个端点再做一次 两端点的答案中...

2018-08-16 20:10:59 200

原创 BZOJ3940: [Usaco2015 Feb]Censoring AC自动机+栈

物理作业写得头昏脑涨T_T 建议做这题之前先做3942 做法同3942 只是这次移到了AC自动机上做匹配 用一个数组记录匹配到栈中每个位置时的结点编号即可, 每次遇到有dangerdangerdanger标记的结点 就把toptoptop减去该串长度, 并从新toptoptop对应的结点继续搜索 注意每次不用把dangerdangerdanger编号清零/*************...

2018-08-15 22:44:28 135

原创 BZOJ2200: [Usaco2011 Jan]道路和航线 拓扑排序+最短路

题面挺好的题。 题意十分清晰, 求S出发到每个点的最短路。 由于负权边的存在,不可以直接用dijkstra求解, 考虑spfa。 spfa的理论复杂度为O(T(R+P))O(T(R+P))O(T(R+P))过不去,实际上也会TLE(好像加了SLF可以水过去一开始想了一个非常naive的做法:用dijkstra,把每条边的边权+10001, 记录最短路上的边数, 统计答案时减掉即可...

2018-08-15 14:37:21 1163

原创 洛谷P1402 酒店之王 网络流

做一下往年省夏的题) 网络流比较显然,拆点要注意一下 一开始把超级源点S的出边容量设成inf -> wa 60分 改成1 -> wa 70分 才发现建图有问题 这样是能过样例 还能水70分 但是不合题意, 2号点也能蹭到1号点喜欢的菜了…… 所以正确建图应该是源点连房间 然后房间连人 人->人拆出来的出点->菜 ->汇点 这样能保证一人一菜一房间...

2018-07-05 23:20:04 181

原创 BZOJ2442:[Usaco2011 Open]修剪草坪 单调队列DP

设f[i]f[i]f[i]表示前i只奶牛的最大效率,一个比较显然的dp是f[i]=max(f[j−1]+e[i]−e[j]),i−k<=j<=if[i]=max(f[j−1]+e[i]−e[j]),i−k<=j<=if[i] = max(f[j- 1] + e[i] - e[j]),i-kO(nk)O(nk)O(nk) 枚举的时候i每次向右移1,f[j−1]−e[j]f...

2018-06-29 22:58:03 175

原创 BZOJ1876:[SDOI2009]SuperGCD 高精度+更相减损法

更相减损法:gcd(a,b)=gcd(a/2,b/2)∗2gcd(a,b)=gcd(a/2,b/2)∗2gcd(a,b) = gcd(a/2, b/2)*2 当a,b均为偶数 gcd(a,b)=gcd(a/2,b)gcd(a,b)=gcd(a/2,b)gcd(a,b) = gcd(a/2,b) 当仅有a为偶数 gcd(a,b)=gcd(a,b/2)gcd(a,b)=gcd(a,b/2)gcd(...

2018-06-29 13:52:58 211

原创 BZOJ1212:[HNOI2004]L语言 Trie树 + DP

记f[i]f[i]f[i]为文章中以第i个字符结尾的内容能否被理解 那么对于每篇文章最大的iii即为答案 把单词集合全部插入Trie中,初始化f[0]=truef[0]=truef[0] = true 每当找到一个i使f[i]=truef[i]=truef[i] = true 就开始在Trie中查询文章中i为起点的后文, 若查询过程中 找到一个叶子结点,即找到一个单词,记该位置为j,f[j]...

2018-06-28 19:35:42 237

原创 BZOJ1801: [Ahoi2009]chess 中国象棋

容易发现每行和每列炮数不超过2的状态是合法的 所以把行和列当成阶段都可以 f[i][j][k]f[i][j][k]f[i][j][k]表示前i行有j列只有一个棋子,k列有两个棋子,这样就能算出没有棋子的列数 然后大力分类讨论 把行作为阶段的话,答案是∑f[n][i][j]∑f[n][i][j]\sum{f[n][i][j]} dp的时候忘记取模wa了几发,样例过了真的没有什么用...

2018-06-28 01:53:05 132

原创 BZOJ1030: [JSOI2007]文本生成器 AC自动机 + DP

正着难想,要处理如何容斥,那就反着来 记f[i][j]f[i][j]f[i][j]为当前为随机串的第i位 匹配AC自动机里编号为j的点 那么答案就是26m−∑f[m][j]26m−∑f[m][j]26^m-\sum{f[m][j]} 写了快速幂甚至比没写还慢了一丢丢……/*********************************************************...

2018-06-28 01:48:15 184

原创 极大化思想 悬线法

1.悬线法 luoguP4147玉蟾宫 蓝书上有这种方法的介绍 维护left[i] right[i] up[i]表示当前行第i列能向左/右/上拓展的格数 ,在第一次循环时从上到下,从左到右维护up和left 之后再逆序循环一次维护right 传送门 并不需要像蓝书那样写 递推状态只和上一行有关 直接和01背包一样证明 可以降成一维的#include<cstdio>usin...

2018-06-17 16:59:43 447

原创 无向图的割点与割边

参考:李煜东:《算法竞赛进阶指南》 因为割点的判定法则是小于等于号, 所以在求割点的时候,不必考虑父节点和重边的问题 从点u出发的所有点的时间戳都可以用来更新 low[x]··· 若u不是搜索树的根结点(dfs的起点), 则u是割点当且仅当搜索树上存在一个u的子节点v 满足 dfn[u]<=low[v] 特别地,若u是搜索树的根结点,则u是割点当且...

2018-06-16 10:38:42 727

原创 欧拉函数

1.SDOI2008仪仗队 题意:求n∗nn∗nn*n的矩阵中左下点能直接看到的点的个数 n<=40000n<=40000n(0,0)(0,0)(0,0) 那么对于同一射线上的点(x1,y1)(x1,y1)(x_1,y_1)与(x2,y2)(x2,y2)(x_2,y_2) 他们的斜率y1x1=y2x2y1x1=y2x2\frac {y_1}{x_1}=\frac{y_2}{...

2018-05-23 20:46:26 145

原创 模板-高斯消元法|jsoi2008 球形空间产生器sphere

使用列主元消去法进行消元题号:洛谷3389 #include<cstdio>#include<cmath>#include<algorithm> using namespace std;//A*X=B 已知矩阵A,B 求X/*把A消成上三角矩阵,依次回代得到结果先使第一行化成1 0 0 ……然后把其他行第一列弄成0 然后把矩阵分块继...

2018-04-29 18:18:00 137

原创 BZOJ#2318. Spoj4060 game with probability Problem

Alice和Bob在玩一个游戏。有n个石子在这里,Alice和Bob轮流投掷硬币,如果正面朝上,则从n个石子中取出一个石子,否则不做任何事。取到最后一颗石子的人胜利。Alice在投掷硬币时有p的概率投掷出他想投的一面,同样,Bob有q的概率投掷出他相投的一面。现在Alice先手投掷硬币,假设他们都想赢得游戏,问你Alice胜利的概率为多少。 第一行一个正整数t,表示数据组数。对于每组数据,一行三个

2018-04-29 16:45:14 179

原创 费用流

LOJ上68ms还挺快 点击打开链接要跑一遍最大费用最大流和最小费用最大流 每次跑之前重新建图 范围很小没什么问题每次SPFA找出最短/最长路 然后blabla 把费用W当成边权#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 5007...

2018-04-29 15:08:04 300

原创 SDOI2014 旅行 动态开点线段树

写的指针比较慢 自带巨大常数 在BZOJ和洛谷都tle了 卡卡常就A了 宛如智障一般在可以 直接判断大小然后swap的地方 声明了两个int来进行区间修改 于是光荣tle 没有写内存回收 删除操作直接把原来所在树上的权值设为0了 并没有删内存#include<cstdio>#include<cstring>#include<algorithm&gt...

2018-04-27 00:01:29 329

原创 【树链剖分模板】 BZOJ1036 树的统计

在dfs1里先处理出重儿子BZOJ传送门:点击打开链接#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cctype>using namespace std;const int inf = 0x7f7f7f7f, max...

2018-04-23 13:24:18 206

空空如也

空空如也

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

TA关注的人

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