01 2020 档案

摘要:链接:Miku 这道题的dp还是先更新子节点,在更新父节点,不过问题就是怎样更新他们 我们定义ff[i][j]为第i个节点字数上共保留j条边的情况下最多的苹果数,对于每一个点,他保留的边必然是他直接保留的之前保留的边和他当前儿子保留的边的值的和加上这一条边的 边权,即ff[u][i]=max(ff[ 阅读全文
posted @ 2020-01-20 22:18 Simex 阅读(144) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 此文不是正解,而且主要内容都在代码和注释上 这是暴力分组背包做法 对于每一个主件及其附件,我们的选择是有限的,而且这道题中说了最多两个附件,那么 我们完全可以枚举每一种组合,然后组合成一件新的物品,并且属于同一个集合,然后对处理后的新物品们 跑分组背包就行了 #include<ios 阅读全文
posted @ 2020-01-20 21:59 Simex 阅读(110) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 分组背包,我们只需要在01背包的基础上稍加修改,把同一类的物品同时枚举即可。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,m; 阅读全文
posted @ 2020-01-20 21:41 Simex 阅读(184) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 很入门的树形dp,首先,在这个题中,我们要做的就是求出来每一个子节点,然后用他们去更新父亲节点。 对于每一个节点,他有两种状态,去,或者不去,我们定义dp[i][0]为第i个节点也去的状态,而dp[i][1]为它不去,那么很显然 如果这个点去了,它的子节点肯定不去,那么dp[i][1 阅读全文
posted @ 2020-01-20 21:34 Simex 阅读(138) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这是一道dp题,我么很容易发现这点。 数据范围很大,如果直接用两个塔的高度当状态,很危险,我们就必须要考虑一下优化了。 两个塔的高度其实是没有没要的,我们追求的是差值,那么,比如6 8 和7 9,很明显,无论我们怎么放,第二个就是第一个加1,无论如何。 那么我们没必要存第一个状态的, 阅读全文
posted @ 2020-01-20 12:44 Simex 阅读(160) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 差分约束的可以算是例题吧,这道题我们要建立的约束系统是前缀和,毕竟要求的就是区间的和的最少的 最后,用前缀和求出总区间和就行了 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #inc 阅读全文
posted @ 2020-01-19 23:19 Simex 阅读(147) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这道题本质上还是一个spfa板子,考虑一下题目的条件,到达一个城市后,肯定会赚到d的钱,那么我们把这个钱视为在路上赚的,然后到达一个城市 立即去下一个城市,其实是等价的,我们就把边权转换成了点权。 再考虑一下飞机,能赚的钱减去机票钱既可以了,是个负数?题目说了可以赊账。 一直赚钱?这 阅读全文
posted @ 2020-01-19 21:50 Simex 阅读(159) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这道题本质上还是个st表,只要两个st表,然后对于每一个点,查询他开始的 长度为m的去年的最大值,最小值之差就可以了。 然而这个题还有个坑点,太大了,直接写会MLE,我们重新读一下题,题目说了区间是M。 那我们最多开到log2(m)就可以了,再大也用不到啊(这个小优化让它变成了绿题) 阅读全文
posted @ 2020-01-19 13:09 Simex 阅读(164) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这一道题只需要在倍增lca的板子上改一改就可以了。 宽度和深度可以在倍增lca的dfs预处理的时候判断一下就可以,至于最后问的两点之间的距离 首先需要求出两点公共祖先的位置,然后计算他们深度的差,并且按照题目要求分别处理即可 #include<iostream> #include<c 阅读全文
posted @ 2020-01-19 00:06 Simex 阅读(179) 评论(0) 推荐(0) 编辑
摘要:链接:Miku RMQ典型题 这道题询问最大值和最小值之差,那么我们知道最大值,最小值不就行了? 一个可以用st表,两个?两个st表。 #include<iostream> #include<cmath> #include<cstdio> using namespace std; int st[10 阅读全文
posted @ 2020-01-18 21:59 Simex 阅读(113) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 单调栈模板终于不是一堆蓝题了!!!!!!!!!!!! 单调栈,就是单调的栈,栈内元素都是单调的。 题目要求我们求出来第一个比i大的元素的下标,那么我们就可以用一个递减单调栈解决。 每一个元素入栈时,和栈顶比较一下,如果比他大,那他一定是第一个比它大的。所以说记录弹出就行。 重复这个过 阅读全文
posted @ 2020-01-18 21:56 Simex 阅读(299) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这是一道水贪心,很容易想到做法就是把最贵的两个放在一块,让后当成一个重新放回队列 #include<iostream> #include<algorithm> #include<cstdio> #include<queue> using namespace std; priority 阅读全文
posted @ 2020-01-18 21:50 Simex 阅读(119) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这是一道二分答案的题,我们要二分时间。 对于每件衣服,我们自然是能让它自己蒸发就自己蒸发,这样才是最优的。 那么我闷可以把每一件衣服减去自己蒸发的后,剩下的用洗衣机蒸发。 不过坑点是,你可能减出来个负数 奶牛为什么要穿衣服 #include<iostream> using names 阅读全文
posted @ 2020-01-17 22:25 Simex 阅读(88) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 这是一道01背包+二分 二分的部分很普通,至于check函数,也不过是忽略掉了所以比接口还大的物品而已 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace 阅读全文
posted @ 2020-01-17 12:34 Simex 阅读(115) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 一道很贴切的题目 这道题可以用各种修改后的图论算法等,不过单单是二分答案也是可以解决的。 检查一下对于每一个最大值,不走所有比此值大的路,看一下能不能走到终点即可 #include<iostream> #include<cstdio> #include<cstring> using 阅读全文
posted @ 2020-01-17 12:32 Simex 阅读(150) 评论(0) 推荐(0) 编辑
摘要:链接:Miku 一道很好的bfs,dfs混合练手题 这一道题看第一眼:愚蠢的bfs求最短路,有什么难的! 然后看见了一堆附加条件: 1 路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 在满足条件11的情况下使路径最短 Ac 等等,与终点联通?难道我们要把每一个点dfs能不能行吗? 然而你 阅读全文
posted @ 2020-01-17 08:39 Simex 阅读(113) 评论(0) 推荐(0) 编辑
摘要:长时间不写代码了,从学校中抽身出来真的不容易啊 链接:Miku 这道题的思路就在于建反图,如果每一头牛都能到达的话,那么在反图上,这个点也一定能到达每一头牛。 那么我们的目的就明确了,找到所有能在反图上找到每一头牛的点。 #include<iostream> #include<cstdio> #in 阅读全文
posted @ 2020-01-16 22:43 Simex 阅读(128) 评论(0) 推荐(0) 编辑
摘要:csp-s 突破 1-15 下午才走,这实在是太恶心了。然而因为感冒,当众大佬们都在上学的时候,我在家里睡觉。 2:00左右,登上了车 我,yyq,lmk,ljx,lpy和xhy一车,在路上,自然是不忍寂寞的,于是我们就愉快的玩到了青岛海洋大学学术交流中心。 、然而,到了之后才发现,只剩下最后两个三 阅读全文
posted @ 2020-01-16 22:34 Simex 阅读(156) 评论(1) 推荐(0) 编辑
摘要:链接:Miku 发现大家基本上都是令 > dp[ i ] [ j ] 为用前 i 种花,摆 j 盆的总方案数 然而本蒟蒻乱搞一通,搞出来了这个东西 >dp[ i ] [ j ] 为在第i个位置摆第j种花的总方案书 这样答案就是 dp[m][1-n]的和了 1 #include<iostream> 2 阅读全文
posted @ 2020-01-11 15:42 Simex 阅读(182) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示