解析

纯纯的人类智慧题。

关键性质:vvv 可以在计算 f(u,G)f(u,G)f(u,G) 时产生贡献,当且仅当 GGG 中 u,vu,vu,v 之间可以通过 [v,n][v,n][v,n] 的点互相到达。
充分性较为显然,编号更大的点不会比 vvv 先删去,所以必然在 vvv 时刻依然存在。
必要性证明:假设 vvv 时刻 u→vu\to vu→v 的路径上存在一个 x∈[1,v)x\in [1,v)x∈[1,v),在 xxx 时刻图的联通性不弱于 vvv 时刻,因而必然也有 u→xu\to xu→x 可达,且由于 x→v,v→ux\to v,v\to ux→v,v→u 皆可达,也就有 x→ux\to ux→u 可达,xxx 应当被删去,矛盾。

接下来的任务就是如何维护这个东西。

floyd

对于点编号属于 [v,n][v,n][v,n] 这样的限制,不难想到 floyd。但是直接跑无法通过 n=1000n=1000n=1000。
然后拿大样例试了试,发现写成:

for(int k=n;k>=1;k--){for(int i=1;i<=k;i++){for(int j=i;j<=n;j++){k -> update(i,j)}}}

答案依然是对的,并且能跑过1000了。
然后就完事了。

我们当然要想一想为什么这样是对的。
这么转移必然出问题的就是两边的点编号均大于 kkk 的情况。
如图中的 p,qp,qp,q:
(高度表示点编号的相对大小)

那么我们现在就要证明:

若 (x,y)(x,y)(x,y) 路径上没有经过 [1,min⁡(x,y))[1,\min(x,y))[1,min(x,y)) 的点,就必然可以正确转移。

假设枚举到中转点 kkk 之前的路径都符合这个性质。
对于当前枚举的中转点 kkk,注意到我们需要求出的合法路径必然至少有一个端点是小于 kkk 的。
那么就必然能在 kkk 的某一侧找到第一个编号小于 kkk 的点 xxx,k→xk\to xk→x 这段路径使用 (k,n](k,n](k,n] 的点中转,不会出现现在 p,qp,qp,q 这样的窘境,所以 f(k,x)f(k,x)f(k,x) 当前是对的。
那么 xxx 就可以通过 kkk 连接起另一侧的 ppp ,得到正确的 f(p,x)f(p,x)f(p,x)。
如果 (u,p)(u,p)(u,p) 之间有 k′k'k′ 这样的点导致 f(u,p)f(u,p)f(u,p) 不对怎么办?把(u,p)(u,p)(u,p) 最小的点 k′k'k′ 当成 ppp 的角色来考虑,刚才的证明就还是对的。

bfs

本题看题解,还有通过 bfs 求对每个 vvv 考虑在每张图中能对多少 uuu 产生贡献的方法来做的,每次 bfs 用到一条边就直接删去,从而保证复杂度为 O(nm)O(nm)O(nm),也挺妙的。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
using namespace std;const int N=1050;
const int M=2e5+100;
const int inf=1e9;
const int mod=19921228;inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}int n,m;
int f[N][N];
ll sum[M];signed main() {#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);
#endif//memset(f,0x3f,sizeof(f));n=read();m=read();for(int i=1;i<=m;i++){int x=read(),y=read();f[x][y]=i;}for(int i=1;i<=n;i++) f[i][i]=m+1;for(int k=n;k>=1;k--){for(int i=k;i<=n;i++) sum[min(f[i][k],f[k][i])]++;for(int i=1;i<=k;i++){//if(!f[i][k]&&!f[k][i]) continue;for(int j=i;j<=n;j++){f[i][j]=max(f[i][j],min(f[i][k],f[k][j]));f[j][i]=max(f[j][i],min(f[j][k],f[k][i]));}}}for(int i=m;i>=1;i--) sum[i]+=sum[i+1];for(int i=1;i<=m+1;i++) printf("%lld ",sum[i]);return 0;
}
/*
*/

P7516 [省选联考 2021 A/B 卷] 图函数相关推荐

  1. P7519-[省选联考 2021 A/B 卷]滚榜【状压dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P7519 题目大意 nnn个队伍,队伍之间按照得分从小到大排名,得分相同的按照编号从小到大排.开始时每个队伍有个初始 ...

  2. P7520-[省选联考 2021 A 卷]支配

    正题 题目链接:https://www.luogu.com.cn/problem/P7520 题目大意 给出nnn个点mmm条边的一张有向图,一号点为起始点,qqq次独立的询问加入一条边后有多少个点的 ...

  3. [省选联考 2020 A/B 卷] 信号传递(状压dp + 卡空间)

    problem luogu-P6622 一条道路上从左至右排列着 mmm 个信号站,初始时从左至右依次编号为 1,2,-,m1,2,\dots,m1,2,-,m,相邻信号站之间相隔 111 单位长度. ...

  4. [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)

    文章目录 problem solution(10pts) code(10pts) solution(30pts) code(30pts) solution(60pts) code(60pts) sol ...

  5. 大连大学两日游———2021省选联考游记

    大连大学两日游---2021省选联考游记 今年高一,今年省选就是去积累大赛经验的,为明年的主场做准备.考前参加过几次学校组织的模拟赛(死难死难 ),都得了不点分,所以本来就没多大目标,不爆零就行,但是 ...

  6. 2021湖南汉寿高考成绩查询,湖南省联考2021成绩查询入口 怎么查成绩

    湖南省联考2021成绩查询入口 怎么查成绩2021-03-30 16:14:27文/李文源 八省联考已经结束,成绩也已经陆续发布,小编今天给大家分享湖南省八省联考2021成绩查询相关内容,来看一下! ...

  7. 金太阳联考2021高考成绩查询,广东金太阳高三联考2021成绩查询

    广东金太阳高三联考2021成绩查询,查看相关金太阳联考答案请关注新浪微博:还不赶快去看书,获取完整试卷及其完整答案 阅读<论语>中的两则文字,然后回答问题. 子路曰:"卫君待子为 ...

  8. 金太阳联考2021高考成绩查询入口,金太阳教育湖南省2021高二联考分数查询

    金太阳教育湖南省2021高二联考分数查询,查看相关金太阳联考答案请关注新浪微博:还不赶快去看书,获取完整试卷及其完整答案 对下面所采用的修辞方法和它的表达作用理解正确的一项是( ).? A.要论中国人 ...

  9. 河南省天一大联考2021高考成绩查询,河南省2019天一大联考高三五联H成绩新鲜出炉,本科分数线公布!...

    在4月9日到4月10日这两天,河南省的高三考生们已经结束了2019年的天一大联考的五联考试,同学们在考完试后觉得本次考试的题目难度大吗?不过本次的成绩对于同学们来说,应该是鞭策我们继续好好复习的动力, ...

最新文章

  1. VM虚拟机报错:An error occurred during the file system check.
  2. branch prediction
  3. 使用服务器测量网站性能,使用服务器时序测量网站性能
  4. Android控件布局属性全解(一看就会)
  5. boost::allocator_value_type的实例
  6. Martix工作室考核题 —— 打印一个菱形
  7. React开发(170):ant design datapicker限制选择时间
  8. Python max 函数 - Python零基础入门教程
  9. ElasticSearch配置说明
  10. 人脸方向学习(二十):Face Landmark Detection-TS3-解读
  11. mysql把字段名批量改为大写_MySQL批量将表名或者列名大小写转换
  12. 如何为搭建的网站配置自己的域名 1-2
  13. USB (十三)2022-04-02
  14. 美国服务器怎么样 RAKsmart美国服务器适合做什么
  15. Unity Shader - Heightmap 高度贴图
  16. 135、易燃液体的火灾危险性
  17. 小组项目具体分工情况(Web.ui相关)
  18. 程序员,如何从平庸走向理想?
  19. android-support-percent的学习使用笔记
  20. 十六进制字符串转十进制数字

热门文章

  1. oracle创建public链接,如何在oracle直接使用地址来创建database link
  2. java merge css_一句命令快速合并 JS、CSS
  3. 云管边端架构图_中移物联网布局构建“云-管-端”全方位体系架构
  4. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
  5. 高德面试官问我:JVM内存溢出后服务还能运行吗,我一顿操作行云流水
  6. Java秘技之Json数据解析与转换 -- Java使用示例
  7. es创建索引数量多了好还是少了好_Elasticsearch性能优化总结
  8. cocoscreator editbox 只允许数字_《Cocos Creator游戏实战》做一个数字调节框
  9. matlab eval函数_matlab自动给变量命名
  10. PAT乙级——1001害死人不偿命的(3n+1)猜想(太简单)