bzoj5250 [2018多省省队联测]秘密袭击
博主蒟蒻,目前还不会动态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多省省队联测]秘密袭击的更多相关文章
- BZOJ_5249_Luogu_P4364_[2018多省省队联测]_IIIDX_九省联考2018_JLOI2018_线段树
BZOJ_5249_[2018多省省队联测]IIIDX_线段树 Description [题目背景] Osu听过没?那是Konano最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐 ...
- 5249: [2018多省省队联测]IIIDX
5249: [2018多省省队联测]IIIDX 链接 分析: 贪心. 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树.首先满足前面必须至少有siz[i]个权值没选,如果存 ...
- bzoj 5249 [2018多省省队联测] IIIDX
bzoj 5249 [2018多省省队联测] IIIDX Link Solution 首先想到贪心,直接按照从大到小的顺序在后序遍历上一个个填 但是这样会有大问题,就是有相同的数的时候,会使答案不优 ...
- bzoj 5248: [2018多省省队联测]一双木棋
Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何棋子, 两人轮流在格子上落子,直到填满棋盘时结束.落子的规则是:一个格子可以落子 ...
- bzoj 5251: [2018多省省队联测]劈配
Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayi ...
- bzoj5252 [2018多省省队联测]林克卡特树
斜率优化树形dp?? 我们先将问题转化成在树上选K+1条互不相交路径,使其权值和最大. 然后我们考虑60分的dp,直接维护每个点子树内选了几条路径,然后该点和0/1/2条路径相连 然后我们会发现最后的 ...
- bzoj5251 [2018多省省队联测]劈配
直接网络流模拟即可AC. 可持久化+暴力=90分, 可持久化+二分=30分, 暴力加边+二分=100分. 我也很无奈啊. Ivan便涨红了脸,额上的青筋条条绽出,争辩道,“memcpy也是可持久化…… ...
- bzoj5253 [2018多省省队联测]制胡窜
后缀自动机挺好毒瘤的题. 我们考虑哪些切点是不合法的.肯定是所有的匹配串都被切了. 我们考虑第一个切口的位置. 当第一个切口在第一个出现位置前时,第二个切口必须切掉所有的串. 当第一个切口在$l_{i ...
- bzoj5249 [2018多省省队联测]IIIDX
转化一下问题变成给定一棵树,一个序列,求父亲的权值小于子树的最大方案. 直接贪心会在有重复权值时出现错误,我们考虑用线段树优化贪心. 将序列从小到大排序,线段树上每个点记录他和他右边当前还可用的权值, ...
随机推荐
- oracle 修改 字段名称
暂时应该没有对应的方法,所以我用自己想好的方法去修改 /*修改原字段名name为name_tmp,是将想改名称的字段改为没用/临时的字段*/ Alter table 表名 rename column ...
- python redis模块的常见的几个类 Redis 、StricRedis和ConnectionPool
日常写代码过程中,经常需要连接redis进行操作.下面我就介绍下python操作redis模块redis中的几个常见类,包括redis连接池. 一.StrictRedis 类 请看代码:. #!/us ...
- [ Java面试题 ]基础篇之一
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- 【读英文文档】Whetting Your Appetite(刺激你的食欲)
如果你有很多工作是通过计算机来完成的,那么你一定希望其中的很多事情能够自动地实现.比方说,你希望在文本文件中实现查找和替换的功能,以某一种机制实现照片的重命名以及重新排序的功能,一个小型的数据库甚至是 ...
- 对Python这门课程的理解。
这门课程是现在热门,对之后的就业和利用的帮助还是很大的. 希望能学完整本书并且能学以致用,而不是单单只获得理论知识. 学完之后能用于数据库.大数据处理.图形编程等等
- URL 规范 整理
URL 规范 不用大写:(强制) 用中杠-不用下杠_:(强制) 参数列表要encode,编码使用utf-8:(强制) URI中的名词表示资源集合,使用复数形式.(建议) 增加版本号(建议) URI中统 ...
- Linux系统根目录各文件夹的含义
centos7文件结构截图如下: 首先,我要说明我在安装centos系统的过程中,勾选了GNOME的图形界面,功能当中勾选了办公工具和开发工具,办公工具就是类似于微软的office,现在在微软offi ...
- JAVA Set 交集,差集,并集
/** * Created by yuhui on 2017/7/11 0011. */ import java.util.HashSet; import java.util.Set; public ...
- 使用单进程、strace、gdb调试PHP错误
使用单进程.strace.gdb调试PHP错误 PHP一般是在FPM的呵护下运行的,但是某些情况下进程异常崩溃会导致502.下面是解决思想: 1. 单进程运行: php -d display_erro ...
- Composer基本安装步骤
Composer是 PHP 世界里用于管理项目依赖的工具. 1,确保安装PHP,检查方法命令行窗口执行php -v,查看是否正常输出版本 php -v 2,下载安装脚本composer-setup.p ...