快乐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. python 删除文件

    import os 删除文件: os.remove() 删除空目录: os.rmdir() 递归删除空目录: os.removedirs() 递归删除目录和文件(类似DOS命令DeleteTree): ...

  2. 面向对象 part6 继承

    继承 js实现的是实现继承/也就是继承实际的方法 //主要依赖:原型链 //基本思路: 就是一个引用类型继承另一个引用类型的属性和方法 详细:构造函数,实例,原型之间的关系.每个构造函数都有一个原型对 ...

  3. Linux-使用syslog来记录调试信息

    1.有三个函数:openlog.syslog.closelog 2.一般的log信息都在操作系统的/var/log/messages这个文件中存储着,但是ubuntu中是在/var/log/syslo ...

  4. Lua与C++交互初探之C++调用Lua

    Lua与C++交互初探之C++调用Lua 自从学习了lua这个脚本语言之后,无时不想着将他与c/c++联系起来,看看他真正的威力.奈何水平有限,网上找的代码无论怎样都无法运行成功.我知道是我少了某一步 ...

  5. #JS# 如何判断一个字符串是否为日期格式

    var data = “2018-12-09”; //返回为false则是日期格式;isNaN(data)排除data为纯数字的情况(此处不考虑只有年份的日期,如‘2018’) if(isNaN(da ...

  6. Ubuntu目錄

    /         (这就是著名的根)├── bin         (你在终端运行的大多数程序,比如cp.mv...)├── boot         (内核放在这里,这个目录也经常被作为某个独立分 ...

  7. python代码技术优化

    numba 编译优化 from numba import jit @jit def eval_mcc(y_true, y_prob, threshold=False): idx = np.argsor ...

  8. 天融信(NAT)地址转换端口映射配置

    目的地址为公司的公网地址 服务:选择或者自己定义一个端口号,就是要映射到服务器上的那个端口号 目的地址转换为:服务器ip 目的端口转换为:选择定义的服务(端口号) 规则描述:随便写

  9. SQL count与distinct的结合使用

    select Score,(select count(distinct score) from Scores where score >= s.score) as Rank from Score ...

  10. xib下如何修改frame

    1.取消xib下Use Auto Layout 2.xcode->product->clean