【JZOJ4816】label
来源:互联网 发布:茗记4知乎 编辑:程序博客网 时间:2024/05/17 14:15
Description
给出一棵树,给每个节点赋值一个
Solution
20分:
40分:
我们发现可取
100分:
找规律发现,
Code
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<queue>#include<cmath>#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define N 101#define M 201#define MAX 10200#define mo 1000000007#define ll long longusing namespace std;int to[M],next[M],last[M],num=0;int K;int fa[N];void link(int x,int y){ num++; to[num]=y; next[num]=last[x]; last[x]=num;}int n,m;ll f[N][MAX],g[N][MAX],z[N][MAX];int p[N];int zz;ll sum(int x,int y){ if(y<=p[x]) return g[x][y]; else if(y<=m-p[x]+1) return (g[x][p[x]]+f[x][p[x]+1]*(y-p[x])%mo)%mo; else return (g[x][p[x]]+f[x][p[x]+1]*(m-2*p[x])%mo+z[x][y-m+p[x]])%mo;}void dfs(int x){ fo(i,1,zz) f[x][i]=1; for(int i=last[x];i;i=next[i]) { int v=to[i]; if(fa[x]!=v) { fa[v]=x; dfs(v); fo(j,1,zz) { ll tmp=0; tmp=(tmp+sum(v,max(j-K,0)))%mo; tmp=(tmp+sum(v,m)-sum(v,min(j+K,m+1)-1)+mo)%mo; if(!K) tmp=(tmp-f[v][j]+mo)%mo; f[x][j]=f[x][j]*tmp%mo; } } } fo(i,1,zz) if(f[x][i]==f[x][i+1]) {p[x]=i;break;} if(!p[x]) p[x]=zz; fo(i,1,zz) { g[x][i]=(g[x][i-1]+f[x][i])%mo; z[x][i]=(z[x][i-1]+f[x][p[x]-i+1])%mo; }}int main(){ freopen("label.in","r",stdin); freopen("label.out","w",stdout); int T; cin>>T; while(T--) { num=0; memset(last,0,sizeof(last)); memset(p,0,sizeof(p)); scanf("%d %d %d",&n,&m,&K); fo(i,1,n-1) { int x,y; scanf("%d %d",&x,&y); link(x,y); link(y,x); } zz=min(m,max((n-1)*K,2)); dfs(1); printf("%lld\n",sum(1,m)); }}
1 0
- [JZOJ4816]label
- 【JZOJ4816】label
- JZOJ4816. label
- NOIP提高组【JZOJ4816】label
- 【JZOJ4816】【NOIP2016提高A组五校联考4】label
- label
- Label
- label
- Label
- label
- Label
- label
- label
- label
- Label
- label
- label 调整label高度
- Label字体大小自适应label
- 针对加法、减法、乘法三种运算,每种运算都有两个操作数(int,int),返回值类型为int。在客户端选择三种算法进行测试。请根据策略模式设计其类图
- 常见三角函数与反三角函数
- 一个学弟的PCB绘制心得
- ubuntu 串口权限问题
- 389. Find the Difference-hash map/XOR
- 【JZOJ4816】label
- Java Executor并发框架(十二)Executor框架线程池BlockingQueue的三种实现区别
- HDOJ acm 1022 火车进站出站(栈系列)
- PostgreSQL学习笔记---1 源码编译安装PostgreSQL
- 三库 — 信息库 数据库 数据仓库
- hdu 1250 Hat's Fibonacci
- c++中class 中的this指针
- 多线程下单例模式的安全性
- libevent中的tail queue详细分析