首页 > 其他分享 >E62 树形DP P8677 [蓝桥杯 2018 国 A] 采油

E62 树形DP P8677 [蓝桥杯 2018 国 A] 采油

时间:2024-10-10 14:24:35浏览次数:7  
标签:P8677 int back 蓝桥 2018 man

视频链接:

 

 

P8677 [蓝桥杯 2018 国 A] 采油 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// 树形DP+贪心 O(nlogn)
#include<bits/stdc++.h>
#define N 100010
using namespace std;

vector<int> e[N];
int n,B[N],S[N],f[N],len;
struct man{int b,s;};
bool cmp(man x,man y){
  return x.b-x.s>y.b-y.s;
}

void dfs(int u,int fa){
  vector<man> t;
  t.push_back({B[u],S[u]});
  for(auto v:e[u]){
    if(v==fa) continue;
    dfs(v,u);
    S[u]+=S[v];
    t.push_back({f[v],S[v]});
  }
  sort(t.begin(),t.end(),cmp);
  for(auto i:t) f[u]+=i.s;
  f[u]+=max(t.back().b-t.back().s,0);
}
int main(){
  scanf("%d",&n);
  for(int i=1;i<=n;++i)scanf("%d",&B[i]);
  for(int i=1;i<=n;++i)scanf("%d",&S[i]);
  for(int i=2,a,b;i<=n;++i){
    scanf("%d%d",&a,&b);
    e[i].push_back(a),e[a].push_back(i);
    len+=b*2;
  }
  dfs(1,0);
  printf("%d %d\n",len,f[1]);
}

 

// 贪心 O(nlogn)
#include<bits/stdc++.h>
#define N 100010
using namespace std;

int n,B[N],S[N],t[N],len,ans;

int main(){
  scanf("%d",&n);
  for(int i=1;i<=n;++i)scanf("%d",&B[i]);
  for(int i=1;i<=n;++i)
    scanf("%d",&S[i]),ans+=S[i],t[i]=B[i]-S[i];
  for(int i=2,a,b;i<=n;++i){
    scanf("%d%d",&a,&b);
    len+=b*2;
  }
  sort(t+1,t+n+1);
  ans+=max(t[1],0);
  printf("%d %d\n",len,ans);
}

 

标签:P8677,int,back,蓝桥,2018,man
From: https://www.cnblogs.com/dx123/p/18449381

相关文章

  • 【题目解析】蓝桥杯23国赛C++中高级组 - 斗鱼养殖场
    【题目解析】蓝桥杯23国赛C++中高级组-斗鱼养殖场题目链接跳转:点击跳转前置知识:了解过基本的动态规划。熟练掌握二进制的位运算。题解思路这是一道典型的状压动态规划问题。设\(dp_{i,j}\)表示遍历到第\(i\)行的时候,当前行以\(j_{(base2)}\)的形式排列乌龟可以构......
  • 【蓝桥杯】“萌新首秀”全国高校新生编程排位赛3
    一、下一次生日题目下一次生日 题目分析闰年,四年一次,今年是闰年,那下一个闰年就是四年后代码#includeusingnamespacestd;intmain(){cout<<"2028";return0;}二、遗失的数字题目遗失的数字  题目分析用一个数组来记录数组A[N]出现的数字,如果......
  • JOI Open 2018
    T1BubbleSort2题意:给定一个长度为\(n\)的序列\(a\),进行\(q\)次修改,第\(i\)次将第\(x_i\)个元素的值修改为\(y_i\)。对于每次操作后,你都需要求出,如果此时对序列进行冒泡排序,需要多少次冒泡才能完成排序。\(n\le5\times10^5\)。序列有序意味着,每个数前面都没......
  • 2018_11_02_04
    vue-cli案例constpath=require('path');functionresolve(dir){returnpath.join(__dirname,dir);}consttargetUrl='[地址]';module.exports={//Projectdeploymentbase//Bydefaultweassumeyourappwillbedeployedatthe......
  • 2018_11_02_03
    plugin插件注册importPickerComponentfrom'./picker.vue';let$vm;exportdefault{install(Vue,options){if(!$vm){constpickerPlugin=Vue.extend(PickerComponent);$vm=newpickerPlugin({el:document.createElement......
  • 2018_11_02_02
    jsxJSX这部分内容是在参考文章:在vue中使用jsx语法中提炼出来的,就是跟着敲代码跑了一遍.基本就明白了什么是JSX?JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析.使用......
  • 2018_11_02_01
    ES5&ES6写法对照表(react)来源:ReactonES6+React/ReactNative的ES5ES6写法对照表class定义语法值得注意的是,我们已经删除了两个括号和一个后缀分号,而对于每个声明的方法,我们都省略了一个冒号,一个function关键字和一个逗号。classPhotoextendsReact.Component......
  • 2018_10_28_01
    动态替换图片最简单的示例<divclass="img-wrapper"><divonclick='replacement'><imgsrc='[图片1]'></div><!-----------------><!--忽略同类型代码.--><!----------------->......
  • 2018_10_31_02
    vuepress侧边栏module.exports={themeConfig:{sidebar:{//docs文件夹下面的accumulate文件夹文档中md文件书写的位置(命名随意)'/accumulate/':['/accumulate/',//accumulate文件夹的README.md不是下拉框形式{ti......
  • 2018-11-05
    使用Flexible实现手淘H5页面的终端适配lib-flexible再聊移动端页面的适配如何在Vue项目中使用vw实现移动端适配!(function(t,document){varn=document.documentElement,r=t.devicePixelRatio||1;functioni(){vart=n.clientWidth/10;n.......