<JZOJ5913>林下风气
快乐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>林下风气的更多相关文章
- JZOJ 5913. 林下风气
Description 里口福因有林下风气,带领全国各地高校掀起了一股AK风,大家都十分痴迷于AK.里口福为了打击大家的自信心,出了一道自以为十分困难的题目.里口福有一棵树,第i个节点上有点权ai,他 ...
- jzoj5913
這道題我們可以套路的設置f[i]為當前節點為根的滿足條件方案數,然後枚舉根,計算必須包含當前根的方案 但是似乎很難計算 所以我們可以搞一個前綴和,將聯通塊的最大數和最小數相減<=k的方案和< ...
- [JZOJ NOIP2018模拟10.19]
T1写炸了今天,期望70却落了个20...连链上的都没有写对 T3什么什么线段树分治套AC自动机,表示我完全自闭了,幸好考场上没有杠T3 总体比赛还是比较舒服,暴力分给的蛮足的,不像昨天那样 T1:林 ...
随机推荐
- keras猫狗图像识别
这里,我们介绍的是一个猫狗图像识别的一个任务.数据可以从kaggle网站上下载.其中包含了25000张毛和狗的图像(每个类别各12500张).在小样本中进行尝试 我们下面先尝试在一个小数据上进行训练, ...
- Maven--Maven 安装最佳实践
1.设置 MAVEN_OPTS 环境变量 运行 mvn 命令实际上是执行了 Java 命令,既然是运行 Java,那么运行 Java 命令可用的参数当然也应该在运行 mvn 命令时使用.这个时候,MA ...
- 关于Linux下Oracle安装后启动的问题
1.首先,切换成oracle用户,启动监听服务.(中间的横杠必须加上,不然会出现command not found 的错误) 命令1:su - oralce 命令2:lsnrctl start 参 ...
- Python 学习笔记:Python 操作 SQL Server 数据库
最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...
- Web前端学习方向
第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的 ...
- 计量经济与时间序列_ACF自相关与PACF偏自相关算法解析(Python,TB(交易开拓者))
1 在时间序列中ACF图和PACF图是非常重要的两个概念,如果运用时间序列做建模.交易或者预测的话.这两个概念是必须的. 2 ACF和PACF分别为:自相关函数(系数)和偏自相关函数(系数). ...
- 用JS打开新窗口,防止被浏览器阻止的方法
相信做web前端或者使用JS的朋友都会遇到需要在新窗口打开页面的情况,现在浏览器大都具有弹出窗口拦截功能,所以传统的window.open()不再那么好用了.借鉴于网上查到的方法和我个人的实践,把弹出 ...
- python基础——异常处理及断言
python常见的异常类型? 异常有很多种类型,常见的由语法错误(SyntaxError).类型错误(TypeError).名字错误(NameError)等等,但我们要知道的是异常本身就是一个类的实例 ...
- [HNOI2019]JOJO(KMP自动机+主席树)
一道神仙题,考察选手对KMP的深入理解. 先考虑没有2操作的做法.设每一段为一个二元组(x,c),考虑一段前缀匹配后缀,除了第一段的字符,其他段的二元组(x,c)必须相等,所以可以将其视为特殊字符进行 ...
- 跟踪路由(tracert)及ping命令
由于最近学校网络不好,老是有问题,加上最近写了个数据展示系统,要部署到买的域名下,用到了这两个命令 首先,一台服务器,一台工作站,一个笔记本(我的,来测试ip是否通的) 服务器已经部署了三个网站(一个 ...