自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 松鼠的新家(树上点差分 + LCA)

题目:松鼠的新家是一棵树,前几天刚刚装修好了新家,新家有 个房间,并且有 根树枝连接,每个房间都可以相互到达,且任两个房间之间的路线都是唯一的。天哪,他居然真的住在「树」上。松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去 ,再去 ,……,最后到 ,来参观新家。可是这样会导致维尼重复走很多房间,懒惰的维尼不停地推辞。可是松鼠告诉他,每走到一个房间,他就可以从房间拿一块糖果吃。维尼是个馋家伙,立马就答应了。现在松鼠希望知道为了保证维尼有糖果吃,他需要在每一个房

2020-10-05 16:08:12 882 10

原创 初二20210529综合测试总结

#1:Absolute GameT1思路:一开始拿到这道题没有什么思路,大概算了算样例,想到一个用前缀和求出绝对值差的方案,结果。。。。正解:因为所有人足够聪明,又因为我们已经知道了“A”是先手,所以我们可以枚举A每次选择剩下的那个数kkk,那么B肯定会剩下一个与kkk绝对值差最小的数,所以直接枚举,时间复杂度O(n2)O(n^2)O(n2)#include <iostream>#include <cstdio>using namespace std;const i

2021-06-08 22:25:38 131

原创 二we线段树

题目链接:特别行动队题解:显然遇到这种DP题我们要先打暴力,通过读题我们可以快速推出DP式子:状态:设dp[i]dp[i]dp[i]为前i个人的最大价值状态转移方程:设(∑k=j+1ia[k])=X(\sum_{k = j + 1}^i a[k]) = X(∑k=j+1i​a[k])=Xdp[i]=max(dp[j]+a∗X2+b∗X+c)dp[i] = max(dp[j] + a * X^2 + b * X + c)dp[i]=max(dp[j]+a∗X2+b∗X+c)累加我们可以直接前缀

2021-02-10 22:02:26 335

原创 CF909C 【Python Indentation】

前言:这道题开始将题意看错了,将它打成了一道思维题,事后才发现这是一道DP。果然还是我太菜了题解:1.状态:dp[i][j]dp[i][j]dp[i][j]表示第iii行j个缩进的总方案数。2.状态转移:(1) 当前一行为fff这时由题意得这一行必须在上一行的基础上缩进一格(且只能为一格)所以dp[i][j]=dp[i−1][j−1];dp[i][j] = dp[i - 1][j - 1];dp[i][j]=dp[i−1][j−1];(2)当前一行为sss这时我们可以任意缩进,但是要注意

2020-12-29 16:45:08 212 1

原创 二维线段树单点修改区间查询四分法

#include <iostream>#include <cstdio>using namespace std;const int MAXN = 4100;int n, m;long long a[MAXN][MAXN];struct SegmentTree { int lx, ly, rx, ry; long long Sum;} Tree[2005 * 2005 * 16 + 5];void Build(int p, int lx, int ly

2020-11-30 14:06:03 211

原创 P1133 教主的花园

题目描述教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值。教主最喜欢333种树,这3种树的高度分别为10,20,3010,20,3010,20,30。教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高。输入输出格式接下来nnn行,每行333个不超过100001000010000的正整数ai,

2020-11-20 20:13:41 243 1

原创 P1594 护卫队

题目:题目坐标:护卫队.护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥。因为街道是一条单行道,所以任何车辆都不能超车。桥能承受一个给定的最大承载量。为了控制桥上的交通,桥两边各站一个指挥员。护卫车队被分成几个组,每组中的车辆都能同时通过该桥。当一组车队达到了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。每辆车的重量是已知的。任何一组车队的重量之和不能超过桥的最大承重量。被分在同一组的每一辆车都以其最快的速度通过该桥。一组车队通过该桥的时间是用该车队中速度

2020-11-19 21:24:41 156

原创 CSP-J复赛游记+题解

T1:真的有手就行,随便做一做就能过,其他人的方法应该比我的妙多了,但是我这里还是粘一下我的伪打表代码:#include <iostream>#include <cstdio>using namespace std;const int MAXN = 1e7 + 5;int n, sum = 2, a[1005] = {0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 6

2020-11-13 21:09:42 243

原创 2020牛客NOIP赛前集训营-普及组(第二场)

T1:面试牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分。评分有 A B C D 四种。如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试。如果面试者没有一次被评为 D,并且有三个或以上的 A,则会获得 special offer。其余情况会获得普通 offer。现在告诉你一些面试者的发挥,请你算一算,他们的面试结果分别是什么。输入描述:第一行输入一个 T,代表面试者的个数。接下来有 T 行,每行都有一个长度为 4 的字符串,每

2020-10-21 14:01:58 1777

原创 数论总结

整除:概念:设a, b为整数, 如果存在一个整数q,使得 a * q = b,则 b 能被 a 整除,记为a∣ba \mid ba∣b 。性质:传递性:如果a∣ba \mid ba∣b 且 b∣cb \mid cb∣c 则 a∣ca \mid ca∣c。a∣ba \mid ba∣b且a∣ca \mid ca∣c等价于对于任意的整数x,y,有a∣(bx+by)a \mid (bx + by)a∣(bx+by)。设mmm不为0,则a∣ba \mid ba∣b等价于ma∣mbma \mid mbma∣

2020-10-17 11:07:53 243

原创 最短路模板

BellmanFord:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int MAXN = 1e5 + 5;int n, m, s, t, d[MAXN], pre[MAXN];struct node{ int u, v, d;}a[MAXN];void print(int x) {

2020-09-30 12:52:50 68

原创 纪念品(CSP-J)

题目:小伟突然获得一种超能力,他知道未来 T 天 N 种纪念品每天的价格。某个纪念品 的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。每天,小伟可以进行以下两种交易无限次:任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;卖出持有的任意一个纪念品,以当日价格换回金币。每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。T 天之后,小伟的超能力消失。因此他一定会在第 T 天卖出所有纪念品换回金币

2020-09-23 13:39:18 374

原创 ST算法(倍增)

作用:ST算法是用来对任意一个数组,求其任以(l~r)区间内的最大值(最小值也可以)。引出:首先遇到这一类题,我们可以暴力查找,但是这种方法如果询问多次,直接让您原地起飞,显然我们机智的前人是不能忍的,于是牛逼的ST算法出现了。...

2020-08-24 18:33:14 895 1

原创 单词游戏题解

题目:来自 ICPC CERC 1999/2000,有改动。有NNN个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。如果能,请给出一个合适的顺序。输入:多组数据。第一行给出数据组数TTT ,每组数据第一行给出盘子数量NNN ,接下去NNN 行给出小写字母字符串,一种字符串可能出现多次。输出:若存在一组合法解输出Ordering is po

2020-08-20 18:40:43 1456 1

原创 木棒题解

题目:乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式:输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式:为每组数据,分别输出原始木棒的

2020-08-17 21:09:56 2189 5

原创 老旧的桥题解

题目:现在有NNN个岛屿和M坐桥。第iii个桥双向连接着第AAAi和第BBBi个岛屿。刚开始的时候,我们可以用其中的一些桥在任何两个岛之间旅行。然而,经调查显示,这些桥都将会因老旧而倒塌,而且倒塌的顺序为从第1座桥到第M坐桥。由于剩下的桥不能够使第aaa个岛和第bbb个岛互相到达,这会使岛屿对变得很不方便。对于每一个,找出在第i(1<=i<=M)(1 <= i <= M)(1<=i<=M)座桥倒塌之后,这样不方便的岛屿对(a,b)(a<b)(a, b)(

2020-08-11 21:12:37 1189 4

原创 关押罪犯题解【并查集】

题目:S城现有两座监狱,一共关押着N名罪犯,编号分别为1 N1~N1 N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S城Z市长那里。公务繁忙的Z市长只会去看列

2020-08-10 20:35:46 545

原创 新的开始题解

题目:发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 口矿井,但他似乎忘记考虑的矿井供电问题……1.为了保证电力的供应,小 FF 想到了两种办法:2.在这一口矿井上建立一个发电站,费用为 vvv(发电站的输出功率可以供给任意多个矿井)。将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 ppp。小 FF 希望身为「NewBe_One」计划首席工程师的你帮他想出一个保证所有矿井电力供应的最小花费。输入:454430 2 2 22 0 3

2020-08-08 21:32:04 468

原创 最大回文串(palindrome.cpp)题解(回文串输出路径)施工中

题目:每次考试,奶牛都想作弊,而且他又找回了一些朋友,于是他就试一下作弊的滋味了。他是怎么作弊的呢?奶牛的朋友太强悍了,他生怕被老师发现,又害怕被其他同学偷去,于是他每次递给奶牛都是一段只含有a,b,c,da, b, c, da,b,c,d的字符串,那么答案是什么呢?“答案就是该字符串内最长的回文串。”哈哈哈,奶牛瞬间就发现了这个秘密,可是,奶牛的朋友是个**狂,他每次递给奶牛的都是一些非常长的字符串,奶牛在短时间内没发找到答案,所以奶牛又找到了你,帮他找出字符串内最大的回文串。回文串: 从左往右写和从

2020-08-03 09:56:39 243

原创 最短路计数题解(图论版题)

题目:给出一个NNN个顶点MMM条边的无向无权图,顶点编号为111~NNN 。问从顶点111开始,到其他每个点的最短路有几条。题解:用一个b数组来存路径,如果遇到可以从某点经过k(中转点)点到终点,且最短路与此时相同,那么路径数为:路径数 = 起点最短路径数 + 终点最短路径数 + 1如果遇到更短的最短路,那么路径为:路径数 = 起点最短路径数初值:起点步数置为1局部代码:int Dijkstra(int s, int t) { qu.push(edge(s, 0)); dj[s] =

2020-08-01 07:14:20 210

原创 Sightseeing Trip题解(图论)

题目给定一张无向图,求图中一个至少包含333个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。在本题中,你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。若无解,输出 No solution.图的节点数不超过100100100 。输入格式第一行两个正整数n,mn,mn,m表示点数和边数。接下来mmm行,每行三个正整数 x,y,zx, y, zx,y,z,表示节点x,yx, yx,y之间有一条长度为zzz的边。输出格式输出一个最小环的方案:按环上顺序

2020-07-30 19:00:50 505 1

原创 「JXOI2017」加法题解

题解:主要思路:(1)首先要想到贪心,若想要满足最小数最大,那么我们尽量选区间长度长的修改方法修改,这样同是加a,但是长度长的加的更多,明显比较优越。(2)如何找到最大区间,我们可以在输入后对其左端点排序,令最小的左端点排在前面,然后要用时再依次插入优先队列,而优先队列即是要用来将区间的排在第一位(因为已经满足了左端点最小,右端点尽量大,那么区间也是最大,最划算的)(3)我们可以二分枚举最小的最大值,然后再从1——n循环,如果a[i]还小于mid,就说明还未到最大,可以继续修改区间使其最大,如果大于

2020-07-27 23:48:06 355 5

原创 一.二维 单点修改,区间查询【最好学完树状数组的基本操作再来】

一维:题意:1 i x表示i位置+x, 2 i j表示i——j的所有数之和。题解:这是一道灰常简单的模拟题,首先将原数组改为树状数组,写好模板代码,碰到一个直接输处即可,注意输出i——j为闭区间,所以答案应为sum(i) - sum(j - 1),此处sum是前缀和。代码:#include <iostream>#include <cstdio>using namespace std;int n, a[1000005], s, l, r, ww;long long

2020-07-26 23:26:31 177

原创 数三角题解【noip难题】

1.题目:这是一个数三角的游戏。长度为1或SQRT(2)的小木棍放在一个网格上。如图所示,有水平的,垂直的或对角的。对角放置的木棍可以交叉。将木棍随意地放在网格上得到的图案可能不含三角形,也可能含一个或多个三角形。如下图所示,(a),(b),©,(d)和(e)分别含有2,5,12,0,0个三角形。你的任务是写一个程序数出一个图案中的三角形个数。。cpp输入文件count.in包括N+1行:先输入图案中木棍的个数N。下面输入这N根木棍的位置,用两个网格坐标表示,这两个坐标分别为木棍两端的位置。网

2020-07-25 23:42:45 353

原创 括号涂色题解(区间DP)

题目:Petya遇到了一个关于括号序列的问题: 给定一个字符串S,它代表着正确的括号序列,即(“(”)与 (“)”)是匹配的。例如:“(())()” 和 “()”是正确的,“)()”与“(()”则不是正确的。 在正确的括号序列中,一个左边的括号一定是匹配一个右边的括号(反之亦然)。例如,在下图中,第 3 个括号匹配第 6 个括号,第 4 个括号匹配第 5 个括号。现在你需要对一个正确的括号序列做涂色操作,严格满足以下三个条件:1、每个括号要么不涂色,要么涂红色,要么涂蓝色。2、一对匹配的括号需要且

2020-07-19 23:38:34 323

原创 分离与合体题解(区间DP)

题目:经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发生分离,从而分离为两个小L

2020-07-19 21:03:49 220

原创 能量项链【题解】(区间DP)

思路:其实这应该是“石子合并2”的升级版,首先我们要按照题目的说法,把n个数变为(N1,N2)(N2,N3)(N3, N4)(N4, N5)…(Nn, N1)。这里推荐读者用结构体来保存每一组的数,之后简单分析一下题目,这题应该是可以环状相加的,所以再用二倍链的方式解决。状态:dp[i][j]表示合并i——j的最大开销转移方程:(i为左端点)dp[i][r] = max(dp[i][r], dp[i][k] + dp[k + 1][r] + b[i].x * b[k].y * b[r].y);

2020-07-18 23:41:36 132

原创 倍增初学有感

1.总概:倍增是指当普通的线性枚举无法满足时间与空间要求,我们可以利用任意整数都可以表达成2的次幂项的和这样的特性,从而只去枚举2的整数次幂上的和作为代表,其他的用代表值拼出即可。总的来说就是类似于二分的优化算法。2.题目:给定一个长度为 N 的数列 A ,然后进行若干次查询 , 每一次给定一个整数 T , 求出最大的 k , 满足 且算法必须是在线的(每给一次询问,就给出结果) ;思路:1.朴素算法从前往后依次找,时间为O(n)2.二分:定义一个s数组为a数组的前缀和数组,对k进行二分

2020-07-14 09:47:27 136

原创 复习题解集——老鼠与猫的交易

题目:有一只老鼠很喜欢奶酪,但是奶酪被分别放在N个房间里,而且这些房间都有一只猫咪看守,现在它准备和猫咪们做个交易。它有M磅的猫食,想用这M磅猫食换取奶酪。在猫咪看守的每一个房间里有奶酪J[i]磅,同时猫咪需要F[i]磅的食物,如果老鼠给猫咪Fi%的猫食,那么它就可以得到Ji%的奶酪。现在已知每只猫咪对猫食的需求量和每个房间的奶酪数,那老鼠怎样才能换得最多的奶酪呢?题解:入门水题,用性价比排序即可(a[i] / b[i]),基本读懂题就没问题了吧。。。。代码:#include <iostre

2020-07-11 18:38:36 354

原创 复习题解集——火柴排队

题目:涵涵有两盒火柴,每盒装有n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 99,999,997 取模的结果。输入:42 3 1 43 2

2020-07-11 11:36:36 161

原创 扩散题解

1.【题目描述】:一个点每过一个单位时间就会向四个方向扩散一个距离,如图。两个点a、b连通,记作e(a,b),当且仅当a、b的扩散区域有公共部分。连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。给定平面上的n给点,问最早什么时刻它们形成一个连通块。【输入】第一行一个数n,以下n行,每行一个点坐标。【输出】一个数,表示最早的时刻所有点形成连通块。【输入样例】20 05 5【输出样例】52.解析:首先我们要明白此点距离与时间的

2020-07-10 10:56:33 643 1

原创 棋子移动题解

1.棋子移动:魔法世界的历史上曾经出现过一位赫赫有名的不败战神陈庆之,陈庆之以棋道悟兵法,一生身经数百战,没有一场败绩,而且没有一场不是在绝对的劣势中大胜敌军。受此影响,魔法世界开始流行一种叫棋子移动的游戏,即有2N个棋子(N≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,例如当N=4时,棋子排列情况为:〇〇〇〇●●●●移动棋子的规则是:每次必须同时移动相邻两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置.每次移动必须跳过若干个棋子(不能平移),要求

2020-07-01 13:39:17 2545 1

原创 最多能完成排序的块题解

1.题目:题目描述:数组arr是[0, 1, …, n - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?输入:55 4 3 2 1输出:12.分析:这是一道神奇的贪心题,首先你要理解题目,题目要让你将这些数分成几块,比如【5,4】【3,2,1】然后你要保证对每个块中的数排序,最后可重组为排序后的原序列,最后让其块数最大。最后的贪心思路, 找到前i个数的最大值,然后和现在的真确序

2020-07-01 13:32:29 151

原创 绝世好题题解

我太难了:今天gm讲了“绝世好题”。但神奇的事发生了,我的代码是按照郭老师的想法打的但是没A,最后发现错在了一个很珂学的地方。1.状态:dp[i][j]表示以第i个数结尾,在第i个数二进制表示下的第j位,的最长长度(好绕啊!!!)2.状态转移方程:1):ansx表示此时以第i个数结尾的最长长度2):ansx = max(ansx, dp[j] + 1);//此时j一定要满足x & (1 << j)其意义为第i个数第j位为1。3.原理:因为题目要求是让相邻的数 ‘&

2020-06-24 13:09:31 325 2

原创 石子合并题解1

分析:首先我们可以发现这跟以往的线性DP不同,从每一步的点到点成了两条线的转移,所以在与以往的思考上有很大不同,首先若i,j两堆可以合并那么i~j之间的所有石子都以合并,即i,j合并与i至k,和k+1至i有关。状态:dp[i][j]表示左端点为i,右端点为j的区间合并花费最小值。状态转移方程:dp[r][j] = min(dp[r][j], dp[r][k] + dp[k + 1][j]) + r~j石子合并花费实现:首先一个循环枚举长度,在一个枚举右端点,左端点 = 长度 + 右端点 - 1

2020-06-23 22:27:48 164

原创 猫狗大战题解

分析:不难想到这是一道01背包,首先我们假设背包体积为最佳血量(即是血量和 / 2),然后物品体积是猫猫的血量,由此我们的任务变成了从最多n / 2 + 1个物品中选出n个使得体积最接近总容量。需要一提的是一般遇到品均值这种题都要把最佳状态想成体积,然后不断尝试放入物品塞满背包从而达到最佳状态。状态:dp[j][k]表示现可放j个物品,有k那么大的体积,求第i个物品能否放入转移方程:if(dp[j][k]) { dp[j + 1][k + a[i].v] = 1;//若成立即可放入第i个物品}

2020-06-21 22:27:31 357

原创 骨王题解

状态:dp[j][k]表示前i个数,放入体积为j的背包内,可以拼成的第k大体积状态转移方程:dp[j][1…k] = (dp[j][1…k], dp[j - b[i]][1…k] + a[i])。主体代码:for(int i = 1;i <= n;i ++) { for(int j = v;j >= b[i];j --){ for(int s = 1;s <= k; s++){ qu[s] = dp[j - b[i]][s] + a[i];//qu数组存的是取这个物品的k

2020-06-20 21:10:01 169

原创 挂饰题解

题目:OI君有N个装在手机上的挂饰,编号为1…N。 JOI君可以将其中的一些装在手机上。JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的。分析:1.状态:dp[i][j

2020-06-20 21:03:38 314

原创 种树的艺术题解

种树的艺术题解分析:1.状态:通过读题我们不难得出状态:dp[i][j][k]表示i个树左边看有j个右边看有k个(我也只想出了这个)2.状态转移方程:假设把最小的一个树(应为假设最小的一棵树方便分析,若假设其他的会有奇奇怪怪的事情)放在最左边则是前i - 1棵树左边看到j - 1右边看到k棵的方案同理若放在最右边则是前i - 1棵树左边看到j右边看到k - 1棵的方案最后若放在中间则可以随便放所以是dp[i - 1][j - 1][k] * (i - 2)3.代码:#include &lt

2020-06-19 20:38:20 196

空空如也

空空如也

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

TA关注的人

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