洛谷题面传送门

一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 D1T3 中偏简单了?)

u1s1 现在已经是 \(1\text{s}\)​ \(10^9\)​ 的时代了吗?落伍了落伍了/ll

首先我们考虑 \(f(i,G)\)​ 是个什么东西,显然对于 \(x>i\)​ 的 \(x\)​ 肯定就不可能有贡献了对吧,因为扫描到 \(x\)​ 时 \(i\)​ 已经从图中删去了,而扫描到 \(i\)​ 时答案肯定会有 \(1\)​ 的贡献,因此我们不妨先给所有 \(h(G_i)\)​ 都加上 \(n\)​,然后只考虑 \(x<i\)​ 的 \(x\)​ 的贡献即可。思考什么情况下当我们删到 \(x\)​ 时 \(x\to i\)​ 和 \(i\to x\) 都存在​,经过一番观察可以发现以下性质:

Observation. 删到 \(x\)​ 时 \(x\to i\) 和 \(i\to x\) 的路径都存在,当且仅当存在 \(x\to i\) 和 \(i\to x\) 的路径只经过编号 \(\ge x\) 的点。

证明:充分性显然。必要性等价于如果不存在 \(x\to i\)​ 或 \(i\to x\)​ 的路径只经过编号 \(\ge x\)​ 的点,那么必然删到 \(x\)​ 时 \(x\to i\)​ 和 \(i\to x\)​ 中的一者不存在。考虑数学归纳,假设命题对 \(x'\le x\)​ 均成立,那么从 \(x-1\)​ 推到 \(x\)​ 时我们采取反证法,假设 \(x\to i\)​ 和 \(i\to x\)​ 二者在考虑到 \(x\)​ 时都存在,但是不存在 \(x\to i\)​ 和 \(i\to x\)​ 的路径只经过编号 \(\ge x\)​ 的点,那么你任取一对此时没有被删掉的 \(x\to i\)​ 和 \(i\to x\)​ 的路径,它们路径上编号最小的点必然是 \(<x\)​ 的,我们假设这个点为 \(y\)​,那么显然存在 \(y\to x,x\to y\) 的路径,而由于 \(y\) 是 \(x\to i\) 和 \(i\to x\) 路径上编号最小的点,\(y\to x\) 和 \(x\to y\) 路径上点的编号必然都 \(>y\),有归纳假设 \(y\) 此时肯定已经被删除了,矛盾。

有了这个性质之后解题就异常方便了,我们考虑预处理出 \(g_{x,y}\) 表示在所有 \(x\to y\) 的满足不经过编号 \(<\min(x,y)\) 的点的路径中,经过的边的编号的最小值最大是多少,那么不难发现对于一对点 \((x,y)(x<y)\) 而言,它只可能对满足 \(i\le\min(g_{x,y},g_{y,x})\) 的 \(h(G_i)\) 产生 \(1\) 的贡献,差分一下转化为后缀和即可。那么怎么求 \(g_{x,y}\) 呢?我们考虑从大到小枚举中转点 \(z\ge\min(x,y)\),用类似于 Floyd 的方式,取 \(\min(g_{x,z},g_{z,y})\) 更新答案即可。

时间复杂度 \(\mathcal O(n^3+m)\),略微有点卡常。

const int MAXN=1000;
const int MAXM=2e5;
const int INF=0x3f3f3f3f;
int n,m,mx[MAXN+5][MAXN+5],c[MAXM+5];
int main(){
scanf("%d%d",&n,&m);
for(int i=1,u,v;i<=m;i++) scanf("%d%d",&u,&v),chkmax(mx[u][v],i);
for(int i=1;i<=n;i++) mx[i][i]=INF;
for(int k=n;k;k--) for(int i=1;i<=n;i++) for(int j=1;j<=((i<=k)?n:k);j++)
chkmax(mx[i][j],min(mx[i][k],mx[k][j]));
// for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) printf("%d%c",mx[i][j]," \n"[j==n]);
for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) c[min(mx[i][j],mx[j][i])]++;
c[m+1]=n;for(int i=m+1;i;i--) c[i-1]+=c[i];
for(int i=1;i<=m+1;i++) printf("%d%c",c[i]," \n"[i==m+1]);
return 0;
}

洛谷 P7516 - [省选联考 2021 A/B 卷] 图函数(Floyd)的更多相关文章

  1. [省选联考 2021 A/B 卷] 图函数

    考虑到一件事情首先\(u -> u\)是可行的. 所以其实对于\(f(u,G')\) 只要考虑\([1,u]\)的点. 那么考虑其条件等价于\(u -> i\) 和 \(i -> u ...

  2. 洛谷 P7520 - [省选联考 2021 A 卷] 支配(支配树)

    洛谷题面传送门 真·支配树不 sb 的题. 首先题面已经疯狂暗示咱们建出支配树对吧,那咱就老老实实建呗.由于这题数据范围允许 \(n^2\)​ 算法通过,因此可以考虑 \(\mathcal O(n^2 ...

  3. 洛谷 P7515 - [省选联考 2021 A 卷] 矩阵游戏(差分约束)

    题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\ ...

  4. [省选联考 2021 A/B 卷] 卡牌游戏

    垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) ...

  5. 洛谷P6623——[省选联考 2020 A 卷] 树

    传送门:QAQQAQ 题意:自己看 思路:正解应该是线段树/trie树合并? 但是本蒟蒻啥也不会,就用了树上二次差分 (思路来源于https://www.luogu.com.cn/blog/dengy ...

  6. 洛谷 P6624 - [省选联考 2020 A 卷] 作业题(矩阵树定理+简单数论)

    题面传送门 u1s1 这种题目还是相当套路的罢 首先看到 \(\gcd\) 可以套路地往数论方向想,我们记 \(f_i\) 为满足边权的 \(\gcd\) 为 \(i\) 的倍数的所有生成树的权值之和 ...

  7. [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂

    题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...

  8. [省选联考 2021 A/B 卷] 宝石

    大概是一眼看出来是这个给定序列在树上序列上按顺序跑最大匹配. 然后考虑维护向上和向下的链的值. 大概的做法是用倍增维护,考虑\(f_{u,i}\)是\(c_u\)在序列里的位置向后匹配\(2^i\)位 ...

  9. 题解 P6622 [省选联考 2020 A/B 卷] 信号传递

    洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...

随机推荐

  1. HCNP Routing&Switching之BGP路由宣告

    前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...

  2. 【c++ Prime 学习笔记】第19章 特殊工具与技术

    某些程序对内存分配有特殊要求,不能直接使用标准内存管理机制 重载new和delete算符可控制内存分配的过程 19.1.1 重载new和delete 说法"重载new和delete" ...

  3. Noip模拟66 2021.10.2

    T1 接力比赛 思路就是直接做背包$dp$,然后看看容量相同的相加的最大值. 考虑如何在$dp$过程中进行优化 注意到转移方程的第二维枚举容量没有必要从容量总和开始枚举 那么我们便转移边统计前缀和,从 ...

  4. $dy$讲课总结

    字符串: 1.广义后缀自动机(大小为\(m\))上跑一个长度为\(n\)的串,所有匹配位置及在\(parent\)树上其祖先的数量的和为\(min(n^2,m)\),单次最劣是\(O(m)\). 但是 ...

  5. NKOJ-2936 城市建设

    问题描述: PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁.Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费.Louis希望建造最少的道路使得国 ...

  6. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

  7. Linux该如何学习新手入门遇到问题又该如何解决

    本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由 ...

  8. [转]DDR相关的一些基础知识

    ODT ( On-DieTermination ,片内终结)ODT 也是 DDR2 相对于 DDR1 的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸 收掉,而不会在电路上形成反射, 造成 ...

  9. Python 字符串的encode与decode

    python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...

  10. cf16E Fish(状压DP)

    题意: N只FISH.每个回合会有一只FISH吃掉另一个FISH.直到池塘里只剩一只FISH. 给出aij:第i只FISH吃掉第J只FISH的概率. 问每一只FISH是最后存活者的概率. Input ...