JZOJ 6287. 2019.08.09【NOIP提高组A】扭动的树
DescriptionDescriptionDescription
给定权值和键值,求相邻键值不互质且满足二叉查找树性质的最大sumsumsum和
数据范围:n≤300n\leq 300n≤300
SolutionSolutionSolution
首先按照键值排序,容易知道这必然是这棵树的中序遍历
接下来做区间dpdpdp,提点出来,左右分别做左右子树并计算答案
时间复杂度:O(n3)O(n^3)O(n3)
CodeCodeCode
#include<cstdio>
#include<cctype>
#include<algorithm>
#define LL long long
using namespace std;int n,root;
struct node{LL key;int val;}a[301];
inline LL gcd(LL x,LL y){return y?gcd(y,x%y):x;}
inline bool cmp(node x,node y){return x.key<y.key;}
bool ok[301][301];
LL ans=-1,f[301][301],s[301];
inline LL read()
{LL f=0,d=1;char c; while(c=getchar(),!isdigit(c)) if(c=='-') d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
signed main()
{freopen("tree.in","r",stdin);freopen("tree.out","w",stdout);n=read();for(register int i=1;i<=n;i++) a[i].key=read(),a[i].val=read();sort(a+1,a+1+n,cmp);for(register int i=1;i<n;i++) for(register int j=i+1;j<=n;j++) ok[j][i]=ok[i][j]=gcd(a[i].key,a[j].key)>1,f[i][j]=f[j][i]=-0x3f3f3f3f;for(register int i=1;i<=n;i++) s[i]=s[i-1]+a[i].val;for(register int i=1;i<=n;i++)for(register int k=i;k;k--)for(register int j=k;j<=i;j++){ if(ok[i][j]) f[i][k]=max(f[i][k],f[j][k]+f[j][i-1]+s[i-1]-s[k-1]);if(ok[j][k]) f[k][i]=max(f[k][i],f[j][k+1]+f[j][i]+s[i]-s[k]);} for(register int i=1;i<=n;i++) ans=max(ans,f[i][1]+f[i][n]+s[n]);printf("%lld",ans);
}
JZOJ 6287. 2019.08.09【NOIP提高组A】扭动的树相关推荐
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结
2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...
- 6271. 2019.8.4【NOIP提高组A】锻造 (forging)
6271. 2019.8.4[NOIP提高组A]锻造 (forging) (File IO): input:forging.in output:forging.out Time Limits: 15 ...
- 第一届『Citric杯』NOIP提高组模拟赛 题解
[官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...
- HighNewTech:2019.08.09程序猿界大事件之【你好,我是鸿蒙OS】~【来了,老弟】—技术才是硬道理,开源方能建立新生态!
High&NewTech:2019.08.09程序猿界大事件之[你好,我是鸿蒙OS]~[来了,老弟]-技术才是硬道理,开源方能建立新生态! 导读 2019华为开发者大会在今日举行, ...
- 津津的储蓄计划 NOIp提高组2004
这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...
- 2021.08.09【普及组】模拟赛C组比赛总结
文章目录 2021.08.09[普及组]模拟赛C组比赛总结 写在前面: T1 :[普及模拟]生产武器 题目大意: 正解: T2 :[普及模拟]城市连接 题目大意: 正解: T3 :[普及模拟]抢救文件 ...
- 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)
信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...
- {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C
2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...
最新文章
- 分享:个人是怎么学习新知识的
- hp优盘启动盘格式化工具_启动盘——拯救你电脑的利器
- USB学习6---Linux Android USB软件架构设计
- win7安装python2.7_python学习(3)-win7安装python2.7
- Regex Tester (免费有用)
- OpenGL次表面散射
- centos yum安装_centos7上yum安装碰到的坑
- 确保PHP安全 不能违反的四条安全规则
- Java案例:使用clone()方法克隆对象
- oracle 查看 统计更新时间,oracle查看和更新统计表的信息
- Java基础笔记(一)
- 在VS2010进行MFC编程设置字符集的问题(使用多字节字符集引起错误)
- 走火入魔.NET从C/S单点登录到B/S系统的例子,SUID(System Unique Identification)
- CSS选择器优先级排列
- python实现空气焓值,湿球温度的计算
- html方式判断IE版本
- 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之四:车云一体架构篇
- 谷歌浏览器插件自动点击程序
- 全国电费余额查询API接口
- 王二 设计模式读书笔记
热门文章
- proc_create的使用方法
- 千亿智能家居赛道,为什么渗透率却不足5%?
- springcloud 项目maven依赖:Failure to find org.springframework.cloud:spring-cloud-dependencies
- cocos2d-x 图片纹理优化 资源加载方案
- vs工程中哪些文件可以删除
- 微信小程序-开发入门(一)
- JavaScript进阶
- echarts3 使用((绘制各种图表,地图))
- 基于asp.net校园二手物品交易平台-计算机毕业设计
- 综合业务数字网(ISDN)--网络大典