BZOJ 5072: [Lydsy十月月赛]小A的树 树形dp
来源:互联网 发布:视觉算法工程师 编辑:程序博客网 时间:2024/06/08 12:35
...懒...
#include<cmath>#include<ctime>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<iomanip>#include<vector>#include<string>#include<bitset>#include<queue>#include<map>#include<set>using namespace std;inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}void print(int x){if(x<0)putchar('-'),x=-x;if(x>=10)print(x/10);putchar(x%10+'0');}const int N=5010;int last[N],ecnt;struct EDGE{int to,nt;}e[N<<1];inline void add(int u,int v){e[++ecnt]=(EDGE){v,last[u]};last[u]=ecnt;}int size[N],fa[N];int V[N],f[N][N],g[N][N],ff[N],gg[N],sf[N],sg[N];void dfs(int u){size[u]=1;f[u][1]=g[u][1]=V[u];for(int i=last[u];i;i=e[i].nt)if(fa[u]^e[i].to){fa[e[i].to]=u;dfs(e[i].to);memcpy(ff,f[u],sizeof(ff));memcpy(gg,g[u],sizeof(gg));for(int j=1;j<=size[u];++j)for(int k=1;k<=size[e[i].to];++k)ff[j+k]=max(ff[j+k],f[u][j]+f[e[i].to][k]),gg[j+k]=min(gg[j+k],g[u][j]+g[e[i].to][k]);size[u]+=size[e[i].to];for(int j=1;j<=size[u];++j)f[u][j]=ff[j],g[u][j]=gg[j];}for(int i=1;i<=size[u];++i)sf[i]=max(sf[i],f[u][i]),sg[i]=min(sg[i],g[u][i]);}void initial(){ecnt=0;memset(last,0,sizeof(last));memset(f,0,sizeof(f));memset(g,0X3f,sizeof(g));memset(sf,0,sizeof(sf));memset(sg,0X3f,sizeof(sg));}int main(){int T=read();while(T--){initial();int n=read();int Q=read();for(int u,v,i=1;i<n;++i){u=read();v=read();add(u,v);add(v,u);}for(int i=1;i<=n;++i)V[i]=read();dfs(1);while(Q--){int x=read(),y=read();if(y<=sf[x]&&y>=sg[x])puts("YES");else puts("NO");}puts("");}return 0;}/*19 44 11 51 23 23 66 76 89 60 1 0 1 0 0 1 0 13 27 34 09 5YESYESNONO*/
阅读全文
0 0
- bzoj 5072: [Lydsy十月月赛]小A的树 树形dp
- BZOJ 5072: [Lydsy十月月赛]小A的树 树形dp
- BZOJ5072[Lydsy十月月赛] 小A的树 解题报告【树上背包/树形DP】
- bzoj 5071: [Lydsy十月月赛]小A的数字
- bzoj 5071: [Lydsy十月月赛]小A的数字
- BZOJ 5072 [Lydsy 十月月赛] 树DP 解题报告
- [BZOJ]5074: [Lydsy十月月赛]小B的数字
- bzoj 5074: [Lydsy十月月赛]小B的数字
- bzoj 5076: [Lydsy十月月赛]小B的咒语
- bzoj 5071: [Lydsy十月月赛]小A的数字 乱搞
- bzoj5071: [Lydsy十月月赛]小A的数字
- bzoj5071 [Lydsy十月月赛]小A的数字
- BZOJ5071[Lydsy十月月赛] 小A的数字 解题报告
- 【乱搞】BZOJ5074 [Lydsy十月月赛]小B的数字
- 【bzoj5074】 [Lydsy十月月赛]小B的数字
- bzoj5074 [Lydsy十月月赛]小B的数字
- BZOJ 5071 [Lydsy 十月月赛] 排序 解题报告
- bzoj 4972 [Lydsy八月月赛]小Q的方格纸(前缀和)
- 3秒钟不懂你砍我:Toolbar,没有废话的纯教程
- 身份证验证java工具类(纠正网上流行代码错误)
- java基础知识--lambda表达式
- postgreSQL默认的隔离级别及修改
- Python爬虫抓取网页图片
- BZOJ 5072: [Lydsy十月月赛]小A的树 树形dp
- 关于ROS多机通信的总结 1.1
- SpringMVC从入门到精通(终结版)
- unsupported pickle protocol
- C#基础点滴_String
- 我的异常处理三之net.sf.json.JSONException: Unquotted string
- MySQL—事务和锁
- Laravel Eloquent模型分组查询并返回每个分组的数量 groupBy()
- 理解Python中的装饰器