LOJ #2473. 「九省联考 2018」秘密袭击
#2473. 「九省联考 2018」秘密袭击
分析:
首先枚举一个权值W,计算这个多少个连通块中,第k大的数是这个权值。
$f[i][j]$表示到第i个节点,有j个大于W数的连通块的个数。然后背包转移。
复杂度是$O(n^2k)$,时限5s,然后卡卡常就过了。
代码:
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<iostream>
- #include<cmath>
- #include<cctype>
- #include<set>
- #include<queue>
- #include<vector>
- #include<map>
- using namespace std;
- typedef unsigned int ui;
- inline int read() {
- int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
- for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
- }
- const int N = , mod = ;
- struct Edge{ int to, nxt; } e[N << ];
- int head[N], id[N], fa[N], st[N], ed[N], a[N];
- ui f[N][N];
- int n, k, w, Now, En;
- inline bool cmp(int x,int y) { return a[x] == a[y] ? x <= y : a[x] < a[y]; }
- inline void add_edge(int u,int v) {
- ++En; e[En].to = v, e[En].nxt = head[u]; head[u] = En;
- ++En; e[En].to = u, e[En].nxt = head[v]; head[v] = En;
- }
- void dfs(int u) {
- for (int i = st[u]; i <= ed[u]; ++i) f[u][i] = ;
- if (cmp(Now, u)) st[u] = ed[u] = ;
- else st[u] = ed[u] = ;
- f[u][st[u]] = ;
- for (int i = head[u]; i; i = e[i].nxt) {
- int v = e[i].to;
- if (v == fa[u]) continue;
- fa[v] = u;
- dfs(v);
- for (int j = ed[u]; j >= st[u]; --j)
- for (int k = ed[v]; k >= st[v]; --k)
- f[u][j + k] = (f[u][j + k] + f[u][j] * f[v][k]) % mod;
- ed[u] += ed[v];
- }
- for (int i = st[u]; i <= ed[u]; ++i) f[][i] = (f[][i] + f[u][i]) % mod;
- }
- int main() {
- n = read(), k = read(), w = read();
- for (int i = ; i <= n; ++i) a[i] = read();
- for (int i = ; i < n; ++i) {
- int u = read(), v = read();
- add_edge(u, v);
- }
- for (int i = ; i <= n; ++i) id[i] = i;
- sort(id + , id + n + , cmp);
- ui ans = ;
- for (int i = ; i <= n; ++i) {
- memset(f[], , sizeof(f[]));
- Now = id[i];
- dfs();
- for (int j = k; j <= n; ++j)
- ans = (ans + f[][j] * (a[id[i]] - a[id[i - ]])) % mod;
- }
- cout << ans % mod;
- return ;
- }
LOJ #2473. 「九省联考 2018」秘密袭击的更多相关文章
- LOJ 2743(洛谷 4365) 「九省联考 2018」秘密袭击——整体DP+插值思想
题目:https://loj.ac/problem/2473 https://www.luogu.org/problemnew/show/P4365 参考:https://blog.csdn.net/ ...
- Loj #2479. 「九省联考 2018」制胡窜
Loj #2479. 「九省联考 2018」制胡窜 题目描述 对于一个字符串 \(S\),我们定义 \(|S|\) 表示 \(S\) 的长度. 接着,我们定义 \(S_i\) 表示 \(S\) 中第 ...
- LOJ#2471「九省联考 2018」一双木棋 MinMax博弈+记搜
题面 戳这里 题解 因为每行取的数的个数是单调不增的,感觉状态数不会很多? 怒而记搜,结果过了... #include<bits/stdc++.h> #define For(i,x,y) ...
- @loj - 2478@「九省联考 2018」林克卡特树
目录 @description@ @solution@ @part - 1@ @part - 2@ @accepted code@ @details@ @description@ 小 L 最近沉迷于塞 ...
- 「九省联考 2018」IIIDX 解题报告
「九省联考 2018」IIIDX 这什么鬼题,送的55分要拿稳,实测有60? 考虑把数值从大到小摆好,每个位置\(i\)维护一个\(f_i\),表示\(i\)左边比它大的(包括自己)还有几个数可以选 ...
- 【LOJ】#2479. 「九省联考 2018」制胡窜
题解 老了,国赛之前敲一个后缀树上LCT和线段树都休闲的很 现在后缀树上线段树合并差点把我写死 主要思路就是后缀树+线段树合并+容斥,我相信熟练的OIer看到这已经会了 但就是不想写 但是由于我过于老 ...
- [loj 2478][luogu P4843]「九省联考 2018」林克卡特树
传送门 Description 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一 ...
- loj2472 「九省联考 2018」IIIDX
ref #include <algorithm> #include <iostream> #include <cstdio> using namespace std ...
- [BZOJ 5252][LOJ 2478][九省联考2018] 林克卡特树
[BZOJ 5252][LOJ 2478][九省联考2018] 林克卡特树 题意 给定一个 \(n\) 个点边带权的无根树, 要求切断其中恰好 \(k\) 条边再连 \(k\) 条边权为 \(0\) ...
随机推荐
- Mysqlbinlog工具及导出数据并转换编码导入
2014 - binlog是通过记录二进制文件方式来备份数据,然后在从二进制文件将数据恢复到某一时段或某一操作点. 1.使用mysqlbinlog工具来恢复 Mysqlbinlog日志如何开启? 在m ...
- 基于dispatch_after封装YXTimer
基于dispatch_after封装YXTimer 本人根据dispatch_after封装了一个定时器,支持block以及代理的方式来激活定时器,适用于对精度要求低,耗时短的地方,高端大气上档次,低 ...
- 制作 OS X El Capitan 启动盘
制作 OS X El Capitan 启动盘 1. 下载系统盘的dmg格式 2. 直到出现了 3. 在命令行中找到 Install OS X El Capitan.app 4. 格式化你的U盘(U盘名 ...
- Numpy 的常用操作
1.创建数组array # 创建数组array import numpy as np a = np.array([1,2,3]) #创建数组 b = np.array([(1.5,2,3), (4,5 ...
- 使用concurrent.futures模块并发,实现进程池、线程池
Python标准库为我们提供了threading和multiprocessing模块编写相应的异步多线程/多进程代码 从Python3.2开始,标准库为我们提供了concurrent.futures模 ...
- CentOS7 防火墙(firewall)的操作命令
CentOS7 防火墙(firewall)的操作命令 安装:yum install firewalld 1.firewalld的基本使用 启动: systemctl start firewalld 查 ...
- Java基础面试题(Hibernate)
Hibernate是一个什么样的框架? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hi ...
- java内部类案例
实现键值对的存储输出 import java.util.Arrays; public class EntryDemoTest { //实现键值对的存储 public static void main( ...
- css3画图那些事(三角形、圆形、梯形等)
闲来无事,写写图形.当时巩固一下css3吧..前端小白,写的不好还请前辈多指教. 三角形 { width:; height:; border-bottom: 140px solid red ; bor ...
- R语言常用语法和用法
数据准备 height <- c(6.00, 5.92, 5.58, 5.92) 1 计算均值 mean(height) [1] 5.855 2 计算中位数 median(height) [1] ...