题意:

  给n件物品,有key和value

  每次可以把相邻的 GCD(key[i], key[i+1]) != 1 的两件物品,问移除的物品的总value最多是多少

  key : 1 3 4 2  移除34以后12也相邻了,可以移除

分析:

  先预处理出所有GCD[l][r], 意味 l <= i <= r的区域可以全部移除, 用记忆化搜索处理

  然后 dp[i] 代表到 i 为止可以得到的最大value和

  if (G[l][r]) dp[r] = max(dp[r], dp[l-1] + sum[r] - sum[l-1] )

  以及用 dp[i] = max(dp[i], dp[i-1]) 向后保留最大值

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long
const int MAXN = ;
int t, n;
LL dp[MAXN];
LL key[MAXN], v[MAXN], sum[MAXN];
int GCD[MAXN][MAXN];
LL gcd(LL a, LL b)
{
return b == ? a : gcd(b, a%b);
}
bool check(int l, int r)
{
if (l > r) return ;
if (GCD[l][r] != -) return GCD[l][r];
if (l == r) return GCD[l][r] = ;
if ((r-l)% == ) return GCD[l][r] = ;
if (l == r-) return GCD[l][r] = ( gcd(key[l], key[r]) != );
if (gcd(key[l], key[r]) != && check(l+, r-) ) return GCD[l][r] = ;
for (int i = l+; i < r-; i++)
{
if (check(l,i) && check(i+, r)) return GCD[l][r] = ;
}
return GCD[l][r] = ;
}
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
for (int i = ; i <= n; i++)
scanf("%lld", &key[i]);
sum[] = ;
for (int i = ; i <= n; i++)
scanf("%lld", &v[i]) , sum[i] = sum[i-] + v[i];
memset(GCD, -, sizeof(GCD));
for (int i = ; i <= n; i++)
for (int j = i; j <= n; j++)
check(i, j);
memset(dp, , sizeof(dp));
for (int i = ; i <= n; i++)
{
for (int j = ; j <= i; j += )
{
int l = i - j + , r = i;
if (check(l, r))
dp[i] = max(dp[i], dp[l-] + sum[r] - sum[l-]);
}
dp[i] = max(dp[i], dp[i-]);
}
printf("%lld\n", dp[n]);
}
}

HDU 5900 - QSC and Master [ DP ]的更多相关文章

  1. HDU 5900 QSC and Master 区间DP

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

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

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

  3. HDU 5900 QSC and Master

    题目链接:传送门 题目大意:长度为n的key数组与value数组,若相邻的key互斥,则可以删去这两个数同时获得对应的两 个value值,问最多能获得多少 题目思路:区间DP 闲谈: 这个题一开始没有 ...

  4. 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) ...

  5. HDU 5900

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

  6. 2016沈阳网络赛 QSC and Master

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

  7. HDU 1003 Max Sum --- 经典DP

    HDU 1003    相关链接   HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...

  8. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  9. hdu 2829 Lawrence(斜率优化DP)

    题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...

随机推荐

  1. Jade学习笔记

    初学nodejs,折腾过用handlebars做模板,后来隔了一段重新学习,用了jade,真心简洁……记录一些学习笔记,以备复习. jade是基于缩进的,所以tab与space不能混用: 属性的设置: ...

  2. new Handler()和new Handler(Looper.getMainLooper())的区别

    一个帖子的整理: Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别如果你不带参数的实例化:Handler ...

  3. 在jsp页面中使用自定义标签

    在某些场景中,自定义标签可封装大量代码,使页面变得更简洁,标签也可以很方便地在不同页面中实现通用而不必去粘贴大量的js代码.现在把最近做的一个自定义标签在这里总结一下.首先总结一下关于自定义标签的一些 ...

  4. cf C. Jeff and Rounding

    http://codeforces.com/contest/352/problem/C 题意:给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 对每一个浮 ...

  5. hdu 畅通工程

    http://acm.hdu.edu.cn/showproblem.php?pid=1863 #include <cstdio> #include <cstring> #inc ...

  6. [LeetCode 121] - 买入与卖出股票的最佳时机(Best Time to Buy and Sell Stock)

    问题 假设你有一个数组,其中的第i个元素表示一只股票在第i天的价格. 如果只允许你完成一次交易(即买入并卖出股票一次),设计一个找出最大利润的算法. 初始思路 和122一样,基于买入与卖出股票的最佳时 ...

  7. Unity 3D中的界面快捷键

    Ctrl+1 切换到Scene视图Ctrl+2 切换到Game视图Ctrl+3 切换到Inspector视图Ctrl+4 切换到Hierarchy视图Ctrl+5 切换到Project视图Ctrl+6 ...

  8. 【Xamarin 开发 IOS --IOS ViewController生命周期】

    ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内 ...

  9. MySQL常用时间函数

    官方文档:Date and Time Functions Name Description ADDDATE() Add time values (intervals) to a date value ...

  10. Eclipse中安装TestNG插件

    在Eclipse中安装TestNG也像安装其他插件一样非常方便,如下: 选择菜单:Help->Install New Software,然后在弹出窗口中的“Work with”中输入地址: ht ...