题目链接:hdu_5900_QSC and Master

题意:

有n个数,每个数有个key值,有个val,如果相邻的两个数的key的gcd大于1那么就可以得到这两个数的val的和,现在问怎么取使得到的和最大

注意:1 2 2 4,第2个和第3个取掉后,第一个就和第4个相邻了

题解:

这是一道区间DP题,之前没做过,比赛时没有想出怎么来DP

考虑区间dp[i][j],枚举i到j的k,然后更新一下当前的最大值

如果gcd(i,j)>1,如果i+1=j,说明是相邻的,直接相加,如果dp[i+1][j-1]=这段的区间val和,那么中间就可以取掉,说明当前的i,j可以相邻然后取掉

此时dp[i][j]=max(dp[i][j],dp[i+1][j-1]+val[i]+val[j])

 #include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
typedef long long ll; const int N=;
ll dp[N][N],sum[N];
int T,n,val[N],a[N]; ll up(ll &a,ll b){if(a<b)a=b;} ll DP()
{
memset(dp,,sizeof(dp));
F(len,,n)for(int i=;i+len<=n;i++)
{
int j=i+len;
F(k,i,j-)up(dp[i][j],dp[i][k]+dp[k+][j]);
if(__gcd(val[i],val[j])>)
{
if(i+==j)dp[i][j]=a[i]+a[j];
else if(dp[i+][j-]==sum[j-]-sum[i])up(dp[i][j],dp[i+][j-]+a[i]+a[j]);
}
}
return dp[][n];
} int main(){
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
F(i,,n)scanf("%d",val+i);
F(i,,n)scanf("%lld",sum+i),a[i]=sum[i];
F(i,,n)sum[i]+=sum[i-];
printf("%lld\n",DP());
}
return ;
}

hdu_5900_QSC and Master(区间DP)的更多相关文章

  1. 2016 年沈阳网络赛---QSC and Master(区间DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 Problem Description Every school has some legend ...

  2. HDU 5900 QSC and Master 区间DP

    QSC and Master Problem Description   Every school has some legends, Northeastern University is the s ...

  3. HDU5900 QSC and Master(区间DP + 最小费用最大流)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...

  4. HDU 5900 QSC and Master (区间DP)

    题目链接   http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意:给出序列$A_{i}.key$和$A_{i}.value$,若当前相邻的两个数$A_{ ...

  5. 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp

    QSC and Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  6. 区间dp专题练习

    区间dp专题练习 题意 1.Equal Sum Partitions ? 这嘛东西,\(n^2\)自己写去 \[\ \] \[\ \] 2.You Are the One 感觉自己智力被吊打 \(dp ...

  7. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  8. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  9. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

随机推荐

  1. 手工场景--controller--场景设计、场景监控、运行场景

    场景设置: 1.设置界面 2.全局设置. A:初始化: B:启动用户: C:

  2. 关于mysql 5.6.24 的my.ini配置问题

  3. ASP.NET Core: Getting Started with ASP.NET MVC Core

    1. ASP.NET Core the Unified Framework ASP.NET Core的统一框架 2. New Solution Project 新的解决方案项目 src folder: ...

  4. sql时间转换函数--备忘

    总是忘记 一.语法: CAST (expression AS data_type) 参数说明: expression:任何有效的SQServer表达式. AS:用于分隔两个参数,在AS之前的是要处理的 ...

  5. Android中设定EditText的输入长度

    方法一:可以在layout xml中加上属性android:maxLength 比如: <EditText         android:id="@+id/editTextShow& ...

  6. CodeForces 711D Directed Roads

    计数,模拟. 首先观察一下给出的图的特点: $1.$一定存在环. $2.$可能存在多个环. 我们对每个环计算方案数,假设环$C$上包含$x$条边,那么把环$C$破坏掉的方案数有${2^x} - 2$种 ...

  7. 杂谈3之English

    1.面向过程(OPP):Orient Procedure Program (C语言) 2.面向对象(OOP):Orient ObjectProgram(Java) 3.面向对象的三大特征:继承Inhe ...

  8. 在Proteus中添加标号

    1.Proteus中添加组件后双击引脚可以快速生成一个最近的端口. 2.按A调出设置界面 3.在String中写:net=H#,"H"可以换成自定义前缀.count为起始值,inc ...

  9. 前端 TDD 开发

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px ".PingFang SC"; color: #454545 } p.p2 ...

  10. 3、href和src的区别

    href:将现在的页面连接到新的页面 src:将需要引用的东西添加到现在的页面 <a href="mailto:youremailaddress@host.com">C ...