Galo

Description

给出一棵以11号点为根的nn个点的有根数,除了根节点以外,每个节点ii都有一个果子,美味度为wiw_i。
如果摘下了ii号果子,那么ii的子树中的果子以及ii到根的路径上的其他果子都会死掉,都不能摘。
最多能摘kk个果子,问所摘果子的美味度之和的最大值是多少。

Data Constraint

nn*kk<=10710^7
wiw_i<=10510^5

Solution

经典例题,其实也没什么好讲的,就是树型依赖动态规划。
ss[ii]表示以ii为根的子树大小。
dd[ii]表示dfsdfs序的第ii位的节点。
转移方程式如下
ff[ii][ll]=maxmax(maxmax(ff[ii+11][ll],ff[ii+ss[dd[ii]]][ll]),ff[ii+ss[dd[ii]]][ll-11]+ww[dd[ii]])
不会树型依赖动态规划请点这里
树型依赖动态规划

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>#define fo(i,j,l) for(int i=j;i<=l;i++)
#define fd(i,j,l) for(int i=j;i>=l;i--)using namespace std;
typedef long long ll;
const long long N=2e7+2e3,M=N/2;
ll f[N];
int ne[M],lb[M],la[M],s[M],d[M],w[M];
int n,m,j,k,l,i,o,a,b;void llb(int a,int b)
{ne[++o]=la[a]; la[a]=o; lb[o]=b;}int de(int a,int b)
{return (a-1)*(k+1)+b+1;}ll max(ll a,ll b)
{if(a>b)return a;else return b;}int main()
{freopen("galo.in","r",stdin);freopen("galo.out","w",stdout);cin>>n>>k; int kk=k+1;fo(i,2,n){scanf("%d%d",&a,&b);llb(a,i); w[i]=b;}int r,t;d[k=1]=1;s[1]=1;s[0]=0;for(f[1]=r=1;r;){t=f[r];s[t]+=s[f[r+1]];if(la[t]){f[++r]=lb[la[t]]; d[++k]=f[r];la[t]=ne[la[t]]; s[f[r]]=1; f[r+1]=0;}else r--;}w[1]=0;fo(i,1,n)f[de(i,0)]=0;k=kk;fd(i,n,1)fo(l,1,k)f[de(i,l)]=max(max(f[de(i+1,l)],f[de(i+s[d[i]],l)]),f[de(i+s[d[i]],l-1)]+w[d[i]]);ll ans=0;fo(i,1,k)ans=max(ans,f[de(1,i)]);printf("%lld",ans);
}

JZOJ 5426 Galo相关推荐

  1. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  2. 【JZOJ 5426】【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  3. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  4. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  5. [jzoj NOIP2018模拟 11.01]

    很庆幸打了这场模拟赛,因为这一场爆零 好像上次纪中的某场比赛我也出现了同样的问题,光是计算时间复杂度而忘记了空间的限制.想必是比上次惨的,考场上就写了两题而这两题都因为MLE爆零了.而且我T2还码了7 ...

  6. 【DP】小学生语文题(jzoj 5102)

    正题 jzoj 5102 题目大意 给你两个串A,B,字母个数相等,可以把B的一个字符移到前面某个位置,问你最少移多少次可以使A,B相等 解题思路 设fi,jf_{i,j}fi,j​为A匹配了i-n, ...

  7. 【二分】防具布置/秦腾与教学评估(ybtoj 二分-1-2/jzoj 1253/luogu 4403)

    正题 ybtoj 二分-1-2 jzoj 1253 luogu 4403 题目大意 给出n组数:si,ei,dis_i,e_i,d_isi​,ei​,di​ 对于每组数据,表示在sis_isi​加1, ...

  8. 【归并排序】奶牛的图片(jzoj 1812)

    奶牛的图片 jzoj 1812 题目大意 给你一个序列,你可以交换相邻的两个数 让你用最少的交换次数来使得这个序列变成形如a+1,a+2...n,1,2...a−1,aa+1,a+2...n,1,2. ...

  9. 【归并排序】休息(jzoj 3462)

    休息 jzoj 3462 题目大意 给你一个序列,你每一回合把它划分成尽可能少的单调递减的序列(第一次划分到的序列长度都是偶数),然后把每个序列翻转,问你把它变成单调递增的序列要翻转多少次 输入样例 ...

最新文章

  1. R语言merge函数左连接dataframe数据(Left (outer) join in R)、左连接必须将参数all设置(all.x = TRUE)、默认merge函数通过公共列名合并数据集
  2. 程序员的节日怎么过?
  3. stringbuffer mysql_javascript制作sql转换为stringBuffer的小工具
  4. rest api 可选参数_可选类型API
  5. web安全之SQL注入---第四章 如何进行SQL注入攻击
  6. Boost.Interprocess
  7. 幽默度识别第一名解决方案代码及说明
  8. 使用 IDEA 创建 Scala 工程
  9. Nutch数据集的目录具体内容
  10. 如何在 Ubuntu 上转换图像、音频和视频格式
  11. C语言自学笔记(10)
  12. Word编辑中的域代码详解
  13. winserver2008 安装elasticsearch
  14. 每个人都会有的第一次
  15. HC-SR501 人体红外感应模块 单片机
  16. origin出图重合部分变色了,怎么办?
  17. 名词诠释大全以及新站上线后,seo优化应该如何做?
  18. 《如何高效学习》总结
  19. 坯子库无法一键安装插件没用_坯子库插件集下载-坯子插件库下载v2020.1 官方最新版-西西软件下载...
  20. jquery用ajax提交表单

热门文章

  1. 平安京服务器维护无法发布新内容,《阴阳师》手游3月6日维护更新公告
  2. 测绘资质申请条件及办理资质要求
  3. C语言 strcat 函数 - C语言零基础入门教程
  4. <计算机视觉 六> 深度学习目标检测模型的评估标准
  5. InputStreamReader和OutputStreamWriter 的区别和用法
  6. Ant Design Vue 的 table 隐藏特定列
  7. 小米12pro天玑版和小米12pro哪个值得买 两者配置对比
  8. js实现获取前12个月份的数组
  9. 计算机创新创业1000字,大学生创新创业论文1000字
  10. 2023东莞理工学院计算机考研信息汇总