[题解]P8186 [USACO22FEB] Redistributing Gifts S

news/2025/10/31 8:06:20/文章来源:https://www.cnblogs.com/Sinktank/p/19178541

P8186 [USACO22FEB] Redistributing Gifts S

对于每行的初始礼物,将它和左侧的礼物连单向边。

最后,每个点都可以通过交换获得所在强连通分量上的任意一个礼物,而其他礼物则无法获得。

image

可以用 Floyd 跑传递闭包(即判断有向图中两点是否连通)。时间复杂度 \(O(n^3)\)\(O(\dfrac{n^3}{\omega})\)bitset 优化)。

也可以用 Tarjan 跑一遍强连通。时间复杂度 \(O(n^2)\)

Floyd 979ms
#include<bits/stdc++.h>
#define eb emplace_back
using namespace std;
const int N=502;
int n,a[N][N],d[N][N];
vector<int> G[N];
signed main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) cin>>a[i][j];for(int j=1;j<=n;j++){if(a[i][j]==i) break;d[i][a[i][j]]=1;G[i].eb(a[i][j]);//先记录出边}}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){d[i][j]|=d[i][k]&&d[k][j];}}}for(int i=1,flg;i<=n;i++){flg=0;for(int j:G[i]){if(d[j][i]){//若出边能回来 说明有环cout<<j<<"\n";flg=1;break;}}if(!flg) cout<<i<<"\n";}return 0;
}
Floyd bitset 301ms
#include<bits/stdc++.h>
#define eb emplace_back
using namespace std;
const int N=502;
int n,a[N][N];
bitset<N> d[N];
vector<int> G[N];
signed main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) cin>>a[i][j];for(int j=1;j<=n;j++){if(a[i][j]==i) break;d[i][a[i][j]]=1;G[i].eb(a[i][j]);//先记录出边}}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){if(d[i][k]) d[i]|=d[k];}}for(int i=1,flg;i<=n;i++){flg=0;for(int j:G[i]){if(d[j][i]){//若出边能回来 说明有环cout<<j<<"\n";flg=1;break;}}if(!flg) cout<<i<<"\n";}return 0;
}
Tarjan 292ms
#include<bits/stdc++.h>
#define eb emplace_back
using namespace std;
const int N=502;
int n,a[N][N],dfn[N],low[N],tim,c[N],idx;
vector<int> G[N];
stack<int> st;
bitset<N> vis;
inline void tarjan(int x){low[x]=dfn[x]=++tim;st.push(x),vis[x]=1;for(int i:G[x]){if(!dfn[i]) tarjan(i),low[x]=min(low[x],low[i]);else if(vis[i]) low[x]=min(low[x],dfn[i]);}if(dfn[x]==low[x]){++idx;while(1){int t=st.top();st.pop(),vis[t]=0,c[t]=idx;if(t==x) break;}}
}
signed main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) cin>>a[i][j];for(int j=1;j<=n;j++){if(a[i][j]==i) break;G[i].eb(a[i][j]);}}for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(c[a[i][j]]==c[i]){cout<<a[i][j]<<"\n";break;}}}return 0;
}

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

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

相关文章

Cohesity NetBackup 11 for Linux Windows - 领先的企业备份和恢复解决方案

Cohesity NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案Cohesity NetBackup 11 for Linux & Windows - 领先的企业备份和恢复解决方案 Comprehensive enterprise data protection 请访问原…

JEB Pro v5.33 (macOS, Linux, Windows) - 逆向工程平台

JEB Pro v5.33 (macOS, Linux, Windows) - 逆向工程平台JEB Pro v5.33 (macOS, Linux, Windows) - 逆向工程平台 Reverse Engineering for Professionals. 请访问原文链接:https://sysin.org/blog/jeb/ 查看最新版。原…

2025年知名的大连装修效果图家装方案优选排行

2025年知名的大连装修效果图家装方案优选排行 随着人们生活品质的提升,家装需求日益多样化,选择一家靠谱的装修公司至关重要。大连作为东北地区的重要城市,装修市场竞争激烈,涌现出许多优秀的家装企业。本文根据2…

2025年评价高的杭州房屋装修热门口碑推荐

2025年评价高的杭州房屋装修热门口碑推荐 随着杭州城市化进程的加速和居民生活品质的提升,房屋装修需求持续增长。2025年,杭州装修市场竞争激烈,消费者更加注重装修公司的口碑、设计水平、施工质量及售后服务。本文…

【转载】Opencv 中 waitkey() 0xFF,“0xFF”的作用解释「建议收藏」

【转载】Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释「建议收藏」大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释「建议收藏」,希望能够帮…

HSV(三通道)———— H(色相) S(饱和度) V(明度)

HSV(三通道)———— H(色相) S(饱和度) V(明度)HSV的详细含义 Hue(色相):表示颜色类型,范围是 0 ~ 180(OpenCV中8位图像将0~360缩放到此范围)。 Saturation(饱和度):颜色的纯度,0(灰色)~ 2…

「比赛游记」CSP2025 游记

请求起飞第一周模拟赛,飞 飞 飞飞 飞,将军用 T1 把我飞飞了 . 第二周模拟赛,飞 飞 飞 飞飞,忘了谁用 T1 把我飞飞了 . 第三周模拟赛,飞飞 飞飞 飞飞 飞飞,是人类吗还 . 大赛能不能打好是有前兆的吗,NOI 前就感觉…

2025年10月脸颊有晒斑产品推荐榜:五款淡斑精华实测排行与解析

入秋以后,紫外线强度虽下降,但夏季累积的晒斑开始显色,脸颊对称或散落的褐色斑点成为镜子里的“常驻嘉宾”。很多人发现,单靠粉底已遮不住边缘模糊的色块,而盲目刷酸、猛药叠加又引发泛红脱皮,陷入“淡斑—敏感—…

应用安全 --- PC安全 之 VMP2 IAT修复

应用安全 --- PC安全 之 VMP2 IAT修复加密工具选择 vmp2.13.8 加密选项内存保护 (是):程序运行时,它的内容会放在电脑的内存里。这个选项就像是给内存里的程序加了一个“障眼法”,防止破解者用特殊工具直接“偷看”…

2025年10月又红又痒用什么产品对比榜:五款精华舒缓泛红瘙痒实测

入秋以后,门诊里因为“又红又痒”来求助的人明显增多。很多人白天被空调风一吹,脸颊就烧得发烫;夜里一抓,耳后、鼻翼立刻起小疹子。第二天还要戴口罩上班,化妆品不敢上,防晒霜也刺痛,恶性循环让情绪跟着崩盘。皮…

2025年10月熬夜急救产品推荐榜:敏感肌可用急救精华排行

凌晨一点还在亮着的屏幕、第二天早八的会议、镜子里的蜡黄与毛孔,是多数都市人再熟悉不过的场景。中国睡眠研究会2024年发布的《职场青年睡眠报告》显示,18-35岁人群中,主动或被动熬夜比例高达76%,其中62%的人次日…

2025年10月熬夜急救产品榜单:从暗沉到透亮的效果排行

凌晨两点还在屏幕前赶方案、追剧或哄娃,第二天却必须素颜见客户——这是当代都市人最常见的熬夜场景。肤色暗沉、眼下青黑、局部泛红、粉底遮不住的倦容,让“急救”成为晨间护肤关键词。艾瑞咨询《2025中国功效护肤白…

从损坏/格式化/删除的源中提取数据的 7 款数据恢复软件

现代生活的现实促使越来越多的组织寻求最佳的开源数据恢复软件。尽管专业人士广泛使用云备份服务,但强烈建议保留多种类型的备份,以免丢失重要文档。 数据恢复软件通常旨在扫描存储数据库,然后对从损坏/格式化/删除…

2025年10月干皮精华产品推荐榜:权威数据下的五强精华评价

秋风一起,干皮人群最先感知:洗完脸紧绷、午后起屑、上妆卡粉,甚至冷风一吹就泛红刺痛。后台留言里,“求一瓶真正让干皮安稳过冬的精华”出现频率最高。用户画像很集中:25-40岁,职场高压、熬夜多,既往尝试过补水…

2025年10月干皮精华产品评测榜:五款热门单品吸收度与舒缓力排名

秋风一起,干皮人群最先感知:洗完脸紧绷、上妆卡粉、下午起屑,夜间甚至伴随瘙痒泛红。皮肤科门诊数据显示,10月因屏障受损就诊人数较夏季增加三成,其中七成自述“精华没少用,却越补越干”。原因多集中在三点:精华…

2025年10月色斑淡化产品推荐评测:权威榜单帮你锁定淡斑利器

国庆长假刚过,不少人在镜子前发现脸颊、鼻梁的色斑比夏天更深了。拍照要开三级美颜、遮瑕膏越买越厚、医美预算又暂时排不上号——这种“色斑焦虑”在25-45岁城市女性中尤为常见。国家药监局2024年化妆品注册备案年报…

2025年10月色斑淡化产品评测榜:从传明酸到烟酰胺浓度全解析排行

色斑淡化需求往往出现在三种典型场景:一是长期户外或熬夜后,肤色暗沉、局部色块明显;二是医美项目后,需要维持效果并减少反黑;三是敏感肌在换季时出现炎症后色素沉着。用户普遍担心“成分刺激”“效果反复”“停用…

Mac 数据恢复软件方案:最好的 Mac 数据恢复软件榜单

数据丢失对于普通 Mac 用户和面临重大财务损失风险的企业来说都是一个大问题。虽然有些数据没有金钱价值,但您可能与它(照片或视频)有着情感上的联系,这使得它无可替代,也意味着拥有一款优秀的 Mac 数据恢复软件是…

回收站恢复:Windows 和 Mac 用户完整指南

回收站(在 macOS 上称为“废纸篓”)是任何操作系统中的重要工具,它允许用户检索意外或过早删除的文件。无论是几个文档还是包含重要文件的整个文件夹,了解如何从回收站恢复数据都可以为用户省去很多麻烦。本文将探…

适用于 Windows 11 的分区恢复软件,帮您轻松恢复删除或丢失的分区

如果要使用磁盘存储数据,则必须先在磁盘上创建一个或多个分区。如果您发现包含重要文件的分区在 Windows 11 上丢失并变为未分配状态,则该分区上的文件也会丢失。但是,在大多数情况下,这些文件并非永远消失。使用专…