快乐dp

反正考场写挂

#include<cstdio>
#include<cstring>
#include<cctype>
#include<iostream>
#define MOD 19260817
#define LL long long
template <class T>inline void read(T &X)
{
X=;int W=;char ch=;
while(!isdigit(ch))W|=ch=='-',ch=getchar();
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
X=W?-X:X;return;
}
int a[],n,k,head[],f[][][];//j最小值k最大值
int cnt=,mn,mx,ans;
bool boo[];
struct node{int to,next;}edge[];
void add(int u,int v)
{
edge[++cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt;
}
void dfs(int x,int fa)
{
if(mn==mx && a[x]==mn) f[x][][]=; else
if(a[x]==mx && a[x]==mn) f[x][][]=f[x][][]=f[x][][]=; else
if(a[x]==mx) f[x][][]=; else
if(a[x]==mn) f[x][][]=; else f[x][][]=;
for(int i=head[x];i;i=edge[i].next)
{
int to=edge[i].to;
if(to!=fa)
{
dfs(to,x);
f[x][][]=f[x][][]* ( (LL)f[to][][] +f[to][][]+f[to][][]+f[to][][]+ )%MOD;
f[x][][]=(f[x][][]+ (LL)f[x][][] * (f[to][][]+f[to][][]) )%MOD;
f[x][][]=(f[x][][]+ (LL)f[x][][] * (f[to][][]+f[to][][]) )%MOD;
f[x][][]=(f[x][][]+ (LL)f[x][][] *f[to][][])%MOD; f[x][][]=(LL)f[x][][] * (f[to][][]+f[to][][]+)%MOD;
f[x][][]=(f[x][][]+ (LL)f[x][][] *f[to][][])%MOD; f[x][][]=(LL)f[x][][] * (f[to][][]+f[to][][]+)%MOD;
f[x][][]=(f[x][][]+ (LL)f[x][][] *f[to][][])%MOD; f[x][][]=(LL)f[x][][] *(f[to][][]+)%MOD;
}
}
if(a[x]<mn || a[x]>mx) f[x][][]=f[x][][]=f[x][][]=f[x][][]=;
}
int main()
{
// freopen("lkf.in","r",stdin);
// freopen("lkf.out","w",stdout);
read(n),read(k);
for(int i=;i<=n;i++)
read(a[i]),boo[a[i]]=true;
for(int i=;i<n;i++)
{
int x,y ;
read(x),read(y);
add(x,y),add(y,x);
}
for(int i=;i+k<=n;i++)
if(boo[i] && boo[i+k])//差为k a[i]都小于n!
{
mn=i,mx=i+k;//差为k 设为min&max
memset(f,,sizeof(f));
dfs(,);
for(int j=;j<=n;j++) ans=(ans+f[j][][])%MOD;
}
printf("%d",ans);
return ;
}

<JZOJ5913>林下风气的更多相关文章

  1. JZOJ 5913. 林下风气

    Description 里口福因有林下风气,带领全国各地高校掀起了一股AK风,大家都十分痴迷于AK.里口福为了打击大家的自信心,出了一道自以为十分困难的题目.里口福有一棵树,第i个节点上有点权ai,他 ...

  2. jzoj5913

    這道題我們可以套路的設置f[i]為當前節點為根的滿足條件方案數,然後枚舉根,計算必須包含當前根的方案 但是似乎很難計算 所以我們可以搞一個前綴和,將聯通塊的最大數和最小數相減<=k的方案和< ...

  3. [JZOJ NOIP2018模拟10.19]

    T1写炸了今天,期望70却落了个20...连链上的都没有写对 T3什么什么线段树分治套AC自动机,表示我完全自闭了,幸好考场上没有杠T3 总体比赛还是比较舒服,暴力分给的蛮足的,不像昨天那样 T1:林 ...

随机推荐

  1. matlab代码学习_2018-7-28

    1.核范数||A|| * 是指矩阵奇异值的和,英文称呼叫Nuclear Norm.matlab code:[s, u, v] = svd(A); nulear_norm = sum(diag(s)); ...

  2. 测试mvn -v 时报错,原因

    当安装完maven后在cmd命令框通过mvn -v 可以判断maven环境变量是否安装成功,但我安装配置完环境变量后执行报错如图 原因:配置的jdk的环境变量不符合maven最低要求(我配置的是jdk ...

  3. Kali 时间修改

    前言 装了新版本的 Kali 之后发现默认的时间和实际的时间不太一样 查了资料说 linux 的默认时间是格林威治时间,即从本初子午线为0时区 以下是 kali 修改时间的方法 1.tzselect ...

  4. 支付宝H5支付demo

    支付宝H5支付 首先我们必须注册一个支付宝应用(本案例就直接用支付宝的沙箱环境,这个沙箱也就是支付宝提供给开发者的一个测试环境) 登录地址:https://open.alipay.com/platfo ...

  5. iTOP-3399开发板搭建Android编译坏境

    基于迅为iTOP-3399开发板2.1 装 安装 d android  源码依赖包登录进 Ubuntu 系统,输入“ctrl+alt+t”,打开超级终端,使用“su root”命令,切换到 root ...

  6. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:数据集基本使用方法

    import tempfile import tensorflow as tf # 1. 从数组创建数据集. input_data = [1, 2, 3, 5, 8] dataset = tf.dat ...

  7. 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇一:HttpClient的简单使用)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一: ...

  8. [CTS2019]随机立方体(容斥+组合数学)

    这题七次方做法显然,但由于我太菜了,想了一会发现也就只会这么多,而且别的毫无头绪.发现直接做不行,那么,容斥! f[i]为至少i个极值的方案,然后这里需要一些辅助变量,a[i]表示选出i个三维坐标均不 ...

  9. redis数据库写入数据时提示redis.exceptions.ResponseError错误

    今天运行Django项目在redis数据库写入数据时提示如下错误: ERROR log 228 Internal Server Error: /image_code/cf9ccd75-d274-45c ...

  10. vue项目post、put、delete、get向java后端传数组

    通常我们向后端发送数据有两种方式 get.post,后又restful风格出现,又有put.delete等传参方式.但是对于我们来说他们的传参本质还是只有get和post的两种,即 get.delet ...