当前位置: 首页 > news >正文

P8186-传递闭包

Redistributing Gifts S

题意简述

有 n 头牛和 n 个礼物,编号为 1,2,3,...,n,初始时每头牛都分到了与它编号相同的礼物。

奶牛们对所有礼物的喜爱程度都有一个排序,且它们想重新分配礼物。如果存在另一种分配方式,使得每头牛都能得到当前的礼物或比它更好的礼物,则它们可能会采用这种方式。

求每头牛可能得到的对它来说最好的礼物。

即求出每一个一个礼物是否可以通过传递来到某个点,考虑传递闭包

#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn = 5e2+10;
constexpr int INF = LLONG_MAX>>1;int n;
int pos[maxn];         // 拥有礼物的位置
int wi[maxn][maxn];
bitset<maxn> gra[maxn];// bitset 优化 没那么离谱,也就快了一半
int ans[maxn];signed main()
{#ifndef ONLINE_JUDGEfreopen("1.in","r",stdin);freopen("1.out","w",stdout);#endif // ONLINE_JUDGEscanf("%lld",&n);for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){scanf("%lld",&wi[i][j]);if(wi[i][j]==i){pos[i]=j;}}for(int j=1;j<=pos[i];++j){gra[i][wi[i][j]]=1; // 连 i 到期望的礼物}ans[i]=i;// 已经拥有的礼物}for(int k=1;k<=n;++k){for(int i=1;i<=n;++i){if(gra[i][k]){gra[i] |= gra[k];// 优化}}}for(int i=1;i<=n;++i){for(int j=1;j<pos[i];++j){if(gra[wi[i][j]][i])// 存在i期望的礼物能到i{ans[i]=wi[i][j];break;}}}for(int i=1;i<=n;++i){printf("%lld\n",ans[i]);}return 0;
}
http://www.jsqmd.com/news/36631/

相关文章:

  • MCU电路为什么要使用复位芯片?
  • 幂塔问题-扩展欧拉函数
  • P3623 免费道路 - Kruskal
  • 2025年11月安徽合肥正规的除甲醛平台推荐排行榜单
  • 2025年11月安徽合肥除甲醛服务商推荐排行榜前十名
  • 手持贴标机生产源头厂家2025年市场洞察
  • 2025年市场上水果打标枪生产厂家排名前十:陕西彩航包装领跑行业
  • 2025年水果打标枪生产厂家Top10排名:彩航包装装潢有限公司领跑行业
  • 关于在CASS软件中导入SHP文件时出现文字乱码问题的解决方案
  • 关押罪犯P1525:并查集
  • 奶牛抗议-二维偏序优化
  • 4G摄像机国标GB28181接入EasyGBS突然不上线?双网卡智能切换惹的锅!
  • CF2117G 并查集
  • gitlab项目下载地址ip显示字符串问题
  • python中MySQL(pymsql)的使用基础
  • 水箱液位pid控制仿真,综合一阶滞后对象+阀门流量特性+不同厂家pid算法
  • DeepSeek大模型应用与实践 掌握的知识内容
  • 2025年山东视保姆公司综合实力榜单:视保姆眼镜公司/视保姆3V疗法/视保姆镜架源头企业精选
  • AI大模型高级应用 掌握的知识内容
  • 会议中心-贪心/dp
  • 安卓app自动化操作方案实现
  • 详细介绍:热门编程语言的排名及开源贡献比例表格-截至2025年10月
  • 二进制题
  • 人工智能工程技术,掌握的知识内容
  • SQLite 连接串说明
  • SRS(simple-rtmp-server) 一快速环境搭建
  • SQL中GROUP BY WITH ROLLUP和GROUPING 函数的使用
  • ⚡️ 高性能绿色Markdown文档阅读器:Litho Book技能架构深度解析
  • 完整教程:深度学习实战:从图像分类到自然语言处理的完整指南
  • 【完整源码+内容集+部署教程】 黄瓜叶片检测系统源码和数据集:改进yolo11-RVB