1 #include <bits/stdc++.h>
2 using namespace std;
3 #define rg register
4 #define ll long long
5 #define ld long double
6 #define FOR(i,a,b) for(register int i=a;i<=b;++i)
7 #define For(i,a,b) for(register int i=a;i>=b;--i)
8 static char buf[100000],*pa(buf),*pb(buf);
9 inline int rd();inline void wrt(int x);inline ll rdll();inline void wrtll(ll x);
10 #define gc getchar()
11 const ll INF=1E+17,modd=998244353,N=2E+3+10;
12
13 int T,n,fa[N],mx1[N];
14 ll a[N],t[N],f[N][N][2],bagg[N],bg[N][2],ans;
15 vector<int> chd[N],cd[N];
16 bool vis[N],vis1[N];
17
18 void ps(int u)
19 {
20 vis1[u]=1;
21 FOR(i,0,int(cd[u].size())-1)
22 {
23 int v=cd[u][i];
24 if(vis1[v])
25 {
26 chd[v].push_back(u);
27 fa[u]=v;
28 }
29 else ps(v);
30 }
31 }
32
33 void doo(int u)
34 {
35 vis[u]=1;
36 if(chd[u].size()==0)
37 {
38 f[u][0][1]=0;
39 f[u][0][0]=a[u];
40 f[u][1][0]=0;
41 mx1[u]=1;return;
42 }
43 FOR(i,0,int(chd[u].size())-1)
44 {
45 int v=chd[u][i];
46 if(!vis[v]) doo(v);
47 mx1[u]+=mx1[v];
48 }
49 //bb1
50 memset(bagg,3,sizeof(bagg));bagg[0]=0;
51 FOR(i,0,int(chd[u].size())-1) For(j,mx1[u],0)
52 {
53 bagg[j]=bagg[j]+f[chd[u][i]][0][0];
54 FOR(k,1,j)
55 bagg[j]=min(bagg[j],bagg[j-k]+f[chd[u][i]][k][0]);
56 }
57 FOR(i,0,mx1[u]) f[u][i][0]=min(f[u][i][0],bagg[i]);
58 //bb2
59 memset(bagg,3,sizeof(bagg));bagg[0]=0;
60 FOR(i,0,int(chd[u].size())-1) For(j,mx1[u],0)
61 {
62 bagg[j]=bagg[j]+min(f[chd[u][i]][0][0],f[chd[u][i]][0][1]);
63 FOR(k,1,j)
64 bagg[j]=min(bagg[j],bagg[j-k]+min(f[chd[u][i]][k][0],f[chd[u][i]][k][1]));
65 }
66 FOR(i,0,mx1[u]) f[u][i][0]=min(f[u][i][0],bagg[i]+a[u]);
67 //bb3
68 memset(bg,3,sizeof(bg));bg[0][0]=0;
69 FOR(i,0,int(chd[u].size())-1) For(j,mx1[u],0)
70 {
71 bg[j][1]=min(bg[j][1]+f[chd[u][i]][0][0],bg[j][0]+f[chd[u][i]][0][1]);
72 bg[j][0]=bg[j][0]+f[chd[u][i]][0][0];
73 FOR(k,1,j)
74 bg[j][1]=min(bg[j][1],bg[j-k][0]+f[chd[u][i]][k][1]),
75 bg[j][1]=min(bg[j][1],bg[j-k][1]+f[chd[u][i]][k][0]),
76 bg[j][0]=min(bg[j][0],bg[j-k][0]+f[chd[u][i]][k][0]);
77 }
78 FOR(i,0,mx1[u]) f[u][i][1]=min(f[u][i][1],min(bg[i][0],bg[i][1]));
79 return;
80 }
81
82 int main()
83 {
84 T=rd();while(T--){
85 memset(f,3,sizeof(f));
86 ans=INF;
87 memset(mx1,0,sizeof(mx1));
88 memset(vis,0,sizeof(vis));
89 memset(vis1,0,sizeof(vis1));
90 //f0
91 n=rd();
92 FOR(i,1,n) chd[i].clear(),cd[i].clear();
93 //FOR(i,1,n) cout<<chd[i].size()<<" ";cout<<endl;
94 FOR(i,1,n) a[i]=rdll();
95 FOR(i,1,n) t[i]=rdll();
96 FOR(i,1,n-1)
97 {
98 int u=rd(),v=rd();
99 cd[u].push_back(v);
100 cd[v].push_back(u);
101 }
102 ps(1);
103 doo(1);
104 FOR(i,0,mx1[1]) ans=min(ans,t[i]+min(f[1][i][0],f[1][i][1]));
105 cout<<ans<<endl;
106 }return 0;
107 }
108 inline int rd()
109 {
110 register int x(0);register char c(gc);bool bbb=1;
111 if(c=='-') {bbb=0;c=gc;}
112 while(c<'0'||c>'9')c=gc;
113 while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=gc;
114 if(bbb)return x;else return -x;
115 }
116 inline ll rdll()
117 {
118 register ll x(0);register char c(gc);bool bbb=1;
119 if(c=='-') {bbb=0;c=gc;}
120 while(c<'0'||c>'9')c=gc;
121 while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=gc;
122 if(bbb)return x;else return -x;
123 }

2022 CCPC 广州站 Alice and Her Lost Cat的更多相关文章

  1. python-广度优先搜索

    广度优先搜索 下面我们来来BFS算法策略: 比如:我们要从双子峰---->金门大桥,最短路径如何? 我们利用广度优先搜索来一步步求解,注意广度优先搜索在于的关键在于"广",也 ...

  2. 【译】深入理解Rust中的生命周期

    原文标题:Understanding Rust Lifetimes 原文链接:https://medium.com/nearprotocol/understanding-rust-lifetimes- ...

  3. Codeforces Round#630 div2 A~C题解

                                                                                                        ...

  4. Ceph 管理和使用

    ceph 管理 上次介绍了Ceph集群架构并且搭建了ceph集群,本节介绍ceph用户认证流程和挂载.cephFS.ceph RBD以及ceph mds高可用 1. ceph 授权流程和用户权限管理 ...

  5. 【docker专栏2】CentOS操作系统安装DockerCE

    目录 一.前置要求 二.更新软件源信息 三.安装 Docker-CE 四.卸载Docker CE 为大家介绍在CentOS操作系统中安装docker的过程,linux其他发行版本安装docker方法可 ...

  6. 几个Shell脚本的例子

    [例子:001]判断输入为数字,字符或其他 #!/bin/bash read -p "Enter a number or string here:" input case $inp ...

  7. 2018 CCPC 桂林站(upc复现赛)补题

    2018 CCPC 桂林站(upc复现赛)补题 G.Greatest Common Divisor(思维) 求相邻数的差值的gcd,对gcd分解素因子,对所有的素因子做一次遍历,找出最小答案. 几个样 ...

  8. CCPC 2020 长春站 部分简略题解

    gym链接:CCPC 2020 changchun site A: 题目大意:商店里有若干个充值档位和首充奖励,你有\(n\)块钱问最多能拿到多少水. 解:由于档位不多可以直接枚举,整个二进制枚举一下 ...

  9. cloudstack-4.1.5版本最全入门笔记【2022】

    cloudstack简介 CloudStack是一个开源的具有高可用性及扩展性的云计算平台.目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMwar ...

  10. How to code like a pro in 2022 and avoid If-Else

    在浏览文章的时候发现了一篇叙述有关if-else语句的文章,这篇文章作者是Thai Tran,他原文是用英语写的,然后看着文章浅显易懂,便尝试翻译成汉语.如有不妥还望指出. 原文链接:https:// ...

随机推荐

  1. Linux驱动:使用workqueue、tasklet处理中断

    Linux驱动:使用workqueue.tasklet处理中断 背景 中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化.但是,中断是一个随机事件,它随时会到来,如果关中断 ...

  2. Linux 修改 hostname

    背景 之前安装Linux系统的时候,没有明确指定.现在因为在做某些实验的时候,为了更好地区分我所登录的每一台服务器. 于是有了此文. 做法 首先修改/etc/hostname,修改为自己想要的名字xx ...

  3. 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署

    目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...

  4. 最新最全的BMS/EMS/PCS六大国产“储能方案”,不信你全都看过!

    作为国内领先的嵌入式产品平台提供商,创龙科技在"能源电力"行业拥有超过1000家客户,接下来就让小编向大家分享创龙科技推出的BMS/EMS/PCS"六大储能方案" ...

  5. 【ClickHouse】0:clickhouse学习1之数据引擎(数据库引擎,表引擎)

    ClickHouse提供了大量的数据引擎,分为数据库引擎.表引擎,根据数据特点及使用场景选择合适的引擎至关重要,这里根据资料做一些总结. 数据库引擎官方文档: https://clickhouse.t ...

  6. Servlet之Request和Response的快速上手

    阅读提示: 前置内容 MyBatis知识点总结 HTTP和Servlet入门 目录 1.Request和Response概述 2.Request对象 2.1 Request继承体系 2.2 Reque ...

  7. yb课堂 ECMAScript 6常见语法快速入门 《三十一》

    什么是ES 6 ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015).它的目标是使用JavaScri ...

  8. Oracle plsql中文字段乱码,where条件中文字段搜不到结果集

    设置系统环境变量 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.ZHS16GBK

  9. P2910

    #include<iostream> #include<utility> #include<vector> using namespace std; typedef ...

  10. acwing 875

    acwing875 题目大意:快速幂模板题 Train of thought 此题如果采用暴力的做法时间复杂度为0(n*b); n为样例的数目,b是幂 我们想要优化暴力的做法,首先样例的数量是没有办法 ...