Description

Input

Output

Sample Input

【样例1 输入】

5 3 3
2 1 1 2 3
1 2
2 3
1 4
1 5

【样例2 输入】

10 2 3
2 1 1 3 1 2 3 3 1 3
1 2
2 3
2 4
2 5
2 6
5 7
1 8
8 9
1 10

Sample Output

【样例1 输出】

11

【样例2 输出】

435

Data Constraint

Hint


Solution

  • 我们枚举一个点为根,使它作为必选的第 K 大的点。

  • 判断以它为根为子树中比它大的点的数量是否大于 k−1k-1 ,满足即可进行树形DP。

  • 设 f[i][j]f[i][j] 表示在以 ii 为子树中以 ii 为第 jj 大的方案数。

  • 直接枚举转移即可,最后答案加上 d[i]∗f[i][k]d[i]*f[i][k] 。

  • 暴力跑得真慢……

Code

#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
const int N=1667,mo=64123;
int tot,s,k,ans;
int first[N],nex[N<<1],en[N<<1];
int d[N],f[N][N];
inline int read()
{int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X;
}
inline void insert(int x,int y)
{nex[++tot]=first[x];first[x]=tot;en[tot]=y;
}
void dfs(int x,int y)
{int pd=d[x]>d[s] || d[x]==d[s] && x>s;for(int i=1;i<=k;i++) f[x][i]=f[y][i-pd];for(int i=first[x];i;i=nex[i])if(en[i]^y) dfs(en[i],x);for(int i=1;i<=k;i++) f[y][i]=(f[y][i]+f[x][i])%mo;
}
int main()
{int n=read();k=read();read();for(int i=1;i<=n;i++) d[i]=read();for(int i=1;i<n;i++){int x=read(),y=read();insert(x,y);insert(y,x);}for(int i=1;i<=n;i++){int tot=1;for(int j=1;j<i;j++) tot+=d[j]>d[i];for(int j=i+1;j<=n;j++) tot+=d[j]>=d[i];if(tot<k) continue;memset(f[i],0,sizeof(f[i]));f[s=i][1]=1;for(int j=first[i];j;j=nex[j]) dfs(en[j],i);ans=(ans+d[i]*f[i][k]%mo)%mo;}printf("%d",ans);return 0;
}

JZOJ 5639. 【NOI2018模拟4.8】秘密袭击相关推荐

  1. [BZOJ5250][九省联考2018]秘密袭击(DP)

    5250: [2018多省省队联测]秘密袭击 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 3  Solved: 0 [Submit][Status] ...

  2. P4365 [九省联考2018]秘密袭击coat

    $ \color{#0066ff}{ 题目描述 }$ Access Globe 最近正在玩一款战略游戏.在游戏中,他操控的角色是一名C 国士 兵.他的任务就是服从指挥官的指令参加战斗,并在战斗中取胜. ...

  3. [luogu]P4365[九省联考]秘密袭击coat(非官方正解)

    题目背景 警告:滥用本题评测者将被封号 We could have had it all. . . . . . 我们本该,拥有一切 Counting on a tree. . . . . . 何至于此 ...

  4. JZOJ 5623. 【NOI2018模拟4.2】program

    Description Input Output Sample Input 10 5 8>6<2<>54< 4 7 1 10 4 4 2 9 8 10 Sample Ou ...

  5. JZOJ 5643. 【NOI2018模拟4.10】最小代价

    Description 给定一张n个点m条边的无向图,点编号1到n,每个点x有两个权值ax和bx.给定k,选出图中一个大小为k的点集S,使得S中任意两个点之间存在仅经过这个点集中的点的路径.S也存在两 ...

  6. JZOJ 5640. 【NOI2018模拟4.9】劈配

    Description Input Output 输出到文件 mentor.out 中. 按顺序输出每组数据的答案.对于每组数据,输出 2 行: • 第 1 行输出 n 个用空格隔开的正整数,其中第 ...

  7. JZOJ 5638. 【NOI2018模拟4.8】IIIDX

    Description Input Output Sample Input 4 2.0 114 514 1919 810 Sample Output 114 810 514 1919 Data Con ...

  8. JZOJ 5637. 【NOI2018模拟4.8】一双木棋

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

  9. JZOJ 5629. 【NOI2018模拟4.4】Map

    Description Rin是个特别好动的少女. 一天Rin来到了一个遥远的都市.这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其 ...

最新文章

  1. Activiti 笔记
  2. slurm任务调度系统部署和测试(一)
  3. Linux基本命令四(文件系统)
  4. 浏览器左上角的小图标怎么整不掉_Honeyview:蜂蜜浏览器
  5. js 取得数组下标_剖析JS和Redis的数据结构设计:数组
  6. 聊聊flink的Table Formats
  7. 4207. 最长合法括号子序列
  8. xpwifi热点设置android,xp设置共享wifi热点方法分享
  9. Admin5推荐软文推广采用“链接标准化”
  10. 【无标题】灵遁者沉思:每个人都有“第三只眼睛”
  11. 前端框架学习-layui
  12. 十九、D触发器做二分频器解析:
  13. 实验——子网划分与路由器配置
  14. STM32标准库的引入视频课程-第3季第6部分-朱有鹏-专题视频课程
  15. 微信和淘宝最赤裸的分析
  16. 纯html css动画效果,8个超震撼的HTML5和纯CSS3动画源码
  17. 加加魔兽助手Ver7.65去广告方法!
  18. 冰冰学习笔记:string类的简单模拟
  19. 东南大学计算机2020初试成绩公布,东南大学2020考研复试分数线已公布
  20. iOS开发 转屏控制 (shouldAutorotate/supportedInterfaceOrientations)不起作用

热门文章

  1. 监测磁盘文件是否被修改程序
  2. Python学习笔记: Python 标准库概览二
  3. Python学习笔记:Day 16 编写移动App
  4. Git学习笔记;Git bash 库同步问题
  5. CentOS x64上Matlab R2015b的镜像安装方法与卸载
  6. java web 进程通信_RMI网络编程开发之一 JAVA“进程间”通信方式
  7. 【Python】列表 list 添加元素的几种方法
  8. [云炬创业基础笔记] 第四章测试8
  9. 科大星云诗社动态20210228
  10. 科大星云诗社动态20210822