02 2017 档案
摘要:题解 这题是一道非常好的插头题,与一般的按格转移的题目不同,由于m很大,要矩阵乘法,这题需要你做一个按列转移的插头DP。 按列转移多少与按格转移不同,但大体上还是基于连通性进行转移。每一列只有右插头是对下一列的转移有影响的,那么我们只需要记录每一列的右插头的连通情况,用最小表示法表示为当前列的状态。
阅读全文
摘要:题意: 有一个N*M的图,每个格子有独立概率p变成障碍物。你要从迷宫左上角走到迷宫右下角。求每个格子成为一个有解迷宫中的障碍物的概率。N <= 5,M <= 6 分析: 这真是一道好题,网上几乎没有任何关于四连通的插头DP的任何资料,这道题目很好地反映了这类问题。 四连通中,只要你存在了右插头,必然
阅读全文
摘要:简单路径的题目,其实就是在状态后面多记了有多少个独立插头。 分类讨论独立插头: 1、只存在上插头或者左插头,可以选择作为独立插头。 2、都不存在上插头和左插头,选择作为独立插头的同时要标号为新的连通块。 换行时需特别注意,因为还有独立插头的判断,如果进行了换行操作,就会乱,特别是在不存在上插头和左插
阅读全文
摘要:这是一道经典的插头DP单回路模板题。 用最小表示法来记录连通性,由于二进制的速度,考虑使用8进制。 1、当同时存在左、上插头的时候,需要判断两插头所在连通块是否相同,若相同,只能在最后一个非障碍点相连;若不相同,则把这两个连通块连起来。 2、如果只存在左或上插头的时候,则要延续连通块。 3、若都不存
阅读全文
摘要:这是一道入门题,只需判断插头有无。 具体分为: 1、上插头和左插头都有 2、有上插头或有左插头 3、上插头和左插头都没有 用HASHMAP储存状态,具体有一些小技巧(见程序)。 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring>
阅读全文
摘要:题意 一个游戏里有k种装备,一开始等级为1,每打败一个怪兽,会随机掉落一件一种类型的装备,它的等级为[1,t+1]中的随机一个数,t为当前佩戴的类型的装备的等级,若掉落t+1等级的装备,就会佩戴该装备,否则不换,然后卖掉不要的装备,卖掉等级为i的装备(任意类型)得到金币i。问打n次怪兽之后的期望金币
阅读全文
摘要:题意 有两个栈分别有n和m个数,每次从任意栈中取出一个数,令k为不同输出序列的总数,其中第i种输出序列的产生方式有ai个,求Σai2。 n <= 500 分析 此题是关于ai2转换。咋一看此题好像很复杂,但巧妙转化ai2之后就变得极其简单。 ai2到底是什么呢?如果单纯把它当做一个值来看待,可能做不
阅读全文
摘要:题意: 一根数轴上有n只怪物,第i个怪物所在的位置为ai,另有m个特殊点,第i个特殊点所在的位置为bi。你可以对怪物进行移动,若两怪物相邻,那么你不能把他们分开,移动时要看作一个整体。你可以选择向左或向右移动,直到撞到怪物,移动的次数不限制。现在要求最大数量的呆在特殊点上的怪物。 n <= 1000
阅读全文
摘要:题意: 有一个栈,有n个数1~n按顺序插进栈中,但弹出顺序不定。另有m个限制,表示为a b,即数a必须在数b弹出之前弹出。问有多少种弹出的方案数。n <= 300,m <= 90000 分析 一开始看这题,怎样都没有头绪,画出模型也没看出什么东西来。 模拟一下进出栈,发现,若数x是最后弹出的,那么1
阅读全文
摘要:题意: 有n个由左右括号组成的字符串,选择其中若干字符串,使得组成的括号序列合法且长度最长。n <= 1000,n个字符串的长度和 <= 10000。 分析: 其实我一开始做这一题的时候,看错了字符串长度和,以为每个字符串的长度都是10000,。 首先我们具体分析每一个字符串,可以发现去掉合法的字符
阅读全文
摘要:题意 强连通分量,找独立的块 强连通分量裸题
阅读全文
摘要:题意:给你一些单词和一个句子,问有多少个单词在这个句子上出现过。 AC自动机裸题
阅读全文
摘要:题意 给定字符串A、B,求其最长公共子串 后缀数组模板题,求出height数组,判断sa[i]与sa[i-1]是否分属字符串A、B,统计答案即可。
阅读全文
摘要:题意 有一个长度为n的序列,序列为n的一个排列。每次找到序列的第一个数k,若k=1则退出,否则区间[1,k]进行翻转,直至k=1或翻转次数大于100000。n<=300000 这题是Splay翻转裸题,但是,我调了一个晚上,毕竟很久没有打过Splay。 问题是出在一开始构建Splay的过程之中,没有
阅读全文
摘要:题意 给你一个长度序列,有多组询问,每次询问(l,r)任选两个数相同的概率。n <= 50000,数小于等于n。 莫队算法裸题。 莫队算法:将序列分为根号n段,将询问排序,以L所在的块为第一关键字,R为第二关键字排序,以次处理询问O(n^1.5) 由于是按L所在的块为第一关键字、R为第二关键字排序的
阅读全文
摘要:题意 支持删除矩阵、插入矩阵、查询当前矩阵与之前有多少个矩阵相交 算相交的时候容斥一下:相交矩形数 = 总矩形数-X轴投影不相交的矩形数-Y轴投影不相交的矩形数-XY轴投影下都不相交的矩形数 最后一项cdq分治解决 不是我的程序 >http://wyfcyx.is-programmer.com/po
阅读全文
摘要:题意 上下有两个位置分别对应的序列A、B,长度为n,两序列为n的一个排列。当Ai == Bj时,上下会连一条边。你可以选择序列A或者序列B进行旋转任意K步,如 3 4 1 5 2 旋转两步为 5 2 3 4 1。求旋转后最小的相交的线段的对数。 很暴力的就做了这一题,当选择A进行旋转时,A序列翻倍,
阅读全文
摘要:题意 有一幅n*n的方格图,n <= 100,每个点上有一个值。从(1,1)出发,走到(n,n),只能走四联通。每走一步花费t,每走三步需要花费走完三步后到达格子的值。求最小花费的值。 拆点,dis[i][j]表示到达第i个点时走的总步数模3等于j时的最小花费值。
阅读全文
摘要:题目大意 上下有两个长度为n、位置对应的序列A、B,其中数的范围均为1~n。若abs(A[i]-B[j]) <= 4,则A[i]与B[j]间可以连一条边。现要求在边与边不相交的情况下的最大的连边数量。n <= 10^5。 在Gold里,此题的数据范围是1000,我们完全可以用简单的最长公共连续子序列
阅读全文
摘要:1176: [Balkan2007]Mokia Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的
阅读全文
摘要:题目大意:有一个序列,包含多次询问。询问区间左右端点在规定区间里移动所得到的最大中位数的值。 考虑对于每个询问,如何得到最优区间?枚举显然是超时的,只能考虑二分。 中位数的定义是在一个序列中,比中位数小的数跟比它大的数一样多,由于我们要求的是最大的中位数,自然希望能找到一个区间,使得该区间内比该中位
阅读全文
摘要:题目大意 有n个数字,选出一个子集,有q个询问,求子集和模m等于0的方案数%1000000009。(n <= 100000,m <= 100,q <= 30) 假设数据很小,我们完全可以做一个背包。 我们沿着背包的思路,看能不能给物品分一下类,由于m比较小,完全按N个数字模M后的值进行分类,这样就变
阅读全文
摘要:这题是裸的主席树,每个节点建一棵主席树,再加个lca就可以了。 历尽艰辛,终于A掉了这一题,这般艰辛也显示出了打代码的不熟练。 错误:1、lca倍增的时候i和j写反了,RE了5次,实在要吸取教训 2、主席树插入操作的时候,如果插入到的那个点(叶节点)原来有值,而没有加上,导致了WA 以下是历尽艰辛的
阅读全文
摘要:如果按一般的思路来想,去求窗户能框住的星星,就很难想出来。 如果换一个思路,找出每颗星星能被哪些窗户框住,这题就变得非常简单了。 不妨以每个窗户的中心代表每个窗户,那么每颗星星所对应的窗户的范围即以其为中心的、W*H的矩形。把这些矩形的左边和右边,分别加上和减去其价值。而统计这些边只需要开一个线段树
阅读全文

浙公网安备 33010602011771号