http://acm.hdu.edu.cn/showproblem.php?pid=5900

就是给出两行数字,每行有若干的数,如果相邻的两个数字的最大公约数不是1 的话拟具可以把这两数删除,并且把第二行对应的数字加起来,你的任务就是让这些数字的和最大

 #include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int n; int a[],b[],c[][];
long long dp[][];
void init(){
for(int i=;i<=n;i++){
for(int j=i-;j>=;j--){
if(i-j==){
if(__gcd(a[i],a[j])!=){///要注意函数的使用方法,前面是两个——
dp[j][i]=max(dp[j][i],(long long)b[i]+b[j]);///dp是long long型的,b是int型的,要进行转化,不然会出错
c[j][i]=;
}
}
else
{if(c[j+][i-]&&__gcd(a[j],a[i])!=){
dp[j][i]=max(dp[j][i],dp[j+][i-]+(long long)b[i]+b[j]);
c[j][i]=;
}
}
for(int k=j;k<=i;k++){
if(k+>=j && k+<=i){
if(dp[j][i] < dp[j][k]+dp[k+][i]){
dp[j][i]=max(dp[j][i],dp[j][k]+dp[k+][i]); if(c[j][k] && c[k+][i]){///证明此区间已经不能再扩展啦
c[j][i]=;
} else {
c[j][i]=;
}
}
}
} }
}
}
int main()
{
int t;
cin>>t;
while(t--){ cin>>n;
memset(dp,,sizeof(dp));///忘记初始化会犯错的
// memset(a,0,sizeof(a));
//memset(b,0,sizeof(b));
memset(c,,sizeof(c));
for(int i=;i<=n;i++){
cin>>a[i];
}
for(int i=;i<=n;i++){
cin>>b[i];
}
init();
long long ans=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
ans=max(ans,dp[i][j]);
}
}
cout<<ans<<endl; }
}

HDU5900的更多相关文章

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

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

  2. [POJ&HDU]杂题记录

    POJ2152 树形dp,每次先dfs一遍求出距离再枚举所有点转移即可. #include<iostream> #include<cstdio> #include<cma ...

随机推荐

  1. WebService Ajax调用

    1.Html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. Git基本命令行操作 (转)

    Git远程操作详解   作者: 阮一峰 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和 ...

  3. 关于relative和absolute的总结

    对于定位这个性质我原理上来说自己是明白的,但是在实践的过程中,总会出现各种稀奇古怪的情况,加relative或是absolute就可以解决,但是遇到这些情况总是不明白为什么!!!难道是脑容量太小的原因 ...

  4. LPTHW 笨方法学习python 16章

    根据16章的内容作了一些扩展. 比如,判断文件如果存在,就在文件后追加,如不存在则创建. 同时借鉴了shell命令中类似 cat <<EOF > test的方法,提示用户输入一个结尾 ...

  5. sublime 的使用

    常见问题: ctrl+`快捷见弹不出console怎么办! 解决方法: 估计适合电脑其他软件的快捷键冲突了,在sublime里面重新设置下快捷键 点击菜单中Preferences下面的Key Bind ...

  6. PAT (Basic Level) Practise:1023. 组个最小数

    [题目链接] 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是 ...

  7. 多线程下HttpContext.Current 的问题

    在项目中需要记录文本日志,为了加快响应速度所以用到了多线程. 但是以前的方法是不支持多线程的,程序运行错误. 追踪代码发现提示HttpContext为空. 1.HttpContext.Current表 ...

  8. Sprint第二个冲刺(第十一天)

    看板: 燃尽图:

  9. caffe的python接口

    http://blog.csdn.net/lu597203933/article/details/46742199 hadoop改成自己名字

  10. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...