分析:

听说正解是FFT+线段树合并,然而我并不会...

我们来思考其他的方法。

我们要求的是连通块第k大的和

对于某一个连通块,对答案的贡献=val(Rank.K)

我们不好直接算出每个连通块的Rank.K是多少

但我们可以枚举一个limit for 1->w ,Σ(val(Rank.K)>=lim的连通块的个数)就等于答案

为什么呢,因为这样一个连通块就被统计了val(Rank.K)次。

剩下的进行树形DP,设dp[i][j]为以i为根的子树,选出j个权值>=limit的点的方案数。

那么最后统计答案的时候便是Σ(dp[i][j])(K<=j<=size(i))

复杂度N^3其实是不对的,但是卡一卡常数还是过得去的

代码:

  1. #include<set>
  2. #include<map>
  3. #include<queue>
  4. #include<stack>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cstring>
  8. #include<iostream>
  9. #include<algorithm>
  10. #define RG register int
  11. #define rep(i,a,b) for(RG i=a;i<=b;++i)
  12. #define per(i,a,b) for(RG i=a;i>=b;--i)
  13. #define ll long long
  14. #define inf (1<<29)
  15. #define maxn 2000
  16. #define add(x,y) e[++cnt].v=y,e[cnt].next=head[x],head[x]=cnt
  17. using namespace std;
  18. int n,m,cnt,w;
  19. int ss[maxn],isn[maxn],head[maxn];
  20. ll lim,ans;
  21. ll val[maxn],dp[maxn][maxn],sz[maxn];
  22. //dp[i][j] 在以i为根的子树,选择了j个权值大于等于lim的点的方案数
  23. const ll mo=;
  24. struct E{
  25. int v,next;
  26. }e[maxn<<];
  27.  
  28. inline int read()
  29. {
  30. int x=,f=;char c=getchar();
  31. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  32. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  33. return x*f;
  34. }
  35. inline int MO(int x,int v){x+=v;return x>=mo?x-mo:x;}
  36.  
  37. void dfs(int u,int fa)
  38. {
  39. sz[u]=(val[u]>=lim)?:;
  40. dp[u][sz[u]]=;
  41. for(int i=head[u];i;i=e[i].next)
  42. {
  43. int v=e[i].v;
  44. if(v==fa) continue;
  45. dfs(v,u);
  46. per(ii,sz[u],)
  47. if(dp[u][ii])
  48. per(j,sz[v],)
  49. if(dp[v][j])dp[u][ii+j]=MO(dp[u][ii+j],(dp[u][ii]*dp[v][j])%mo);
  50. sz[u]+=sz[v];
  51. }
  52. rep(i,m,sz[u]) ans=MO(ans,dp[u][i]);
  53. }
  54.  
  55. int main()
  56. {
  57. n=read(),m=read(),w=read();
  58. rep(i,,n) val[i]=read(),ss[val[i]]++;
  59. for(RG i=,u,v;i<n;i++) u=read(),v=read(),add(u,v),add(v,u);
  60. per(i,w,) ss[i]+=ss[i+];
  61. rep(i,,w)
  62. {
  63. if(ss[i]<m) break;
  64. memset(dp,,sizeof(dp));lim=i;
  65. dfs(,);
  66. }
  67. cout<<ans;
  68. return ;
  69. }

秘密袭击 [BZOJ5250] [树形DP]的更多相关文章

  1. [JZOJ4272] [NOIP2015模拟10.28B组] 序章-弗兰德的秘密 解题报告(树形DP)

    Description 背景介绍弗兰德,我不知道这个地方对我意味着什么.这里是一切开始的地方.3年前,还是个什么都没见过的少年,来到弗兰德的树下,走进了封闭的密室,扭动的封尘已久机关,在石板上知道了这 ...

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

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

  3. 【BZOJ5250】[九省联考2018]秘密袭击(动态规划)

    [BZOJ5250][九省联考2018]秘密袭击(动态规划) 题面 BZOJ 洛谷 给定一棵树,求其所有联通块的权值第\(k\)大的和. 题解 整个\(O(nk(n-k))\)的暴力剪剪枝就给过了.. ...

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

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

  5. Vijos p1770 大内密探 树形DP+计数

    4天终于做出来了,没错我就是这么蒟蒻.教训还是很多的. 建议大家以后编树形DP不要用记忆化搜索,回溯转移状态个人感觉更有条理性. 大神题解传送门 by iwtwiioi 我的题解大家可以看注释&quo ...

  6. BZOJ_2068_[Poi2004]SZP_树形DP

    BZOJ_2068_[Poi2004]SZP_树形DP Description Byteotian 中央情报局 (BIA) 雇佣了许多特工. 他们每个人的工作就是监视另一名特工. Byteasar 国 ...

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

    [九省联考2018]秘密袭击coat 研究半天题解啊... 全网几乎唯一的官方做法的题解:链接 别的都是暴力.... 要是n=3333暴力就完了. 一.问题转化 每个联通块第k大的数,直观统计的话,会 ...

  8. [loj2546][JSOI2018]潜入行动(树形DP)

    题目描述 外星人又双叒叕要攻打地球了,外星母舰已经向地球航行!这一次,JYY 已经联系好了黄金舰队,打算联合所有 JSOIer 抵御外星人的进攻. 在黄金舰队就位之前,JYY 打算事先了解外星人的进攻 ...

  9. poj3417 LCA + 树形dp

    Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Descripti ...

随机推荐

  1. pycharm安装mysql驱动包

    新的环境配置pycharm的项目时,发现pycharm不能连接到mysql数据库.由于安了java环境但是还没配置相关的库,并且jetbrains家的IDE一般都是java写的,于是猜想可能是java ...

  2. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  3. Python Day-1 练习

    作业1 要求:1.输入用户密码 2.认真成功后显示欢迎信息 3.输入三次锁定 代码如下: __author__ = 'zhang.ning' username = "zhangning&qu ...

  4. [转] createObjectURL方法 实现本地图片预览

    ie6 可以直接显示本本地路径的图片 如: <img src="file://c:/3.jpg" />  ~~~网上都说ie7就不支持这种文件系统路径的url,但测试 ...

  5. javascript OOP(下)(九)

    一.javascript模拟重载 java中根据参数类型和数量的区别来实现重载,javascript弱类型,没有直接的机制实现重载,javascript中参数类型不确定和参数个数任意,通过判断实际传入 ...

  6. System.Data.Entity.Internal.AppConfig"的类型初始值设定项引发异常

    在学习EF code First的小案例的时候,遇见了这个异常 <configSections> <!-- For more information on Entity Framew ...

  7. ubuntu ibus pinyin输入法异常

    http://blog.csdn.net/granvillegao/article/details/41115211 命令行运行 ibus-setup 在常规页面,取消了“在应用程序窗口中启用内嵌编辑 ...

  8. [转]利用ssh传输文件

    利用ssh传输文件 http://www.cnblogs.com/jiangyao/archive/2011/01/26/1945570.html 在linux下一般用scp这个命令来通过ssh传输文 ...

  9. chkconfig命令 centos 开机启动命令

    .利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的.就算手动执行 / ...

  10. HDFS-HA高可用 | Yarn-HA

    HDFS-HA HA(High Available),即高可用(7*24小时不中断服务) 单点故障即有一台机器挂了导致全部都挂了:HA就是解决单点故障,就是针对NameNode: 主Active:读写 ...