随笔分类 - HNOI
摘要:标签:链表+数论知识。 题解: 对于这道题,其实就是两个问题的拼凑,我们分开来看。 首先要求xi与yi。这个可以发现,x每增加1,则pos增加d;y每增加1,则pos增加1。然后,我们把x与y分别写在二维平面上,比如样例: x= 0 1y=0 {0 4}y=1 {1 5}y=2 {2 6}y=3 {
阅读全文
摘要:标签:dfs+剪枝。 题解: 这道题看着就像一道dfs题目,没有什么算法可以用来算这个东西,于是想想暴搜。 如果我们确定因为是2*2的子矩阵的和,如果确定了其中三个,那么就可以确定第四个,发现如果确定了第一行和第一列的话,就可以确定整个矩阵了,于是我们枚举只有399个了。 因为要求字典序最小,我们先
阅读全文
摘要:标签:二分图判定。题解: 首先可以把题目中给你的那个环给画出来,这样就可以发现对于任意一个图来说,如果两条边要相交,就不能让他们相交,那么这两条边就要一条在里面一条在外面,如果把环画成一条链,那么就是一条在下面,一条在上面。于是我们想到对于边,O(n2)的枚举,判断是否相交即可,如果相交的话,就要连
阅读全文
摘要:标签:状态压缩+矩阵快速幂。 题解: 首先看范围,p<=10,那么我们可以想到状态压缩。我们把从一个长度为10的区间进行压缩,1代表可以,那么当值一个区间的1的个数为k个,我们就认为他是合法的。要注意这里所定义的区间,是有起点的,但是没有记下来,因为没有必要。然后我们就可以想一下状态是怎么转移的。那
阅读全文
摘要:标签:扩展卢卡斯+方案数推导。题解: 首先要想到使用组合数而不是DP,否则就会深陷泥潭而不可自拔了。 我们把两个序列拼起来,也就是a+b个位置,每一个位置都是0或1。自然有2^(a+b)种方案。我们分a==b和a>b两种情况来讨论(我也不知道怎么想到这两种情况是不一样的): a==b:首先a的赢和输
阅读全文
摘要:标签:分块。题解: 200000,而且标号从0开始,很符合分块的条件啊。看看怎么实现。 首先分成√n个区间,然后如果我们对于每一个位置i,求出一个Next[i]和step[i],分别表示跳到的后一个位置与步数,因为是分块所以就是跳到下一个区间的步数与位置了。处理这两个数组要从前到后,只需要O(n)。
阅读全文
摘要:标签:区间DP。题解: 首先分析题目,根据题目中的列队方式以及数据范围,我们容易想到O(n2)的算法,也就是区间DP。发现直接dp[L][R],不能转移,于是添加一个dp[L][R][0/1],0表示这个区间最后从左边插入,1则表示右边。 然后分析从左边插入,上一个数要么是从左的要么是从右的,因为这
阅读全文
摘要:因为可以加上一个常数C,说是非负整数,但其实A手环加上,就等于B手环减去,于是把m范围扩充到[-100,100]即可。 然后所求变为: $$\sum (x_i-y_i+C)$$ 接着拆开,可以得到: $$\sum(x_i^2+y_i^2+C^2)+2*C*\sum(x_i-y_i)+2*\sum(x
阅读全文
摘要:标签:DP+map(Hash)+单调性题解: 觉得这道题很妙,题目说每天每天有那么多选择,但是其实只要不死,那么选择最大伤害可以枚举,而不死又可以DP。 具体来说:首先要保证不死,那么我们设dp[i][j]代表在前i天,第i天的自信值为j,那么前i天中可以最多不刷题几天,也就是,可以用来打伤害。其实
阅读全文
摘要:标签:线段树 题解: 首先对于题目的条件进行分析,p1的条件是一个区间的两个端点必须是这一个区间的最大与次大值。p2的条件是一个区间的一个端点是最大值,而另一个端点不是次大值。显然,他们都需要两个条件(对于两个端点都有要求,这样的话不太好操作)。感受一下,p1的条件更为严苛,于是我们这样考虑: 一个
阅读全文
摘要:标签:线段树+set 题解: 此题的标题为splay,所以我们可以排除这道题的正解是splay的可能性。然后我们发现只有最值的单旋,而且,三点一线不需要先旋转父亲。通过手玩我们可以发现,就是把最值直接移到最顶端作为根节点,然后其他的点以及他们之间的父子关系全部都没有变化。于是就只要求深度了。 我们发
阅读全文

浙公网安备 33010602011771号