题解: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 ...
随机推荐
- AI绘图之Midjourney初体验
Midjourney (MJ) 使用笔记 最近尝试了 Midjourney 绘图,简单记录下使用流程. 注册及登陆 首先是账号注册和登陆,基本上就是一路下一步,唯一需要注意的是加入MJ频道,具体流程为 ...
- uniapp 返回顶部
<template> <view> <view class="btn" @tap="toTop" :style="{'d ...
- k8s——pod探针
探针 简单理解: 容器内应用的检测机制,根据不同的探针来判断容器应用当前的状态 为什么会需要探针 # 情况一 现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的pod虽然在,但是也相当于 ...
- openstack nova 报错
openstack compute service list The server is currently unavailable. Please try again at a later time ...
- (八十八)c#Winform自定义控件-转子
官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...
- ABC346
D 枚举是哪一位相同,情况为 \(00\) 还是 \(11\),然后用前缀和和后缀和求一下即可. \(pre_{j,i}\) 表示第一位为 \(j\),前 \(i\) 位的每两个相同的字符均不相同的情 ...
- 腾讯手游助手 WIN11 蓝屏 DPC_WATCHDOG_VIOLATION
DPC_WATCHDOG_VIOLATION 退出QQ,或者下载最新版本QQ.
- Linux实时查看Java接口数据
1.Linux实时查看Java接口数据的方法 在Linux系统中实时查看Java接口数据通常涉及几个步骤: (1)编写Java应用程序:首先,我们需要有一个Java应用程序,它暴露了一个或多个HTTP ...
- 为什么Python的多线程是假的呢?
https://www.zhihu.com/question/23474039/answer/269526476
- CLR via C# 笔记 -- 托管堆和垃圾回收(21)
1. 访问一个资源所需的步骤 1). 调用IL指令newobj,为代表资源的类型分配内存(一般使用C# new 操作符来完成). 2). 初始化内存,设置资源的初始状态并使资源可用.类型的实例构造器负 ...