题解:P10537 [APIO2024] 九月
题解:P10537 [APIO2024] 九月
题意
在一个树上,在 \(k\) 天内有 \(n-1\) 个节点掉落,会有 \(m\) 个记录者记录掉落的情况,每一天每一个人会以任意的顺序记录当天的掉落情况,求出 \(k\) 的最大值。
思路
根据题意可以得到,判断区间 \([l,r]\) 是否合法,有两个必要的条件。
- 区间 \([l,r]\) 必须在 \(m\) 个人的记录集合中相等。
1 2 3
1 2 4
以上样例就不合法。
- 区间 \([l,r]\) 删除后仍然可以构成一棵树。
第一个性质完全可以用 Hash 来判断。
第二个性质可以使用扫一圈判断每一个节点还有多少个节点未掉,最后判断一下即可。
AC code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n, m;
int solve(int nn, int mm, vector<int>FA, vector<vector<int>>SA) {
//初始化
n = nn - 1, m = mm;
int ans = 0;
vector<int>f(n + 1);
vector<vector<int>>s(m + 1, vector<int>(n + 1));
vector<vector<int>>p(m + 1, vector<int>(n + 1));
vector<pair<ll,ll >>has(m+1);
vector<vector<bool>>vis(m+1,vector<bool>(n+1));
vector<int>cnt(m+1);
for (int i = 1; i <= n; ++i) f[i] = FA[i];
for (int i=1;i<= m; ++i) for (int j=1;j<=n;++j) s[i][j]=SA[i-1][j-1];
for(int i=1;i<=m;++i) for(int j=1;j<=n;++j) ++p[i][f[j]];
for (int j = 1; j <= n; ++j) {
//判断构成的集合相等
for (int i = 1; i <= m; ++i) has[i].first += s[i][j], has[i].second += (ll)s[i][j] * s[i][j],vis[i][s[i][j]]=1;//Hash
bool flag = 1;
pair<ll, ll>q = has[1];
for (int i = 2; i <= m; ++i) {
if (has[i] != q) {
flag = 0;
break;
}
}
//判断是否可以构成一棵树
for (int i = 1; i <= m; ++i) if (p[i][s[i][j]]) ++cnt[i];
for (int i = 1; i <= m; ++i) {
--p[i][f[s[i][j]]];
if (!p[i][f[s[i][j]]] && vis[i][f[s[i][j]]]) --cnt[i];
}
for (int i = 1; i <= m; ++i) flag &= !cnt[i];
if (flag) ++ans;//全部符合
}
return ans;
}
题解:P10537 [APIO2024] 九月的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 深入理解 Swoole 的底层加载原理
首发原文链接:深入理解 Swoole 的底层加载原理 PHP 扩展加载 我们从 php-src/sapi/cli/php_cli.c:1159 文件的入口函数 int main(int argc, c ...
- Django——启动项目时报错mysqlclient
报错内容如下: Watching for file changes with StatReloader Exception in thread django-main-thread: Tracebac ...
- 【web】自定义协议Protocol URL
URL Protocol(自定义协议)可以让web页面调用本地exe程序,这个神奇的功能是怎么实现的呢? URL ProtocolURL Protocol,没错就是标题里所说的自定义协议.这玩意儿大家 ...
- 【Effective C++】设计与声明——成员变量和成员函数
将成员变量声明为private 为什么成员变量不该是public? (1)从语法一致性来说,如果成员变量不是public,就需要通过成员函数访问成员变量.public接口内的每样东西都是函数的话,客户 ...
- 面试必会->Redis篇
01- 你们项目中哪里用到了Redis ? 在我们的项目中很多地方都用到了Redis , Redis在我们的项目中主要有三个作用 : 使用Redis做热点数据缓存/接口数据缓存 使用Redis存储一些 ...
- 安装vmware17和下载红帽镜像
安装vmware17 一.下载 1.访问vmware官网 (也可以使用这个链接https://www.vmware.com/products/workstation-pro/workstation-p ...
- react 数组列表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路
JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路 package com.example.core.mydemo.json5; import com.alibab ...
- skywalking启动配置agent及数据储存对数据源(mysql,es)版本要求
skywalking启动配置agent及数据储存对数据源(mysql,es)版本要求 # skywalking-agent.jar的本地磁盘路径-javaagent:D:\SkyWalking\sky ...
- 洛谷 P1226 快速幂
题目链接:快速幂 思路 简单快速幂模板.a ^ 17 = (a ^ 2) ^ 8 * a,此时pow()中的y就可以视为17 -> 8(y >>= 1),pow()中的x就是底数a ...