HDU 5900 QSC and Master
题目链接:传送门
题目大意:长度为n的key数组与value数组,若相邻的key互斥,则可以删去这两个数同时获得对应的两
个value值,问最多能获得多少
题目思路:区间DP
闲谈: 这个题一开始没有做出来,找了下原因,是自己思维太局限(刷题太少),始终想怎样去维护相
邻这个条件,删去数之后怎么来拼接左右两段。。。最后导致没解出来。。
正解: 其实维护拼接我们可以用一个数组来实现,先预处理原数组中相邻的两个数,然后再利用区间
DP思想来进行扩展,最后根据这个预处理好的数组来实现判断与更新。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 1000050
#define maxn 3001
typedef pair<int,int> PII;
typedef long long LL; int n,m;
int key[],va[];
LL sum[];
int ok[][];
LL dp[][];
LL ans;
LL read(){
LL x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
}
void init(){
mst(ok,);
for(int i=;i<=n;++i)ok[i-][i]=__gcd(key[i],key[i-])==?:;
for(int l=;l<=n;++l)
for(int i=;i+l-<=n;++i){
int j=i+l-;
ok[i][j]=(ok[i+][j-]&&__gcd(key[i],key[j])!=);
for(int k=i;k<j;++k)
ok[i][j]+=(ok[i][k]&&ok[k+][j]);
}
}
void solve(){
mst(dp,);
for(int l=;l<=n;++l)
for(int i=;i+l-<=n;++i){
int j=i+l-;
if(ok[i][j]) dp[i][j]=sum[j]-sum[i-];
else{
for(int k=i;k<j;++k){
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
}
printf("%lld\n",dp[][n]);
}
int main(){
int i,j,group;
group=read();
while(group--){
scanf("%d",&n);
for(i=;i<=n;++i) key[i]=read();
for(j=;j<=n;++j) va[j]=read(),sum[j]=sum[j-]+va[j];
init();
solve();
}
return ;
}
HDU 5900 QSC and Master的更多相关文章
- HDU 5900 QSC and Master 区间DP
QSC and Master Problem Description Every school has some legends, Northeastern University is the s ...
- HDU 5900 QSC and Master (区间DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意:给出序列$A_{i}.key$和$A_{i}.value$,若当前相邻的两个数$A_{ ...
- HDU 5900 - QSC and Master [ DP ]
题意: 给n件物品,有key和value 每次可以把相邻的 GCD(key[i], key[i+1]) != 1 的两件物品,问移除的物品的总value最多是多少 key : 1 3 4 2 移除3 ...
- 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) ...
- HDU 5900
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2016沈阳网络赛 QSC and Master
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- 2016 年沈阳网络赛---QSC and Master(区间DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 Problem Description Every school has some legend ...
- hdu 5900 区间dp
题意:给你n对pair 里面有两个值,分别是key 和 val .你可以取相邻的两个pair 获得其中的val,前提是两个pair 的key 的 gcd 不为 1.当然你把相邻的两个取走了之后原本不相 ...
随机推荐
- EMQ配置
参考官方配置页面:http://emqtt.com/docs/v2/tune.html Linux 操作系统参数系统所有进程可打开的文件数量官方配置: sysctl -w fs.file-max=20 ...
- static 与单例模式、auto_ptr与单例模式、const 用法小结、mutable修饰符
一.static 与单例模式 单例模式也就是简单的一种设计模式,它需要: 保证一个类只有一个实例,并提供一个全局访问点 禁止拷贝 C++ Code 1 2 3 4 5 6 7 8 9 10 11 ...
- POJ 3279 Fliptile (二进制+搜索)
[题目链接]click here~~ [题目大意]: 农夫约翰知道聪明的牛产奶多. 于是为了提高牛的智商他准备了例如以下游戏. 有一个M×N 的格子,每一个格子能够翻转正反面,它们一面是黑色,还有一面 ...
- [svc]linux buffer和cache的区别
通俗理解buffer,cache Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 ...
- js控制伪元素样式
//获取伪元素// CSS代码 #myId:before { content: "hello world!"; display: block; width: 100px; heig ...
- LinQ的简单使用
1.LinQ to Sql类(NET Language Integrated Query (LINQ) ) LINQ定义了大约40个查询操作符,如select.from.in.where以及order ...
- WP8持续集成之通过命令行跑单元测试
理论基础 对于如何在WP8上创建单元测试工程,在这里首先提供一个MSDN的文档作为参考. http://msdn.microsoft.com/en-us/library/windowsphon ...
- CGPathCreateMutable
ios 图形与动画学习笔记 构造路径(CGPathCreateMutable) 一系列点放在一起,构成了一个形状.一系列的形状放在一起,构成了一个路径. /* 路径属于我们正在绘制他们的上下文.路 ...
- cocos2dx中的一些坑
1.CCTableView中的lua绑定LUA_TableViewDataSource 在TestLua里有例子,有个TableView的例子function TableViewTestLayer.c ...
- [Linux内核]软中断、tasklet、工作队列
转自:http://www.cnblogs.com/li-hao/archive/2012/01/12/2321084.html 软中断.tasklet和工作队列并不是Linux内核中一直存在的机制, ...