题目大意: 将n个数分为m段,每段权值为数值相同的数对数量。求最小权值和。 题目解法: 还是一道分治优化dp。分治优化的具体内容详见划分数组1的题解。这里直接考虑怎么算w(a,b)。 用数组cnt记录一个区间内各个数字出现的次数。显然如果我们知道了一个区间[a,b]的cnt和权值,我们就可以O(1) ...
分类:
编程语言 时间:
2020-05-23 00:32:24
阅读次数:
50
题目大意,给出n个人的分数,积分差为k为同一组,问不能在同一组最多有多少人。 想法,可以分成以0到k-1分组,每组的公差是k,算出每组可以保证不是积分差为k的最大人数,最后统计累加即是答案。 用cnt记录一个分数的人数,val记录在每一组的每一个分数的人数, dp[j]=max(dp[j-1],dp ...
分类:
其他好文 时间:
2020-05-23 00:08:42
阅读次数:
52
"题目链接" 题目大意 有N个学生合影,站成左对齐的k排,每行分别有N1,N2…NK个人,第一排站最后,第k排站之前。学生身高依次是1…N。在合影时候要求每一排从左到右递减,每一列从后面到前也递减,一共有多少总方案。 解题思路 考虑放最低的学生的情况,我们会发现,对于所有情况,最低的学生只能放在某一 ...
分类:
其他好文 时间:
2020-05-22 22:56:50
阅读次数:
99
题意:一个n*m的矩阵,每一个位置都有一定的高度,要求从(1,1)走到(n,m)并且每次移动只能向下或者向右移动,并且要求只能向比自己高度高1的位置移动。定义一个操作:执行一次可以使得任意一个格子的额高度减一,问从1,1到n,m操作的最少次数。 题解:首先一定会有一个格子的高度保持不变,设h(i,j ...
分类:
其他好文 时间:
2020-05-22 21:26:22
阅读次数:
64
题目大意是给三个字符串,问前两个字符串进行交错是否可以组成第三个字符串。我的思路就是用动态规划来做,用一个数组dp[i][j]表示匹配s3前i+1个字符时,用了j个s1的字符,s2可以推倒出来是用了i+1 j个字符,所以不用再开一维,两维就够了,第一次做多开了一维,时间和空间消耗都很大。更新dp数组 ...
分类:
其他好文 时间:
2020-05-22 19:29:17
阅读次数:
49
题意是两条路径一条左上角到右下角、一条从右下角到左上角,找权值最大的两条路径。每个点只能走一次。 问题转化为和P1004方格取数一样的情形,即两条不同的路径从左上角到右下角,并去掉重复加的点即可。 #include<bits/stdc++.h> using namespace std; const ...
分类:
其他好文 时间:
2020-05-22 14:25:38
阅读次数:
43
经典dp问题,dp[i][j][k][l],i、j代表第一个人的位置,k、l代表第二个人的位置,则列出dp方程,dp[i][j][k][l]=max(dp[i-1][j][k][l-1],dp[i-1][j][k-1][l],dp[i][j-1][k-1][l],dp[i][j-1][k][l-1] ...
分类:
其他好文 时间:
2020-05-22 13:00:30
阅读次数:
64
看到这题,我的第一反应是:这就是一个费用流模型?用模拟费用流的方法? 这应该是可以的,但是~~我忘记了怎么模拟费用流了~~IOI不可能考模拟费用流。于是我就想了另外一个方法。 首先我们考虑模拟费用流的模型如下图: 直接费用流复杂度比较大,我们把它换成一个dp。设$f_{i, j}$表示考虑了前$i$ ...
分类:
其他好文 时间:
2020-05-22 11:18:46
阅读次数:
56
题面:https://vjudge.net/problem/CodeForces-1288C 这道题其实比较难想,据说题解一种方法是组合方法(然而我不会),我来总结总结dp的方法吧。 首先我们采用一个dp数组,dp[i][j][k]:在生成的a,b字符串中,第k个的数字分别是i,j,在满足这种情况下 ...
分类:
其他好文 时间:
2020-05-21 16:36:28
阅读次数:
53
"ZOJ 3228" 先把模板串都丢进AC自动机 然后跑查询 对于允许重叠的,我们直接对$fail$树上一段路径的节点的答案++ 否则我们分串的长度讨论,对于每种长度的串处理一个答案$dp[i][6]$ ...
分类:
其他好文 时间:
2020-05-21 16:29:20
阅读次数:
61