luogu

这里不妨考虑每个点的贡献,即求出每个点在多少个联通块中为第\(k\)大的(这里权值相同的可以按任意顺序排大小),然后答案为所有点权值\(*\)上面求的东西之和

把比这个点大的点看成\(1\),小于等于他的看成\(0\),那么就是要求出包含枚举的那个点并且权值和为\(k-1\)的联通块个数,可以树型\(dp\),设\(f_{x,j}\)表示联通块最上面的点为\(x\)并且权值和为\(j\)的联通块数,转移树型背包即可,具体细节见代码.复杂度可以做到\(O(nk)\)

所以总复杂度为\(O(n^2k)\) ×

所以总复杂度为\(O(\text{能过})\) √

正解?咕了

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define LL long long
#define uLL unsigned long long
#define db double using namespace std;
const int N=1666+10,mod=64123;
int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
void ad(int &x,int y){x+=y,x-=x>=mod?mod:0;}
int to[N<<1],nt[N<<1],hd[N],tot=1;
void add(int x,int y)
{
++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot;
++tot,to[tot]=x,nt[tot]=hd[y],hd[y]=tot;
}
int n,kk,w,rt,a[N],p[N],rk[N],sz[N],f[N][N],g[N];
bool cmp(int aa,int bb){return a[aa]>a[bb];}
void dp(int x,int ffa)
{
int va=rk[x]<rk[rt];
sz[x]=va;
f[x][va]=1;
for(int i=hd[x];i;i=nt[i])
{
if(i==ffa) continue;
int y=to[i];
dp(y,i^1);
ad(f[y][0],1);
for(int j=0;j<=sz[x];++j)
for(int k=0;k<=sz[y]&&j+k<=kk;++k)
ad(g[j+k],1ll*f[x][j]*f[y][k]%mod);
sz[x]=min(sz[x]+sz[y],kk);
for(int j=0;j<=sz[x];++j)
f[x][j]=g[j],g[j]=0;
}
} int main()
{
n=rd(),kk=rd(),w=rd();
for(int i=1;i<=n;++i) a[i]=rd(),p[i]=i;
sort(p+1,p+n+1,cmp);
for(int i=1;i<=n;++i) rk[p[i]]=i;
for(int i=1;i<n;++i) add(rd(),rd());
int ans=0;
for(int i=1;i<=n;++i)
{
rt=i;
dp(i,0);
ad(ans,1ll*a[i]*f[i][kk-1]%mod);
for(int j=1;j<=n;++j)
memset(f[j],0,sizeof(int)*(sz[j]+1));
}
printf("%d\n",ans);
return 0;
}

luogu P4365 [九省联考2018]秘密袭击coat的更多相关文章

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

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

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

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

  3. 并不对劲的复健训练-bzoj5250:loj2473:p4365:[九省联考2018]秘密袭击

    题目大意 有一棵\(n\)(\(n\leq 1666\))个点的树,有点权\(d_i\),点权最大值为\(w\)(\(w\leq 1666\)).给出\(k\)(\(k\leq n\)),定义一个选择 ...

  4. 解题:九省联考2018 秘密袭击CoaT

    题面 按照*Miracle*的话来说,网上又多了一篇n^3暴力的题解 可能是因为很多猫题虽然很好,但是写正解性价比比较低? 直接做不可做,转化为统计贡献:$O(n)$枚举每个权值,直接统计第k大大于等 ...

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

    Description 题库链接 给出一棵 \(n\) 个点的树,每个点有点权.求所有联通块的权值 \(k\) 大和,对 \(64123\) 取模. \(1\leq n,k\leq 1666\) So ...

  6. [LOJ #2473] [九省联考2018] 秘密袭击coat

    题目链接 洛谷. LOJ,LOJ机子是真的快 Solution 我直接上暴力了...\(O(n^2k)\)洛谷要\(O2\)才能过...loj平均单点一秒... 直接枚举每个点为第\(k\)大的点,然 ...

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

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

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

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

  9. LuoguP4365 [九省联考2018]秘密袭击

    https://zybuluo.com/ysner/note/1141136 题面 求一颗大小为\(n\)的树取联通块的所有方案中,第\(k\)个数之和. \(n\leq1,667,k\leq n\) ...

随机推荐

  1. vue-cli脚手架构建了项目,想去除Eslint验证,如何设置?

    vue-cli脚手架构建了项目,想去除Eslint验证,如何设置? 在webpack.base.conf.js里面删掉下面: preLoaders: [ { test: /\.vue$/, loade ...

  2. Python 图形界面元素

    from tkinter import * import os def button_click1(): try: filePath = r'D:\CloudMusic' os.system(&quo ...

  3. mysql 添加用户 - 设置远程登录/本地登陆的权限

    默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户: mysql> GRANT A ...

  4. java初级之数组详解

    一,数组的概念: 数组是为了存储同一种数据多个元素的集合,也可以看成是一个容器,数组既可以存储基本数据类型,也可以存储引用数据类型,数组是为了存储同种数据类型的多个值. 1.1.1,一维数组重点: 数 ...

  5. Selenium 2自动化测试实战24(webdriver原理)

    一.webdriver原理 webdriver是按照Server-Client的经典设计模式设计的.Server端就是Remote Server,可以是任意的浏览器.当我们的脚本启动浏览器后,该浏览器 ...

  6. JAVA记事本的图形用户界面应用程序含加密

    JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战

    笔记 2.SpringBoot2.x日志讲解和自定义Logback配置实战     简介:讲解SpringBoot2.x整合Logback配置实战 1.官网介绍:https://docs.spring ...

  8. kvm的使用(2)

    一.远程管理kvm虚机 (2)有些情况下,有一个要配置的地方. 因为 KVM(准确说是 Libvirt)默认不接受远程管理,需要按下面的内容配置被管理宿主机中的两个文件: vim /etc/defau ...

  9. java源码-HashMap源码分析

    这次开始分析JDK8中的HashMap源码. 首先理解HashMap中几个关键变量, TREEIFY_THRESHOLD  链表转换红黑树扩容值 table 数组+链表+红黑树  size 当前存储数 ...

  10. Python——GUI编程(python programming)

    import sys from math import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidg ...