题意

给出nnn个节点&lt;key,val&gt;&lt;key,val&gt;<key,val>,其中键值为keykeykey,权值为valvalval,用它们建一颗BSTBSTBST,且保证任意一条边的两个节点的gcdgcdgcd不为111。

定义某个节点的sumsumsum为其子树中所有valvalval的和。

最大化sumsumsum,不存在这颗树输出-111。

思路

对于BSTBSTBST,根据其性质把keykeykey排序,那就为这颗树的中序遍历了。

枚举一个点作为根,在中序遍历中把区间分成两部分,左边代表左儿子,右边代表右儿子,再从中选出一个节点与根连接,判断是否可行(gcd(gcd(gcd不为1)1)1),更新答案。

利用递归处理,并记忆化剪枝。时间复杂度O(n3)O(n^3)O(n3)

代码

#include<cstdio>
#include<algorithm>
#define file(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)struct node {long long key, val;
}p[301];int n;
long long ans;
int pre[301], gcd[302][302];
long long f[302][302][2];bool operator <(const node &a, const node &b) {return a.key < b.key;
}void dp(int l, int r, int s) {if (l > r || f[l][r][s]) return;int root = s ? l - 1 : r + 1;for (int i = l; i <= r; i++) {if (gcd[root][i] == 1) continue;dp(l, i - 1, 0);dp(i + 1, r, 1);if (f[l][i - 1][0] < 0 || f[i + 1][r][1] < 0) continue;f[l][r][s] = std::max(f[l][r][s], f[l][i - 1][0] + f[i + 1][r][1] + pre[r] - pre[l - 1]);}if (!f[l][r][s]) f[l][r][s] = -1;
}int main() {file(tree);scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%lld %d", &p[i].key, &p[i].val);std::sort(p + 1, p + n + 1);for (int i = 1; i <= n; i++) {pre[i] = pre[i - 1] + p[i].val;for (int j = i + 1; j <= n; j++)gcd[i][j] = gcd[j][i] = std::__gcd(p[i].key, p[j].key);        }ans = -1;for (int i = 1; i <= n; i++) {dp(1, i - 1, 0);dp(i + 1, n, 1);if (f[1][i - 1][0] < 0 || f[i + 1][n][1] < 0) continue;ans = std::max(ans, f[1][i - 1][0] + f[i + 1][n][1] + pre[n]);}printf("%lld", ans);
}

【动态规划 记忆化搜索】JZOJ_6287 扭动的树相关推荐

  1. 专题7:动态规划 记忆化搜索

    1. 什么是动态规划 ? 这是算法导论对动态规划的定义: 动态规划( dynamic programming,常简称为 dp ) 与分治方法相似,都是通过组合子问题的解来求解原问题( 在这里,&quo ...

  2. 洛谷 2921 记忆化搜索 tarjan 基环外向树

    洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...

  3. [Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]

    [问题描述][困难] [解答思路] 1. 记忆化搜索 时间复杂度:O(n^3) 空间复杂度:O(n^2) class Solution {public int[][] rec;public int[] ...

  4. BZOJ_P2461 [BeiJing2011]符环(动态规划/记忆化搜索)

    BZOJ传送门 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 113 Solved: 59 [Submit][Status][Discuss] Des ...

  5. 动态规划+深度优先搜索+记忆化搜索(干货满满)

    动态规划的定义 动态规划算法与分治法的思想类似,都是通过组合子问题的解来求原问题.我先来给大家介绍一下分治思想,分治思想就是把一个复杂的问题,分解为k个规模相同的子问题,如果还是无法解决,子问题又可以 ...

  6. CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)

    题目链接:点击查看 题目大意:给出n个数字,现在要求出一个X,使得X与n个数字单独异或之后的最大值,输出这个最大值的最小值 题目分析:最大值的最小值,差点就以为是字典树+二分了,因为没有单调性然后就无 ...

  7. 记忆化搜索 Memorization Search

    记忆化搜索 Memorization Search 什么是记忆化搜索 记忆化搜索函数的三个特点 记忆化搜索 vs 动态规划 三种适用于DP的场景 三种不适用于DP的场景 Examples: Leetc ...

  8. [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]

    [问题描述][中等] [解答思路] 1. 递归(超时) class Solution {int res = Integer.MAX_VALUE;public int coinChange(int[] ...

  9. Python数据结构与算法分析 第四章 递归 贪心 动态规划bp 记忆化搜索

    递归算法也总结出 三定律  1,递归算法必须有一个基本结束条件(最小规模问题的直接解决)  2, 递归算法必须能改变状态向基本结束条件演 进(减小问题规模)  3,递归算法必须调用自身 (解决减小了规 ...

  10. 动态规划5:动态规划与记忆化搜索

    本期题目: 单词拆分 单词拆分II 大礼包 记忆化搜索与狭义的动态规划 前面我们讲的动态规划很广义的思想,从起始时刻到终止时刻,每一步都要按照最优原则走,按照这个原则会产生一个迭代式,称为动态规划迭代 ...

最新文章

  1. SQL函数大全——实例
  2. Java基础-绘图技术
  3. 强化学习笔记:Sarsa算法
  4. JS特效——黑客效果JS代码(摘取)
  5. 从popup window出发做navigation
  6. Linux内核空间和用户空间
  7. git 暂存文件操作 stash
  8. 2015到3020计算机参考文献,2015版参考文献著录规则新变
  9. mysql添加表字段脚本_mysql数据库修改字段及新增字段脚本
  10. 小米平板4刷recovery教程_小米平板4解锁刷入魔趣详细教程 米板4怎么解锁刷机
  11. Zynga的数据分析
  12. 使用U盘在虚拟机中安装系统
  13. 客户端修改opc服务器的数据,客户端读取opc服务器数据
  14. 多伦多大学计算机专业硕士,多伦多大学计算机硕士专业 看你满足录取要求吗...
  15. 周文强做客《逐梦年代》与主持人李思思讲述创业背后的秘密
  16. Vivo手机获取文件管理器里的文件路径为空
  17. 寄居蟹与海葵是一对合作互助的共栖伙伴。海葵是寄居蟹最称职的门卫。它用有毒的触角去蜇那些敢来靠近它们的所有动物,保护寄居蟹。 而寄居蟹则背着行动困难的海葵,四出觅食,有福同享。但并不是所有寄居蟹和海
  18. 国内虚拟主机与香港云主机的优劣势
  19. 龚文祥自爆今日头条微博自媒体年收入仅1000元!
  20. 集成运放的主要技术指标

热门文章

  1. 利用Chrome翻译搞定大部分英文文件翻译的工作流
  2. 没有mysql sock_找不到mysql.sock,mysql.sock丢失问题解决方法
  3. linux 在 vi 中设定一下行号 怎么做啊 求图片,linux中vi/vim显示行号设置
  4. 信号完整性(SI)电源完整性(PI)学习笔记(十五)有损线、上升边退化与材料特性(二)
  5. Linux svn up 遇到Conflict discovered in
  6. 远程拨号换IP的方法
  7. 用java做出长方体的表面积_Android Studio实现长方体表面积计算器
  8. 问卷java_Java 问卷调查
  9. JS处理文本框只能输入中文、英文、数字,防止SQL特殊字符注入(解决MAC中文输入法下会取得拼音的值的问题)
  10. 第一个Python程序--Python