HDU 5900 QSC and Master(稍有技巧的区间dp)
发布日期:2021-06-30 10:24:13
浏览次数:2
分类:技术文章
本文共 1064 字,大约阅读时间需要 3 分钟。
一眼绝对像区间 d p dp dp
定义 f [ i ] [ j ] f[i][j] f[i][j]为区间 [ i , j ] [i,j] [i,j]的最大收益
可以枚举一个 k k k转移 f [ i ] [ k ] + f [ k + 1 ] [ j ] f[i][k]+f[k+1][j] f[i][k]+f[k+1][j]
而当 a [ i ] a[i] a[i]和 a [ j ] a[j] a[j]不互质时也可能可以消除
但是状态并没有说明 [ i + 1 , j − 1 ] [i+1,j-1] [i+1,j−1]是否被取空
但是!!如果 f [ i + 1 ] [ j − 1 ] f[i+1][j-1] f[i+1][j−1]等于 [ i + 1 , j − 1 ] [i+1,j-1] [i+1,j−1]的所有价值说明取空了
就可以转移了
#includeusing namespace std;#define int long longconst int maxn = 309;int t,n,a[maxn],b[maxn],f[maxn][maxn],pre[maxn];int gcd(int a,int b){ return b==0?a:gcd(b,a%b); }signed main(){ cin >> t; while( t-- ) { cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; for(int i=1;i<=n;i++) cin >> b[i],pre[i]=pre[i-1]+b[i]; for(int l=2;l<=n;l++) for(int i=1;i+l-1<=n;i++) { int j = i+l-1; f[i][j] = max( f[i+1][j],f[i][j-1] ); if( gcd( a[i],a[j] )>1&&pre[j-1]-pre[i]==f[i+1][j-1] ) f[i][j] = max( f[i][j],f[i+1][j-1]+b[i]+b[j] ); for(int k=i;k<=j-1;k++) f[i][j] = max( f[i][j],f[i][k]+f[k+1][j] ); } cout << f[1][n] << endl; memset( f,0,sizeof(f) ); }}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/109731784 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月05日 20时04分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【论文阅读笔记】文本分类论文汇总
2019-04-30
【python学习笔记】jion()函数和split()函数
2019-04-30
【NLP学习笔记】使用jieba实现关键词提取
2019-04-30
【深度学习笔记】卷积的原理
2019-04-30
【深度学习笔记】卷积的基础知识
2019-04-30
【NLP学习笔记】TF-IDF
2019-04-30
【NLP学习笔记】文本相似度计算——判断两篇文章是否相似
2019-04-30
【NLP学习笔记】余弦相似度
2019-04-30
【NLP学习笔记】One-hot encoding:独热编码
2019-04-30
【NLP学习笔记】word2vec
2019-04-30
【工具使用】如何去掉CSDN-markdown编辑器中图片的水印
2019-04-30
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置
2019-04-30
【深度学习笔记】卷积核weights参数shape说明
2019-04-30
【深度学习笔记】Tensorflow中dense(全连接层)各项参数
2019-04-30
【Python学习笔记】切片x[::2] 理解
2019-04-30
【Python学习笔记】lambda表达式
2019-04-30
【NLP学习笔记】词共现矩阵
2019-04-30
【NLP学习笔记】NLP基础知识框架图
2019-04-30