
动态规划
jqsh_
这个作者很懒,什么都没留下…
展开
-
1573:分离与合体
题干题干解析很明显的 区间dp,刷过板子题的dalao们肯定可以看出来。所以dp部分就是板子题。思路详解这题dp就是按题目说的去做就好。(还能再明显吗)3 2 1 开大!!!dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[i])∗a[k]);dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[i])*a[k]);dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[.原创 2021-02-04 07:34:26 · 348 阅读 · 0 评论 -
1572:括号配对
部分思路来源,感谢:大佬博客题目:传送门题干解析这题非常明显是区间dp,模板套一下就行。具体思路与大佬不同: 倒叙枚举iii,正序枚举jjj,再正序枚举kkk。(详见代码)代码#include<bits/stdc++.h>using namespace std;int n,m,f[1001][1001];string s;int main(){ cin>>s; n=s.size(); for(int i=n;i>=0;i--){ fo.原创 2021-02-02 20:22:52 · 738 阅读 · 0 评论 -
1569:【 例 1】石子合并 & P1880 [NOI1995] 石子合并
洛谷一本通注:此题一本通测点更为严谨。题干分析此题与这题差不多,就是多了化环为链的过程(其实就是*2)思路这题博客食用效果更佳 明明是偷懒 ,具体区别详见代码,而最大最小一个max一个min。代码#include<bits/stdc++.h>using namespace std;int n,m,a[1001],f[1001][1001],dis[1001][1001];int main(){ scanf("%d",&n); memset(f,127.原创 2021-02-01 13:48:18 · 689 阅读 · 1 评论 -
1299:糖果
简单的动规在正常的操作上加一个取模就好了代码#include<bits/stdc++.h>using namespace std;int n,k,a[1001],f[1001][1001];int main(){ scanf("%d %d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<k;i++) f[0][i]=-21474836; for(int i=.原创 2020-11-20 15:49:51 · 440 阅读 · 0 评论 -
CSP-J 2020方格取数
今年CSP-J考挂了,int提交前脑残改long long导致T2爆零,T3两个小时没搞出来,爆零。T4想出正解,没时间了,爆零。今年CSP-J考的痛苦极了~~~好了,话不多说 明明说了很多题干:蓝色的传送门题干分析这明显是dp,最正常不过的dp上下右三个设置决定了要开三维数组(顶礼膜拜用二维(或更少)的大神们)注意:方向向右不能向左,所以dp时要按列dp!!!,因为每一个格都只能走一次,所以要向上后不能向下,向下后不能向上。具体思路从右上向左下,先按列后按排dp(具体见代码).原创 2020-11-20 15:44:11 · 1202 阅读 · 5 评论 -
问题 D: 分配时间
机房练习题题干ps. 闲人… 免进 … 看就看吧言归正传,这道题是分组背包(我用的01…,后来…,好吧,其实本来用的就是分组,自己都不知道)。pps. 分组背包的题在 这里ppps. 刚教完小师弟,手指头都紫了(粉笔的颜色)先推导大表,如下图: (最好自己从新画一遍)这里能够看出,每一个数均可从上一个推导而来(注意,不是一定!!!)。例如,(3,3)可以从(2,3)推导而来与此同时,它也可以从另一个位置推导。即 :$$...原创 2020-09-10 21:40:46 · 325 阅读 · 1 评论 -
1259:【例9.3】求最长不下降序列
题干:点TA题干分析这道题和数字三角形有一定的相似之处,我们只需将可能的继承范围扩大至当前搜索点之前,求所有点长度的最大值即可。算法思路用当前值与之前所有值对比,如果当前的 ai 比 aj 大,就取最大值。ps.由于要存储队列,所以就要把方程拆开 (详见代码)代码#include<bits/stdc++.h>using namespace std;int t,n,m,a[2001][4];int main(){ memset(a,0,sizeof(a)).原创 2020-08-31 22:31:23 · 643 阅读 · 0 评论 -
1258:【例9.2】数字金字塔
题干:传送门题干分析就是普通的题,递推/动规/贪心都行的… (就暴力不行)如果我们把每个点单独拿来看的话,点z只能从点x,y继承数字和。拿样例举例来说:值为14 的点 不指了,懒啊 ,只能从点值为7或12的点继承数字和。算法思路递推/动规/贪心: 从上往下,每一层找上两个中数字和最大的,加上自己后继承。代码#include<bits/stdc++.h>using namespace std;int n,f[1001][1001],s=0;int main(.原创 2020-08-31 21:51:43 · 342 阅读 · 0 评论 -
重做动规
前两天做题,卡的欲哭无泪啊,贪心的Johnson算法好难的…这两天回忆一下子动规,也算是考前复习吧。 ----jqsh 2020.8.31 21:35原创 2020-08-31 21:36:05 · 114 阅读 · 0 评论 -
1923:【03NOIP普及组】数字游戏
123原创 2020-06-28 22:57:41 · 1171 阅读 · 0 评论 -
1570:【例 2】能量项链
题干:点我点我具体题解这里: 传送门原创 2020-06-24 07:08:52 · 384 阅读 · 0 评论 -
1843:【06NOIP提高组】能量项链
题干在这里:滋滋滋~神秘的传送门这道题题干的本质就是查找每一次合并的最大值,合并的过程想不明白可以自己画一段珠子和头尾标记辅助理解。 自己画的太难看不敢放理解题干后能知道,这道题本质上就是一个区间DP 别问我怎么知道的,具体思路如下:先放一下方程 给人很厉害的样子 :f[i][j]=max(f[i][j],f[i][k]+f[k][j]+a[k]×a[i]×a[j]) f[i][j]=max(f[i][j],f[i][k]+f[k][j]+a[k]×a[i]×a[j])f[i][j]=max(f原创 2020-06-23 23:14:25 · 496 阅读 · 0 评论 -
1274:【例9.18】合并石子
找题目?故作深沉的传送门看完题数据规模一定是不能暴力的,所以还有两条路:贪心 or 动规至于贪心的可行性…让我们看一组数据(样例)实在想不出别的反例了 :713 7 8 16 21 4 18按照贪心(每次都合并最小值)算一算,结果应该是248本来画了图,太丑不敢放但是,样例输出是239,所以贪心不可行接下来就剩动规一种选择了状态转移方程:f[i][j]=min(f[i][j]...原创 2020-04-12 10:34:41 · 1046 阅读 · 0 评论