学霸的期末 解题报告

news/2025/10/16 12:15:13/文章来源:https://www.cnblogs.com/xiaozi-qwq/p/19145283

简要题意

给定 \(n\) 个点 \(m\) 条边的有向图,在不改变图的连通性的前提下,删除任意条边后,最少可以保留多少条边;和任意加边后,最多可以包含多少条边。

数据范围:\(nm \le 5 \times 10 ^7,n \le 10^3,m\le 10^5\)

分析

先做第二问,等价于有多少有序点对 \((u,v)\) 满足 \(u\) 可达 \(v\),直接搜索即可。

再看第一问,我们考虑先缩点,然后在一个非单点的强连通分量中,我们可以只保留强连通分量大小条边;然后对于缩点后的新图,可以在 \(O(n^2)\) 的时间内预处理每一个点可以到达的点集,和可以到达一个点的点集,我们枚举每一条边 \((u,v)\),求 \(u\) 可到点集和可到 \(v\) 点集的交集,如果交集为空,那么该边必须保留。用 bitset 优化,时间复杂度为 \(O(\dfrac{nm}{w})\)

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define Inf (1ll<<60)
#define For(i,s,t) for(int i=s;i<=t;++i)
#define Down(i,s,t) for(int i=s;i>=t;--i)
#define ls (i<<1)
#define rs (i<<1|1)
#define bmod(x) ((x)>=p?(x)-p:(x))
#define lowbit(x) ((x)&(-(x)))
#define End {printf("NO\n");exit(0);}
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
inline void ckmx(int &x,int y){x=(x>y)?x:y;}
inline void ckmn(int &x,int y){x=(x<y)?x:y;}
inline void ckmx(ll &x,ll y){x=(x>y)?x:y;}
inline void ckmn(ll &x,ll y){x=(x<y)?x:y;}
inline int min(int x,int y){return x<y?x:y;}
inline int max(int x,int y){return x>y?x:y;}
inline ll min(ll x,ll y){return x<y?x:y;}
inline ll max(ll x,ll y){return x>y?x:y;}
char buf[1<<20],*p1,*p2;
#define gc() (p1 == p2 ? (p2 = buf + fread(p1 = buf, 1, 1 << 20, stdin), p1 == p2 ? EOF : *p1++) : *p1++)
#define read() ({\int x = 0, f = 1;\char c = gc();\while(c < '0' || c > '9') f = (c == '-') ? -1 : 1, c = gc();\while(c >= '0' && c <= '9') x = x * 10 + (c & 15), c = gc();\f * x;\
})
void write(int x){if(x>=10) write(x/10);putchar(x%10+'0');
}
const int N=2050;
int n,m,ans,ans0;
struct Edge{int from,f,to;}e[N<<1];
int num,h[N];
void add(int f,int t){e[++num].from=h[f],e[num].f=f,e[num].to=t,h[f]=num;}
int dfn[N],low[N],s[N],tail,col[N],sz[N],dfu,cnt;
bool in[N];
void tarjan(int u){dfn[u]=low[u]=++dfu;s[++tail]=u,in[u]=true;for(int i=h[u];i;i=e[i].from){int v=e[i].to;if(!dfn[v])tarjan(v),ckmn(low[u],low[v]);else if(in[v])ckmn(low[u],dfn[v]);}if(low[u]==dfn[u]){++cnt;while(tail){int v=s[tail];--tail;in[v]=false;col[v]=cnt;++sz[cnt];if(v==u) break;}}
}
struct pair_hash{template <class T1,class T2>size_t operator() (const pair<T1,T2>& p) const{auto hash1=hash<T1>{}(p.first);auto hash2=hash<T2>{}(p.second);return hash1^(hash2<<15);}
};
unordered_set<pii,pair_hash> t;
void build_DAG(){num=0;For(i,1,n) h[i]=0;For(i,1,m){int u=e[i].f,v=e[i].to;if(col[u]==col[v] || t.find(pii(col[u],col[v]))!=t.end()) continue;t.insert(pii(col[u],col[v]));add(col[u],col[v]);}
}
void dfs1(int u){if(in[u]) return;++ans;in[u]=true;for(int i=h[u];i;i=e[i].from)dfs1(e[i].to);
}
bitset<N> to[N],from[N];
void dfs(int u,int st){if(to[st][u]) return;to[st][u]=from[u][st]=1;for(int i=h[u];i;i=e[i].from)dfs(e[i].to,st);
}
int main()
{
#if !ONLINE_JUDGEfreopen("compare.in","r",stdin);freopen("compare.out","w",stdout);
#endif n=read(),m=read();int u,v;For(i,1,m) u=read(),v=read(),add(u,v);For(i,1,n){For(j,1,n) in[j]=false;dfs1(i),--ans;}For(i,1,n)if(!dfn[i])tarjan(i);// For(i,1,n) printf("%d ",col[i]);// putchar('\n');build_DAG();For(i,1,cnt) dfs(i,i);For(i,1,cnt) from[i][i]=to[i][i]=false;For(i,1,cnt) ans0+=(sz[i]>1 ? sz[i] : 0);For(i,1,num){int u=e[i].f,v=e[i].to;// printf("%d %d\n",u,v);if((to[u]&from[v]).count()==0) ++ans0;}printf("%d %d\n",ans0,ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种适用于正整数值域的无旋平衡树

介绍 如题,这是一种适用于正整数值域的平衡树。其主要特点如下:不带旋常数小实现简单,好理解与此同时,该算法具有以下局限性:只适用于正整数值域时间复杂度依赖于值域大小似乎只能解决传统平衡树问题目前暂不清楚…

详细介绍:FPGA实现SRIO图像视频传输,基于Serial Rapidlo Gen2,提供6套工程源码和技术支持

详细介绍:FPGA实现SRIO图像视频传输,基于Serial Rapidlo Gen2,提供6套工程源码和技术支持pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

2025 年电子散热器厂家 TOP 企业品牌推荐排行榜,电子 / 型材 / 插片 / 电源 / 固态 / 变频器 / 铝合金 / 逆变器散热器 / 散热器铝型材公司推荐

2025 年电子散热器行业迎来规模突破千亿元的增长周期,但市场竞争与发展挑战并存。受全球能源结构调整与电子设备功耗上升驱动,行业对散热效率的要求持续提高,而新国标将热阻值门槛提高 20%,进一步加剧了行业压力。…

禁用sentinel

禁用sentinel在配置文件(如application.properties)中增加配置:spring.cloud.sentinel.enabled=falsespring: cloud:sentinel:enabled: false

LobeHub

LobeHubLobeHub - LobeChat:个人 LLM 效能工具,超越 ChatGPT / OLLaMA 使用体验 漫思

[temporary] Arkady and rectangles

#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL N=1e5+10,LG=18,inf=1e8; LL n,o[N]; struct Mat { LL a,b,c,d; }tk[N]; struct Miku {LL bin[N*2],tot;void ins(LL x) { bin[+…

跨境电商智能选品的未来:从经验到算法的革命

跨境电商智能选品的未来:从经验到算法的革命在全球化贸易和数字经济的浪潮中,跨境电商正在以前所未有的速度发展。无论是 亚马逊(Amazon)、TikTok Shop,还是 Shopee、Temu 等平台,都在不断拓展新的市场空间。然而…

静态网站宣言:用IPFS重建开放网络的乐趣

本文探讨了基于IPFS构建静态网站的技术优势,包括内容寻址、版本控制和去中心化存储。通过Orbiter平台案例,展示了如何简化现代网站部署流程,让Web开发重新变得简单高效。静态网站宣言 | IPFS 博客与新闻 构建网站曾…

收敛数列的性质

唯一性 若 \(x_n\) 收敛,则极限唯一。 有界性若 \(x_n\) 收敛,则 \(x_n\) 有界。 若 \(x_n\) 无界,则 \(x_n\) 一定发散。 若 \(x_n\) 有界,则 \(x_n\) 不一定收敛。保号性 \(\lim_{n\rightarrow \infty}x_n=a,a&g…

Eclipse Mosquitto MQTT 代理中持久性引擎(database.c 概念)的作用分析报告 - 指南

Eclipse Mosquitto MQTT 代理中持久性引擎(database.c 概念)的作用分析报告 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

详细介绍:macOS 下安装 zsh、zsh-syntax-highlighting、powerlevel9k、nerd-font

详细介绍:macOS 下安装 zsh、zsh-syntax-highlighting、powerlevel9k、nerd-fontpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

AWS | Linux 硬盘挂载综合教程 - 实践

AWS | Linux 硬盘挂载综合教程 - 实践2025-10-16 11:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

FFmpeg 实现视频批量剪辑

随着课程视频的增多,需要转化几个百视频,常规操作方式已经无法满足要求了,需要实现视频自动化剪辑。 前提条件 视频剪辑功能,均使用 FFmpeg 工具完成https://ffmpeg.org/FFmpeg 是一个用来做视频处理的开源工具,支…

2023盘古石 物联网取证部分

2023盘古石 物联网取证部分物联网取证 1、分析扫地机器人数据,robot1.bin采用的压缩算法是?[答案格式:xxxx] binwalk分析,采用的是LZMA压缩算法2、扫地机器人使用的软件版本是?[答案格式:0.0.0][★★☆☆☆☆] 010…

2025 年自润滑轴承厂家联系方式推荐,宁波索力特复合材料有限公司专业产品与可靠服务指南

在当前工业制造领域不断升级的背景下,机械设备对核心零部件的性能要求愈发严苛,尤其是自润滑轴承这类关键部件,其质量与稳定性直接关系到设备的运行效率和使用寿命。随着工程机械、医疗机械、新能源、航空航天等行业…

MATLAB PSO-PF 融合滤波

1. 文件结构 PSOPF_Fusion/ ├── main_psopf.m % 一键运行示例 ├── psopf_filter.m % PSO-PF 核心滤波器 ├── pso_move.m % PSO 位置-速度更新 ├── pf_weight.m % 权…

SaltStack 集群安装指南

SaltStack 集群安装指南 1. 环境准备 确保所有5台Ubuntu服务器(1台master,4台minion)满足以下条件:Ubuntu 20.04 LTS 或更高版本 网络互通,主机名解析正常 root权限或sudo权限2. 主机名和IP规划 假设您的服务器规…

nginx基本配置详解

user root; # root权限运行worker_processes 1; # 单个进程,对于一般的应用场景,一个进程足够了 # 默认值:auto(自动匹配 CPU 核心数)。 # CPU 密集型场景(如动态计算):worker_processes = CPU核心数。 # I/O 密…

NCS 3.1.1 蓝牙如何设置 public 地址

说明NCS 3.1.1 协议栈:Nordic 协议栈,CONFIG_BT_LL_SOFTDEVICE=y修改 在 bt_enable 之前 sdc_hci_cmd_vs_zephyr_write_bd_addr_t bd_addr_cmd = {.bd_addr = {5, 6, 7, 8, 9, 10}, }; int ret = sdc_hci_cmd_vs_zep…

C# Avalonia 16- Animation- BlurringButtons

C# Avalonia 16- Animation- BlurringButtonsBlurringButtons.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d=&quo…