Description

Solution

这道题O(nm)O(nm)的暴力显然把,只要DP加一个前缀和即可,
打完以后发现,对于每个点,它的f数组开头和结尾是对称的,中间是一样的数。
现在我们来思考一下为什么:
把问题转换一下:如果问题是绝对值<=k,那么很显然,叶子节点全是1,
往上一层,开头的(k-1)个和结尾的(k-1)个有变化,并且对称(显然),中间的依旧相同,
再往上,就有2(k-1)个不同,
所以到了根,开头最多有n(k-1)个不同的数,
所以,只要统计n(k-1)+1个数,其他数就已知了。
复杂度:O(n2k)O(n^2k)

Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define efo(i,q) for(int i=A[q];i;i=B[i][0])
#define iff() if(B[i][1]!=fa)
using namespace std;
typedef long long LL;
const int N=105,mo=1e9+7;
int read(int &n)
{char ch=' ';int q=0,w=1;for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());if(ch=='-')w=-1,ch=getchar();for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,m1;
LL t;
int a[N];
int B[2*N][2],A[N],B0;
LL f[N][N*N*2];
void link(int q,int w)
{B[++B0][0]=A[q];A[q]=B0,B[B0][1]=w;B[++B0][0]=A[w];A[w]=B0,B[B0][1]=q;
}
int max(int q,int w){return q>w?q:w;}
int min(int q,int w){return q<w?q:w;}
void dfs(int q,int fa)
{fo(i,1,1+m1*n)f[q][i]=1;efo(i,q)iff(){dfs(B[i][1],q);fo(j,1,m1*n+1){t=f[B[i][1]][m1*n+1]*min((m-m1*n-j-m1+1),m-2*m1*n)%mo+f[B[i][1]][m1*n]-f[B[i][1]][min(m1*n,j+m1-1)];f[q][j]=(f[q][j]*((f[B[i][1]][max(0,j-m1-(m1==0))]+f[B[i][1]][m1*n]+t)%mo))%mo;}}fo(i,2,m1*n)f[q][i]=(f[q][i]+f[q][i-1])%mo;
}
void dfs_bl(int q,int fa)
{fo(i,1,m)f[q][i]=1;efo(i,q)iff(){dfs_bl(B[i][1],q);fo(j,1,m)f[q][j]=(f[q][j]*((f[B[i][1]][max(0,j-m1)]+f[B[i][1]][m]-f[B[i][1]][min(m,j+m1-1+(m1==0))]+mo)%mo))%mo;}fo(i,2,m)f[q][i]=(f[q][i]+f[q][i-1])%mo;
}
int main()
{freopen("label.in","r",stdin);freopen("label.out","w",stdout);int q,w,_;read(_);while(_--){read(n),read(m),read(m1);B0=0;fo(i,1,n)A[i]=0;fo(i,1,n-1)read(q),read(w),link(q,w);if(m<=n*m1*2){dfs_bl(1,0);printf("%lld\n",f[1][m]);}else{dfs(1,0);printf("%lld\n",(f[1][m1*n]*2+f[1][m1*n+1]*(m-n*m1*2)+mo)%mo);}}return 0;
}

【JZOJ 4816】label相关推荐

  1. 【jzoj 4727】【NOIP2015模拟10.28B组】终章-剑之魂 {贪心}

    题目 Description [背景介绍] 古堡,暗鸦,斜阳,和深渊-- 等了三年,我独自一人,终于来到了这里-- "终焉的试炼吗?就在这里吗?"我自言自语道. "终焉的 ...

  2. 【JZOJ 4597】现世斩

    Description 异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变. 我们用一个n个点.m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被 ...

  3. 【jzoj 5101】凡喵识图 / Image Recognition(鸽笼原理)(模拟)

    凡喵识图 / Image Recognition 题目链接:jzoj 5101 题目大意 给你一些 2^64 大小的数,然后每插入一个数之前,询问原本有多少个数的二进制跟它的二进制恰好有三位不同. 思 ...

  4. 【jzoj 3290】【luogu P6085】Foodie / 吃货 JYY(数位DP)(欧拉回路)

    Foodie / 吃货 JYY 题目链接:jzoj 3290 / luogu P6085 题目大意 有 n 个点,有一些路径一定要走,有一些路径可以走可以不走,都有走的费用. 路径双向,然后问你从 1 ...

  5. 【jzoj 7207】缘木求鱼(数论)(高精)

    缘木求鱼 题目链接:jzoj 7207 题目大意 定义 f(x) 函数为开一个数组大小为 x 的线段树,它的最大下标. 要你求 l~r 范围内 f(x)/x 的最大值. 思路 首先几个东西要知道. 线 ...

  6. 【JZOJ 5776】【NOIP2008模拟】小x游世界树 (树)

    问题描述 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节时才能到达,然而现在已经春天了, ...

  7. 【JZOJ 4598】准备食物

    Description "~妖梦,我又饿了!" 魂魄妖梦身为西行寺家的专属庭师第二代兼大小姐的西行寺幽幽子的护卫,却承担了为幽幽子准备食物的任务.幽幽子是个非常贪吃的亡灵,所以妖梦 ...

  8. 【JZOJ 4598】 准备食物

    Description "~妖梦,我又饿了!" 魂魄妖梦身为西行寺家的专属庭师第二代兼大小姐的西行寺幽幽子的护卫,却承担了为幽幽子准备食物的任务.幽幽子是个非常贪吃的亡灵,所以妖梦 ...

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

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

  10. 【JZOJ 5405】【NOIP2017提高A组模拟10.10】Permutation

    Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...

最新文章

  1. 平方的观测值表概率_中央气象台:“三九”大概率不会比“二九”更冷
  2. 居然有人撸了一个网易云音乐云村,高手在民间!
  3. sourcetree 卡顿_Android卡顿性能监测方案对比
  4. 重塑世界的区块链技术你必须要懂得
  5. for-each循环
  6. 怎么真正入行Web前端行业?JavaScript五大新特性是什么?
  7. 避免将属性的可见属性层次结构用作用户定义的层次结构中的级别
  8. Linux终端基本命令
  9. 生成Ipa安装包的plist文件后生成下载链接
  10. Think in Java ---Chapter 8 多态 [基础的混凝土大厦]
  11. 红米note9pro刷鸿蒙,红米Note9Pro稳定版刷机包(官方系统固件升级包MIUI11)
  12. 计算机 word 节是什么,Word分节符的含义和使用方法详解-word技巧-电脑技巧收藏家...
  13. Odoo实施指南 连载三:成功案例
  14. discuz论坛快速登录、分享帐号一键登录方法
  15. python实例:井字棋
  16. 2020年了,IT外企还香吗?
  17. Windows下Openpose试运行环境配置流程
  18. 华为云微认证《搭建Discuz论坛网站》重点笔记
  19. [MFC] WS_EX_LAYERED 实现透明异形窗口(酷狗歌词、360加速球、窗口边缘阴影)
  20. sts 使用gradle_如何从STS和Gradle开始

热门文章

  1. QQ微信可以上网,但是浏览器上不了网怎么办?
  2. Error installing to Instantiated: name=AttachmentStore state=Described
  3. ESXi 6.7 CVE-2018-3646警告的处理
  4. 移动硬盘H盘损坏文件系统变成RAW如何恢复
  5. [每日一氵] Python 训练过程中,如何优雅的保存loss
  6. ExtJS4 时间在edge中显示为0NaN-NaN-NaN NaN:NaN
  7. 月末总结之大三大四规划(8.31)
  8. Asp 解析 XML并分页显示
  9. 《菜鸟教程》丨2D骨骼动画工具DragonBones的使用教程
  10. python 把矩阵变成一维_python矩阵转换为一维数组的实例