HDU 5900 QSC and Master(2016 ACM/ICPC Asia Regional Shenyang Online)
2016-09-26 10:24
501 查看
吐槽
2016沈阳网络赛最水的题目,自己写了2个小时无果,最终放弃,作为搞dp的我深感自责,自己区间dp确实也没有做过几道题,当时只是模模糊糊写出了状态转移方程,假如I和k匹配,那么一定要保证i+1到k+1中的所有数也需要匹配,就这一点一直没有好的想法,加上自己网络赛的气氛比较沉重,最后无果!!!,因此这道题很显然就是需要特殊判断一下,别的没有什么大问题。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 305; typedef long long LL; LL key[maxn],val[maxn], sum[maxn], dp[maxn][maxn]; LL gcd(LL a,LL b){ return !b?a:gcd(b, a%b); } int main(){ int T, N; scanf("%d", &T); while(T--){ scanf("%d", &N); for(int i = 1; i <= N; i++) scanf("%I64d", &key[i]); for(int i = 1; i <= N; i++) scanf("%I64d", &val[i]); memset(sum, 0, sizeof(sum)); for(int i = 1; i <= N; i++) sum[i] = sum[i-1]+val[i]; //预处理val值的前缀和 memset(dp, 0, sizeof(dp)); for(int len = 1; len <= N; len++){ //区间长度 for(int i = 1; i+len <= N; i++){ //枚举区间右端点 int j = i+len; if(gcd(key[i], key[j]) != 1){ //如果不互质,那么需要特判 if(j-i == 1) dp[i][j] = val[i]+val[j]; //这里很显然 else if(sum[j-1] - sum[i] == dp[i+1][j-1]) //很显然把这一段区间的所有值都包括一定最优 dp[i][j] = max(dp[i][j], dp[i+1][j-1]+val[i]+val[j]); } for(int k = i; k <= j; k++) //简单的转态转移。这里就不多说了 dp[i][j] = max(dp[i][j], dp[i][k]+dp[k+1][j]); } } printf("%I64d\n", dp[1] ); } return 0; }
相关文章推荐
- hdu 5900 QSC and Master 区间dp(2016 ACM/ICPC Asia Regional Shenyang Online)
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5900 QSC and Master(区间dp水题)
- HDU5900 QSC and Master(区间DP)2016 ACM/ICPC Asia Regional Shenyang Online
- 【HDU5900 2016 ACM ICPC Asia Regional Shenyang Online I】【区间DP】QSC and Master 相邻互质取数最大取值.cpp
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC(矩阵快速幂+高次幂取模)★ ★
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5898 odd-even number
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5894 hannnnah_j’s Biological Test
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5894 hannnnah_j’s Biologica(lucas定理求组合数+乘法逆元)——2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC
- HDU 5895&&2016 ACM/ICPC Asia Regional Shenyang Online1004 Mathematician QSC [矩阵加速+欧拉降幂]【数论】
- HDU 5874 Friends and Enemies 【构造】 (2016 ACM/ICPC Asia Regional Dalian Online)
- HDU 5874 Friends and Enemies(二分图思想)——2016 ACM/ICPC Asia Regional Dalian Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5893 List wants to travel
- HDU 5898&&2016 ACM/ICPC Asia Regional Shenyang Online/ odd-even number [数位DP]【动态规划】
- 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp
- HDU 5898 odd-even number(2016 ACM/ICPC Asia Regional Shenyang Online)