這道題我們可以套路的設置f[i]為當前節點為根的滿足條件方案數,然後枚舉根,計算必須包含當前根的方案

但是似乎很難計算

所以我們可以搞一個前綴和,將聯通塊的最大數和最小數相減<=k的方案和<=k-1的方案計算一遍,減去就是答案

則f[i]=(f[son]+1)*… (f[son]滿足條件)

這樣子我們只需要判斷son是否滿足條件,因為son的所有子樹已經判斷過了

但是這樣可能會算重:當有多個節點的值與當前節點的值相同,都會算一遍

於是我們可以硬點只有根標號小的節點才會計算1次,大的直接跳過

代碼:

#include<bits/stdc++.h>
using namespace std;
#define jzm 19260817ll
typedef long long ll;
ll n,k,a[4010],v[8010],nxt[8010],h[4010],ec;
void add(ll x,ll y){v[++ec]=y;nxt[ec]=h[x];h[x]=ec;}
ll dfs(ll x,ll fa,ll p){
	ll ans=1;
	for(ll i=h[x];i;i=nxt[i])
		if(v[i]!=fa&&((a[v[i]]<a[p]||(a[v[i]]==a[p]&&p<v[i]))&&a[p]-a[v[i]]<=k))
			ans=(ans*(dfs(v[i],x,p)+1))%jzm;
	return ans;
}
int main(){
	freopen("lkf.in","r",stdin);
	freopen("lkf.out","w",stdout);
	scanf("%lld%lld",&n,&k);
	for(ll i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(ll i=1;i<n;i++){
		ll x,y;
		scanf("%lld%lld",&x,&y);
		add(x,y);add(y,x);
	}
	ll ans1=0;
	for(ll i=1;i<=n;i++)
		ans1=(ans1+dfs(i,0,i))%jzm;
	if(k!=0){
		k--;
		for(ll i=1;i<=n;i++)
			ans1=(ans1-dfs(i,0,i)+jzm)%jzm;
	}
	printf("%lld",ans1);
}

jzoj5913的更多相关文章

  1. <JZOJ5913>林下风气

    快乐dp 反正考场写挂 #include<cstdio> #include<cstring> #include<cctype> #include<iostre ...

随机推荐

  1. dedecms连表查询参照

    ixingmeib2c/ds/entity_clas/tc_coupon_index.ls.php下面的getIndexInfo()方法

  2. 摹客项目在2018年工信部"创客中国"名列10强并荣获二等奖

    2018“创客中国”互联网+大数据创新创业大赛(暨2018创客中国产业投资峰会)8月19日在厦门进行了总决赛.大赛由国家工业和信息化部.厦门市人民政府主办,厦门文广集团等承办.工信部信息中心领导.厦门 ...

  3. 如何配置JDK?

    有很多人,java都下载好,却因不会配置JDK,而无法编程.今天巩固就来教大家配置JDK.​ 第一步:将下载好的java放在D盘(最好不要占用C盘).​​​ 第二步:右击我的电脑,选择"属性 ...

  4. 在delphi XE5 里面编译kbmmw4.3

    Delphi XE5 仓促的发布了,虽然开始支持Android 开发了,但是经过试用,发现那个模拟器慢到无法用, 真机可以运行,但是调试也几乎无法用.由于XE5 的主要增加的是Android 的开发支 ...

  5. phonegap android插件,启动activity并返回值

    Your execute menthod is not quite right. When you do: return new PluginResult(PluginResult.Status.OK ...

  6. python类的继承-1

    #!/usr/bin/python3 #类定义 class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = ...

  7. 继承方法-->最终模式

    function inherit(Target,Origin){ function F(){}; F.prototype = Origin.prototype; // Targrt.prototype ...

  8. webuploader 文件上传插件 IE8/9 文件选择不上传

    IE8/9下文件上传是采用flash模式,一直发送http://xxx.xxx.xx.xx:8888/crossdomain.xml请求,状态码为404,原因是上传文件的服务器未配置crossdoma ...

  9. 有关在 Word 中撰写博客的帮助

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  10. Swift的Optional类型

    我们使用Swift这个苹果新推出的编程语言已经有一段时间了.其中的一个极大的优点就是苹果称为“optional types”的东西.几乎所有的objective-c程序员都知道用nil来表示某个引用类 ...