摘要: 题目链接 对于基本区间dp,设dp[l][r]是区间l到r的最大价值。 我们可以枚举区间的长度,在枚举左端点,判断即可。 当右端点大于n,就break。 dp[l][r]=max(dp[l+1][r]+v[l]*(n-i+1),dp[l][r-1]+v[r]*(n-i+1)) 别忘了初始化,dp[i 阅读全文
posted @ 2019-07-07 15:58 Refined_heart 阅读(179) 评论(0) 推荐(1) 编辑
摘要: 区间dp模板题 题目链接 题目要求一个环中的最小价值和最大价值(如题)。 首先,我们段环成链,即开两倍的空间,i与i+n对应。 用前缀和预处理出任意区间中的和。 接下来,我们枚举段环的位置。 设dp[i][j]是i到j合并的最小价值。 显然我们可以枚举k作为段环的点,方程即为: dp[i][j]=m 阅读全文
posted @ 2019-07-07 15:41 Refined_heart 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.A+B problem(dp) 看成完全背包即可。先筛一遍素数,然后枚举素数个数,在枚举价值,dp即可。 代码: 【openjudge9267】(dp求方案数) 我们设dp[i][0]是第i位不放的方案数,dp[i][1]是第i位放的方案数,则有: dp[i][0]=dp[i-1][0]+dp[ 阅读全文
posted @ 2019-07-06 17:31 Refined_heart 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目链接: 解: 题意就是让我们求每次以a[i]结尾的最长不降子序列的和。 那我们先预处理出来以每一个数结尾的最长不降子序列的长度,放在e[i]中,即以第i个数结尾。 用基础dp求出即可。 那么我们定义sum数组,表示以i结尾的最长不降子序列的和。 那么枚举i之前的数,有:当e[i]==e[j]+1 阅读全文
posted @ 2019-07-05 21:48 Refined_heart 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 序列双段最大子段和问题 (也许很水但蒟蒻刚刚学dp就来记录一下) 题目链接 题意就是求序列中的任意两段的最大子段和最大。 我们先预处理出来前缀和,方便求最大子段和。 对于每一个i都求一遍1到i的最大子段和,即: 其中,a数组是前缀和,直接处理的。 那么,我们再对n到1的每一个i求一遍最大子段和,即: 阅读全文
posted @ 2019-07-05 09:36 Refined_heart 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 背包也好久,没看了……看了一道比较难的背包,再去做些简单的熟悉一遍 题目连接 解: 先来看看题目中出现的条件:时间,生命,高度。 对于每个垃圾落下来的时间,首先来一波排序。以下落时间升序排序。 怎样设计状态? 将垃圾看做物品,生命值看做价值,增加的高度看做体积。总高度即为背包容量。 那么:设dp[i 阅读全文
posted @ 2019-07-05 07:57 Refined_heart 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 继续练习dp,本文讲解nlogn算法 导弹拦截 解: 题意就是让我们求一个最长不下降子序列和一个最长上升子序列的长度 STL还是比较方便的,大致介绍一下upper_bound和lower_bound的用法 对于lower_bound,它是返回数组中第一个大于等于x的数,并返回指针。 对于upper_ 阅读全文
posted @ 2019-07-04 11:00 Refined_heart 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 暑假终于要到了,虽然成绩炸掉了,但是学oi还是得继续呀…… 题目:尼克的任务 解: 对于本题,又是一道经典的线性dp问题。首先考虑设计状态: 设dp[i]是i到n时间中休息时间最长的时间,则最后答案就是dp[1] 对于此状态,我们有: 1.当此时没有任务,则dp[i]=dp[i+1]+1,即上一时刻 阅读全文
posted @ 2019-07-04 10:32 Refined_heart 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 期末考试结束了,来写写blog吧 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双 阅读全文
posted @ 2019-07-03 19:38 Refined_heart 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 最近随洛谷日报看了一下Trie树,来写一篇学习笔记。 Trie树:支持字符串前缀查询等(目前我就学了这些qwq) 一般题型就是给定一个模式串,几个文本串,询问能够匹配前缀的文本串数量。 首先,来定义下Trie树:其根节点为空,定义如下数组: 下面给出插入代码: 那么,如果我们要查询已知串中有没有当前 阅读全文
posted @ 2019-06-15 16:18 Refined_heart 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 线性基通常用于解决一系列关于异或的问题。 定义:线性基支持log插入,用一个数组来存储线性基,其中,第i个线性基就是第i位是1的数。 由此,给出插入线性基的板子。 其中,(x&(1<<i))是用来取出x的第i位的。 如果是0,则跳出,匹配失败。如果是1,则继续匹配。 记住要有break。 由此,可以 阅读全文
posted @ 2019-06-15 14:48 Refined_heart 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 1.世界气候: 热带草原气候,热带雨林气候,热带沙漠气候,热带草原气候 温带季风气候,温带大陆性气候,亚热带季风和湿润性气候,温带海洋性气候 寒带气候,高原山地气候。 2.亚洲气候: 1.大陆性气候分布广。2.季风气候显著。3.气候复杂多样。 缺少的两种气候:热带草原气候和温带海洋性气候。 3.对于 阅读全文
posted @ 2019-06-09 18:49 Refined_heart 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给出N个点的一棵树(N-1条边),节点有白有黑,初始全为白 有两种操作: 0 i : 改变某点的颜色(原来是黑的变白,原来是白的变黑) 1 v : 询问1到v的路径上的第一个黑点,若无,输出-1 输入输出格式 输入格式: 第一行 N,Q,表示N个点和Q个操作 第二行到第N行N-1条无向边 阅读全文
posted @ 2019-06-09 11:46 Refined_heart 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 浅谈一下对于这题做完之后的感受(不看题解也是敲不出来啊qwq……) 题意翻译 Farmer John注意到他的奶牛们如果被关得太紧就容易吵架,所以他想开放一些新的牛棚来分散她们。 每当FJ建造一个新牛棚的时候,他会将这个牛棚用至多一条双向道路与一个现有的牛棚连接起来。为了确保他的奶牛们足够分散,他有 阅读全文
posted @ 2019-06-09 11:33 Refined_heart 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 刚刚学了学LCT维护子树信息,FlshHu大佬太强了%%% 题目描述 小强要在NN个孤立的星球上建立起一套通信系统。这套通信系统就是连接NN个点的一个树。 这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够 联通的树上路过它的简单路径的数量。 例如,在上图中,现在一共有了5 阅读全文
posted @ 2019-06-07 22:56 Refined_heart 阅读(147) 评论(0) 推荐(0) 编辑
摘要: LCT学习ing……从FlshHu的大佬的博客中看到此题,于是便写了一下。 题目背景 在一个叫做Travian的世界里,生活着各个大大小小的部落。其中最为强大的是罗马、高卢和日耳曼。他们之间为了争夺资源和土地,进行了无数次的战斗。期间诞生了众多家喻户晓的英雄人物,也留下了许多可歌可泣的动人故事。 其 阅读全文
posted @ 2019-06-07 20:59 Refined_heart 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 此题我就用刚刚学过的LCT解吧…… 颓废了好几天终于学了一个数据结构,还不精通qwq……不看题解我还是挂啊…… 废话不多说,讲题。 题目描述 输入输出格式 解: 既然用LCT做,那就分析一下思路。 题目中求颜色数,那就先考虑维护什么吧。 一个点,需要维护它的父亲,它的儿子,它本身的颜色,它左孩子的颜 阅读全文
posted @ 2019-06-04 19:13 Refined_heart 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 今天来说一下线段树套Splay。顺便我也来重新敲一遍模板。 首先,明确一下Splay套线段树用来处理什么问题。它可以支持:插入x,删除x,单点修改,查询x在区间[l,r]的排名,查询区间[l,r]中排名为k的数,以及一个数在区间[l,r]中的前驱,后继。(应该还可以查询区间和等东西,还没写过) 其实 阅读全文
posted @ 2019-05-26 18:48 Refined_heart 阅读(376) 评论(2) 推荐(0) 编辑
摘要: Splay是众多平衡树之一,它的功能十分强大,但常数极大。在LCT和许多数据结构中都能用到。 Splay的核心操作,就是rotate。为了使树不是一条链,而是平衡的,我们需要旋转来维护形态。理论很简单,下面来看一下如何实现。 图片转自洛谷 我们注意到,旋转之后,这棵树依然保持着正常的大小关系。 来尝 阅读全文
posted @ 2019-05-24 22:44 Refined_heart 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目背景 数据规模和spoj上有所不同 题目描述 给定一棵n个节点的树,有两个操作: CHANGE i ti 把第i条边的边权变成ti QUERY a b 输出从a到b的路径中最大的边权,当a=b的时候,输出0 CHANGE i ti 把第i条边的边权变成ti QUERY a b 输出从a到b的路径 阅读全文
posted @ 2019-05-02 07:44 Refined_heart 阅读(326) 评论(0) 推荐(0) 编辑