
算法
hey_sml
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 1009 (Div. 3)-G
转移:枚举的区间长度<3明显不用考虑,长度==3则只能构成一个三角形,答案就是三个点权值的乘积,len>3,考虑枚举的俩个端点,是否要构成一个三角形,如果不构成,则答案可以从dp[i][k]+dp[k+1][j]转移过来(k是区间i-j中的某个点),构成的话,则是可以从dp[i+1][k-1]+dp[k+1][j]+a[i]*a[k]*a[j]转移过来,(因为不能有共享边),然后注意一下边界情况即可。思路:考虑区间dp[i][j],处理完i-j区间的划分最大值。题类似,只不过这次划分的三角形不能有共享边。原创 2025-03-16 12:09:14 · 182 阅读 · 0 评论 -
[NOIP2007]矩阵取数游戏
题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;2.每次取走的各个元素只能是该元素所在行的行首或行尾;3.每次取数都有一个得分值,为每行取数的得分之和,,其中i表示第i次取数(从1开始编号);4.游戏结束总得分为m次取数得分之和。帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。示例1。原创 2025-01-23 23:27:43 · 473 阅读 · 0 评论 -
区间dp-wyh的问题
思路:dp[i][j]0/1]区间i-j里面的灯都关完,最后停留在i/j的最小花费。敲响警钟:数组非必要不要定义在循环里面!(真的很耗时间,头都t麻了)原创 2025-01-22 21:30:53 · 233 阅读 · 0 评论 -
合并回文子串
思路:区间dp,dp[i][j][k][s]表示仅考虑a字符串的i-j区间,b字符串的k-s区间的构成回文串的合法性。(注意:不能首首转移,不然这样就不能保证字符串顺序,java开四维的Int数组真的比boolean数组慢很多,用Int数组会爆时间)原创 2025-01-20 22:37:23 · 148 阅读 · 0 评论 -
动态规划-队伍配置
队伍配置里,可供玩家选择的作战人物被称作“从者”,玩家可以对每个“从者”可以装备至多1件的“概念礼装”,玩家具有一个cost上限值。转移:先预处理出选0个礼装的dp值,然后再枚举选了几个礼装(这分开来转移我是真没想到),实现的细节看注释。现在给出玩家仓库的每个从者和每件概念礼装的ATK值和cost值,问在满足定义的条件下,队伍可以凑出的。思路:dp[i][j][k]花费i,恰好选j个从者,恰好k个礼装的最大atk值。5、 选择的从者和概念礼装的cost值之和不能超过玩家的cost上限值。原创 2025-01-18 23:41:13 · 266 阅读 · 0 评论 -
JAVA实现C++ next_permutation底层代码
贪心:如果该序列本来就是降序的,即字典序最大,那就是无解了,如果不是降序的,那么必然存在一个下标 i ,i 后面存在一个下标 j ,使得 j 下标元素大于 i 下标元素,如果我们将其交换,就能得到一个字典序比较大的,但是我们要返回的是当前序列的下一个,即操作的次数要尽可能多的好,我们可以从后往前找到一个符合要求的i,然后找到后面第一个符合要求的j,然后交换,最后,对 i+1 及其后面的元素进行一个升序处理,这样就能保证字典序比之前的序列要大,而且使得后面能操作的次数尽可能的多(即不重不漏)。原创 2024-12-07 12:45:39 · 132 阅读 · 0 评论 -
P4092 [HEOI2016/TJOI2016] 树
思路:离线做法,并查集(弱弱我一开始想到了用并查集,但是不知道怎么在线处理,后来看了题解之后恍然大悟捏)原创 2023-10-22 14:59:56 · 87 阅读 · 1 评论 -
重链剖分模板
重链剖分模板原创 2023-10-11 09:38:59 · 223 阅读 · 1 评论