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. stanford Protege 4.3 ERROR: Bundle org.protege.common 解决方法

    我的java版本是jdk1.8.0_45,安装了protege后打开总显示: ERROR: Bundle org.protege.common [1] Error starting file:/hom ...

  2. JavaScript数组方法总结

    由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaScript教程的整理,具体内容如下: 一.普通方法 1.join() 将数组元素连接在 ...

  3. The Layout Process on Mac OSX and iOS

    First we will recap the steps it takes to bring views on screen with Auto Layout enabled. When you’r ...

  4. 关于Let和var声明变量的区别

    Let是ES6中添加进来的一个关键字,用于声明变量,其法与var声明变量相同,不同点在于其作用域(块级). 举例可以看出其具体差别 for(var i=0;i<5;i++){ console.l ...

  5. SVN小贴士

    我辛辛苦苦写的到哪里了? SVN小贴士SVN服务器上的代码项目组公用,你的每一个提交都会体现给项目组每个人,所以提交要慎重,要注意避免代码冲突,使用SVN小贴士: 1.提前宣布开发计划,保持项目组成员 ...

  6. filter_input() 函数

    定义和用法 filter_input() 函数从脚本外部获取输入,并进行过滤. 本函数用于对来自非安全来源的变量进行验证,比如用户的输入. 本函数可从各种来源获取输入: INPUT_GET INPUT ...

  7. Ubuntu安装gfortran

    命令行运行 sudo apt-get install gfortran

  8. Zookeeper源码编译为Eclipse工程(转)

    原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/41179293 为了深入学习ZooKeeper源码,首先就想到将其导入到Eclispe ...

  9. 机械键盘那些事[我用过的minila Filco cherry 3494 阿米洛87]

    用过几月下来.最终现在还能流畅使用的,就剩下3494 跟 minila了. 想起购买的初衷.cherry是泰斗,红轴轻柔,所以三把全红轴. 之后,觉得携带外出不方便,所以就又入了个MINILA. 再后 ...

  10. HTML、canvas、video灰度

    效果图: 注:本例需在服务器上运行的才能看到效果.视频文件可换成本地视频(HBuilder有集成服务器或者使用wampmanager). 代码如下: <!DOCTYPE html> < ...