当前位置:网站首页>【集训DAY10】Tree【区间DP】
【集训DAY10】Tree【区间DP】
2022-07-21 07:15:00 【VL——MOESR】
思路:
我们设f[i][j][0/1]表示i~j这一段节点的根节点在左边或右边的最大权值和。
只要枚举根节点k,像区间DP那样去转移就行了
c o d e code code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll MAXN = 310;
ll n, g[MAXN][MAXN], s[MAXN], f[MAXN][MAXN][2];
struct node {
ll key, val;
}a[MAXN];
ll gcd(ll x, ll y) {
if(y == 0) return x;
else return gcd(y, x % y);
}
bool cmp(node x, node y) {
return x.key < y.key;
}
int main() {
freopen("tree.in", "r", stdin);
freopen("tree.out", "w", stdout);
scanf("%lld", &n);
for(ll i = 1; i <= n; i ++)
scanf("%lld%lld", &a[i].key, &a[i].val);
memset(f, -0x3f, sizeof(f));
sort(a + 1, a + 1 + n, cmp);
for(ll i = 1; i <= n; i ++)
for(ll j = 1; j <= n; j ++) g[i][j] = gcd(a[i].key, a[j].key);
for(ll i = 1; i <= n; i ++) s[i] = a[i].val + s[i - 1];
for(ll i = 1; i <= n; i ++) {
if(i != 1 && g[i][i - 1] != 1) f[i][i][0] = a[i].val;
if(i != n && g[i][i + 1] != 1) f[i][i][1] = a[i].val;
}
ll ans = - 1e18;
for(ll l = 2; l <= n; l ++) {
for(ll i = 1; i + l - 1 <= n; i ++) {
ll j = i + l - 1;
for(ll k = i; k <= j; k ++) {
ll sum;
if(k == i) sum = f[i + 1][j][0] + s[j] - s[i - 1];
else if(k == j) sum = f[i][j - 1][1] + s[j] - s[i - 1];
else sum = f[i][k - 1][1] + f[k + 1][j][0] + s[j] - s[i - 1];
if(i != 1 && g[k][i - 1] != 1) f[i][j][0] = max(f[i][j][0], sum);
if(j != n && g[k][j + 1] != 1) f[i][j][1] = max(f[i][j][1], sum);
if(l == n) ans = max(ans, sum);
}
}
}
if(ans == - 1e18) printf("-1");
else printf("%lld", ans);
return 0;
}
边栏推荐
- 小程序 奇葩BUG 更新~
- Framework - WindowManager (window management service) practice of WMS
- 罗丹明B标记肽核酸PNA|罗丹明B-PNA|生物素修饰肽核酸pna|生物素修饰pna肽核酸|规格信息
- 【愚公系列】2022年7月 Go教学课程 014-运算符之算术运算符
- Leetcode skimming 03
- [paper notes] 3D point cloud segmentation pointnet
- Cloud foundry 4: application lifecycle
- list解析<stl初级> (跑路人笔记)
- 软件测试面试小技巧 | 如果你没收到offer我倒立洗头
- Ala-PNA丙氨酸改性PNA肽核酸|Ac-Ala-PNA的合成路线
猜你喜欢
随机推荐
word2vec简单总结
46:第四章:开发文件服务:7:在【files】文件服务中,整合阿里OSS;
Uniapp, wechat applet input regular verification can only be input as numbers and decimal places
Mysql07(数据更新DML)
STM32中的中断向量表
【安全狗漏洞通告】Apache Spark 命令注入漏洞方案
近红外染料CY7.5标记PNA多肽实验步骤CY7.5-PNA|188Re标记反基因肽核酸(AGPNA)
Steve Aoki's Avatar will come to the sandbox metauniverse!
Vs2022 shortcut key settings
【微信小程序】解决代码上传超过大小限制,小程序分包
PYQT5打包出错,缺少文件,例ImportError: OpenCV loader: missing configuration file: [‘config.py‘]. Check
malloc 和 空間配置器
Vscode running C language file
一种新的UI测试方法:视觉感知测试
Mysql07 (data update DML)
Mysql06 (sequence)
Mysql08(事务)
Ala-PNA丙氨酸改性PNA肽核酸|Ac-Ala-PNA的合成路线
网络 IO 模型的演化过程
怎么学自动化测试,可以自学吗?