博主蒟蒻,目前还不会动态dp,所以下面说的是一个并不优秀的暴力,我会补的!

我们考虑按权值从大到小依次点亮每个点,相同权值可以同时点亮,每次点亮后,我们进行一次树形背包。

处理出$f[i][j]$表示i的子树中有j个亮点的方案数,然后就AC了。

有两个小优化,一个是将背包的枚举上限设为min(size[x],K),此处size[x]为子树中点亮的点的的个数。

还有就是我们可以把大于K的dp值都和K合并到一起,因为我们需要的是所有大于等于K的方案数。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define N 1700
#define mod 64123
using namespace std;
int e=,head[N];
struct edge{
int v,next;
}ed[N<<];
void add(int u,int v){
ed[e].v=v;
ed[e].next=head[u];
head[u]=e++;
}
int n,m,K,a[N],pp[N];
int f[N][N],g[N],size[N],vis[N],ans,sum,last;
bool cmp(int a,int b){return ::a[a]>::a[b];}
void dfs(int x,int fa){
for(int i=;i<=K;i++)f[x][i]=;
size[x]=vis[x];f[x][size[x]]=;
for(int i=head[x];i;i=ed[i].next){
int v=ed[i].v;
if(v==fa)continue;
dfs(v,x);
int up1=min(size[x],K),up2=min(size[v],K);
for(int j=min(up1+up2,K);~j;j--)g[j]=;
for(int j=up1;~j;j--)
for(int k=up2;~k;k--)
(g[min(j+k,K)]+=1ll*f[x][j]*f[v][k]%mod)%=mod;
size[x]+=size[v];
up1=min(size[x],K);
for(int j=;j<=up1;j++)f[x][j]=g[j];
}
f[x][]++;
(sum+=f[x][K])%=mod;
}
int main(){
scanf("%d%d%d",&n,&K,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
pp[i]=i;
}
sort(pp+,pp+n+,cmp);
for(int i=,u,v;i<n;i++){
scanf("%d%d",&u,&v);
add(u,v);add(v,u);
}
for(int i=;i<=n;){
do vis[pp[i]]=,i++;
while(i<=n&&a[pp[i]]==a[pp[i-]]);
if(i<K)continue;
sum=;dfs(,);
(ans+=1ll*(sum-last+mod)*a[pp[i-]]%mod)%=mod;
last=sum;
}
printf("%d\n",ans);
return ;
}

bzoj5250 [2018多省省队联测]秘密袭击的更多相关文章

  1. BZOJ_5249_Luogu_P4364_[2018多省省队联测]_IIIDX_九省联考2018_JLOI2018_线段树

    BZOJ_5249_[2018多省省队联测]IIIDX_线段树 Description [题目背景] Osu听过没?那是Konano最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐 ...

  2. 5249: [2018多省省队联测]IIIDX

    5249: [2018多省省队联测]IIIDX 链接 分析: 贪心. 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树.首先满足前面必须至少有siz[i]个权值没选,如果存 ...

  3. bzoj 5249 [2018多省省队联测] IIIDX

    bzoj 5249 [2018多省省队联测] IIIDX Link Solution 首先想到贪心,直接按照从大到小的顺序在后序遍历上一个个填 但是这样会有大问题,就是有相同的数的时候,会使答案不优 ...

  4. bzoj 5248: [2018多省省队联测]一双木棋

    Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何棋子, 两人轮流在格子上落子,直到填满棋盘时结束.落子的规则是:一个格子可以落子 ...

  5. bzoj 5251: [2018多省省队联测]劈配

    Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayi ...

  6. bzoj5252 [2018多省省队联测]林克卡特树

    斜率优化树形dp?? 我们先将问题转化成在树上选K+1条互不相交路径,使其权值和最大. 然后我们考虑60分的dp,直接维护每个点子树内选了几条路径,然后该点和0/1/2条路径相连 然后我们会发现最后的 ...

  7. bzoj5251 [2018多省省队联测]劈配

    直接网络流模拟即可AC. 可持久化+暴力=90分, 可持久化+二分=30分, 暴力加边+二分=100分. 我也很无奈啊. Ivan便涨红了脸,额上的青筋条条绽出,争辩道,“memcpy也是可持久化…… ...

  8. bzoj5253 [2018多省省队联测]制胡窜

    后缀自动机挺好毒瘤的题. 我们考虑哪些切点是不合法的.肯定是所有的匹配串都被切了. 我们考虑第一个切口的位置. 当第一个切口在第一个出现位置前时,第二个切口必须切掉所有的串. 当第一个切口在$l_{i ...

  9. bzoj5249 [2018多省省队联测]IIIDX

    转化一下问题变成给定一棵树,一个序列,求父亲的权值小于子树的最大方案. 直接贪心会在有重复权值时出现错误,我们考虑用线段树优化贪心. 将序列从小到大排序,线段树上每个点记录他和他右边当前还可用的权值, ...

随机推荐

  1. N-Queens(N皇后问题)

    题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...

  2. JVM的运行原理以及JDK 7增加的新特性(二)

    JVM结构 Java编写的代码会按照下图的流程来执行 类装载器装载负责装载编译后的字节码,并加载到运行时数据区(Runtime Data Area),然后执行引擎执行会执行这些字节码. 类加载器(Cl ...

  3. Unknown entity: org.jbpm.services.task.audit.TaskEventImpl

    1. use this persistence.xml - simply copy it into src/main/resources/META-INF please note the name o ...

  4. 星云链开发dapp,赚取100nas(价值近万)

    前几天星云链主网正式上线,现在只要成功提交一个dapp即可获得100nas,1个nas 75元人民币左右.编写合约只要会javascript就可以写.活动持续两个月左右.下面简单介绍一下流程 首先注册 ...

  5. STL容器的基本特性和特征

    1. STL有6种序列容器类型(1)vector它提供对元素的随即访问,在尾部添加和删除元素的时间是固定的,在头部或中部插入和删除元素的复杂度为线性时间.(2)deque在文件中声明.是双端队列,支持 ...

  6. Install OpenCV 3.0 and Python 2.7+ on Ubuntu

    为了防止原文消失或者被墙,转载留个底,最好还是去看原贴,因为随着版本变化,原贴是有人维护升级的 http://www.pyimagesearch.com/2015/06/22/install-Open ...

  7. Bootstrap免费模板站推荐

    第一个:http://startbootstrap.com/ 第二个:http://www.bootstrapzero.com/ 第三个:https://bootswatch.com/ 第四个:htt ...

  8. jsoup 使用总结3--高级用法之 not

    jsoup 使用总结3--高级用法之 not 大部分时候,我们使用jsoup解析网页的时候,都是直接找到某一类元素,或者按某种selector查询:具体使用方法可以参考jsoup官网文档 例子代码: ...

  9. python爬虫入门(一)urllib和urllib2

    爬虫简介  什么是爬虫? 爬虫:就是抓取网页数据的程序. HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的 ...

  10. JavaScript的数组知识案例之随机点名器

    本次分享JavaScript主要知识点涉及到for循环.if选择结构判断语句.数组的定义.定时器.清除定时器.日期对象的使用. 执行后效果图: 思路: 1.网页结构搭建: HTML 2.网页布局美化: ...