自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yucohny

aim at Microsoft

  • 博客(15)
  • 收藏
  • 关注

原创 BZOJ P4551 LOJ P2054 [TJOI2016][HEOI2016] 树【并查集】

题目分析: 总之这是一道很水的题,没有多么难,也就是普通的逆向思维一发就好了。 首先这道题是很显然的一道并查集可做的题(据说可以用一些高级的数据结构),我们正向考虑每个点所在的集合(F[])所代表的含义,很显然的一个想法就是每个点所在的集合的关键字都是它最近的打了标记的祖先,但是这样设定集合含义的话是有问题的,因为当我们对一个添加标记的时候,有可能会导致以这个点为根节点的所有...

2018-06-22 17:57:41 187

原创 BZOJ「POI2007」堆积木Klo【动态规划】【树状数组优化DP】

题目分析: 这道题还是很容易想到暴力的DP状态与转移: DP[I]表示第I个在自己位置上时的最大值,显然: DP[I]=max{DP[J]}+1,其中: 1)J<I 2)Num[J]<Num[I] 3)J-Num[J]<=I-Num[I] 所以现在来考虑一下优化: 不难发现,我们通过2)3)可以推导出1),所以我们不妨以2)3)为关键字进行排序,排完序后...

2018-06-21 18:33:08 319

原创 BZOJ P3910 火车【LCA】【并查集】

题目分析: 我也不知道为什么要写这篇题解(明明就是水题)。 每次找两个点的LCA算距离,先判断两个点之前是否已经经过了,如果经过了的话就不考虑这两个点,不然就算距离,然后用并查集标记这两个点之间的所有的点即可。 参考代码: #include <cmath> #include <cstdio&

2018-06-20 19:06:37 244

原创 BZOJ P3398 牡牛和牝牛【递推】【前缀和优化】【挖坑】

题目分析: 这仍然是一道十分简单的前缀和优化递推的题。 设定状态: F[I]表示在I号位置安放的是牡牛的方案数 这么推: F[I]=sigma(F[J]) 1<=J<=I-K-1 F[I]=F[1]+F[2]+...+F[I-K-1] 前缀和优化就好了,稍微注意一下初始化就行。 参考代码: #include &l

2018-06-18 13:39:23 262

原创 BZOJ P2697 特技飞行【贪心】

题目分析: 这是一道超级水超级水的题,显然每个动作只需要做两次就可以了,因为一旦中间又做了一次会导致最后的结果不是最优的情况。 所以我们只需要将所有动作的刺激程度拿来排序,按照从大到小放在两边即可。 参考代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostr

2018-06-18 13:32:50 158

原创 BZOJ P1600 建造栅栏【前缀和优化】【递推】

题目分析: 这是一道前缀和优化DP?其实这道题并不是DP,只是前缀和优化递推。 这样定状态: F[I][J]表示切下了I块木板,此时切下的总长度为J。 有一个很显然的结论:任意一条边的长度都不超过四边形周长的一半。由于这个结论过于简单,就不证明。 于是我们就可以得到下面的一个状态转移了(): Length为周长的一半 F[I][J]=sigmaF[I][J-K],1<=K<...

2018-06-18 10:59:36 301

原创 BZOJ P4472 salesman【树形DP】【挖坑】

题目分析: 这道题一共两个问题,第一个问题求最大收益直接用树形DP求解即可,第二个问题想了很久还是无解,看了网上大神的题解仍然没有过多说明是如何判断多解的情况(也就是下面参考代码的G[]数组),想了很久也仍然没有特别理解,所以第二问先挖一个坑,来讲一讲第一个问的做法。 首先我们来考虑一下题目当中的限制次数都含义,我们会如何经过一个点呢?一个就是从父亲节点下来,还有就是从儿子节点上来,显然对于一...

2018-06-17 16:28:37 256

原创 BZOJ P4033 LOJ 2124 [HAOI2015] 树上染色【树形DP+背包】

题目分析: 树形DP(好吧这是废话)。我们按照树形DP的套路(啥?你不知道树形DP的套路?)很容易得出这道题的状态设定: DP[I][J]表示以I为根的子树当中涂了J个黑点的最大收益,J<=K 那么问题来了,我们应该如何进行状态转移,关键点在于应该如何处理状态转移时发生的收益变化? 让我们来考虑这样一个问题: 树上一条边X->Y,在X外(包括X点)一共有P个黑点,那么在Y...

2018-06-17 13:32:31 380

原创 【置顶】【Riypo_Yian】【博主介绍】

XZY大佬: http://www.k-xzy.xyz Zrj(Ruincrez)大佬: thezrj.com phantasmdragon大佬: http://phantasmdragon.leanote.com/ newuser大佬: www.newuser.top include(hdhd)大佬: https://blog.csdn.net/includelhc...

2018-06-16 23:42:59 496

原创 LOJ P507 「LibreOJ NOI Round #1」接竹竿【动态规划】

题目分析: 这仍然是一道显然的DP题。 首先由于取出一段区间的要求是这段区间的两个端点是一样的,所以我们可以考虑用类似于链式前向星的方法储存相同端点的到达。 由数据范围,考虑定一个一维的状态,一维的状态始终是十分好定的: DP[I]表示前I张扑克处理后能够得到的最大得分 接下来考虑一下转移: 对于第I张照片,有可以取出计分与不去出计分两种情况。 若第I张照片不取出计分,则DP[I]...

2018-06-15 01:01:59 645 1

原创 BZOJ P4659 和谐数【离散化树状数组】

题目分析: 这道题没啥好分析的,X表示Ai左边比它大的个数,Y表示Ai右边比它大的个数,我们将Ai离散化后,就只需要求出X,然后就能够推出Y然后进行比较了。 求X,也就是求一个序列中某个数的左边比它大的个数有多少个,树状数组直接水过去就可以了。 参考代码: #include <cmath> #include <cstdio> #include <cstri...

2018-06-14 23:33:10 161

原创 PKUSC2018数学试题题解(持续更新)

试题如下: 题解: 4.数学归纳法 (1)当n=1时,显然。 (2)假设当n=k时结论成立,则从其中第m个加油站出发,汽车可以绕长为S1的公路一周(环化直) 那么当n=k+1时,添加汽油,则公路也因此延长了S=S2-S1的长度,新的汽油刚好可供汽车行驶距离S, 不妨将第k+1个站放在原来第m个站的前面且与它的距离为S, 那么汽车从第k+1个站加油并出发,向第m个站开去,则刚好能...

2018-06-14 13:30:46 1254 2

原创 BZOJ P4636 蒟蒻的数列【线段树动态开点模板】

#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define DB

2018-06-12 19:14:10 270

原创 BZOJ P3712 Fiolki【详细题解】【LCA】

题目分析: 这道题其实一点都不难,也十分容易想到应该要用的数据结构:LCA。但是在我讲这道题的正解之前,我先讲一下我最开始仅用并查集的错误做法: 线内为错误做法: 我们将每个瓶子看作一个集合,里面的物质为其中的元素,这样我们就可以用并查集的Fa[]来处理集合。 Fa[I]表示I号物质在第Fa[I]号瓶子中 所以我们每次将一个瓶子倒进另一个瓶子的时候就变为了合并这两个集合: ...

2018-06-12 18:35:15 327

原创 BZOJ P2111 Perm 排列计数【详细题解】【递推】【组合数学】

题目分析: 其实并不是特别想要把这道题叫做DP,因为它更像一个简单的递推。 DP[I]表示I作更节点的时候的总方案数,我们考虑倒推,于是得到下面的状态转移(Size[I]表示子树I的大小): 由于P是质数,我们直接用Lucas处理组合数即可。 关键代码: for(I=N;I>=1;I--){ Size[I]=Size[I&lt

2018-06-07 21:40:15 382 1

空空如也

空空如也

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

TA关注的人

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