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

Codeforces 986A Fair 题解

题目链接

Codeforces 986A Fair

Task 1

由于城市个数巨大(\(10^5\)),我们考虑存储每个点到各商品产地最短距离,即 dis 数组。只需对于每个点跑一遍单源最短路,再更新答案即可,时间复杂度 \(O(n^2)\)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const int N=1e5+10,K=105;
int n,m,k,s;
int a[N],dis[N][K],tmp[N];
vector<int> f[N];void bfs(int x){memset(tmp,0x3f,sizeof tmp);queue<int> q;q.push(x),tmp[x]=0;while (!q.empty()){int u=q.front();q.pop();for (auto v:f[u]){if (tmp[u]+1<tmp[v]) q.push(v),tmp[v]=tmp[u]+1;}}for (int i=1;i<=n;++i) dis[i][a[x]]=min(dis[i][a[x]],tmp[i]);
}
int main(){scanf("%d%d%d%d",&n,&m,&k,&s);for (int i=1;i<=n;++i) scanf("%d",a+i);while (m--){int u,v;scanf("%d%d",&u,&v);f[u].push_back(v);f[v].push_back(u);}memset(dis,0x3f,sizeof dis);for (int i=1;i<=n;++i) bfs(i);for (int i=1;i<=n;++i){sort(&dis[i][1],&dis[i][k+1]);ll ans=0;for (int j=1;j<=s;++j) ans+=dis[i][j];printf("%lld ",ans);}return 0;
}

Task 2

注意到我们并不在乎具体是哪个城市提供了什么商品,只需要知道某一城市拿到商品运费最小为几。所以,我们可以对每种商品考虑。每次 bfs,将这个商品所有产地入队,求出这个商品产地到每个城市的最小运费。这样就只需做 \(k\) 次 bfs,时间复杂度 \(O(nk\log{k})\),瓶颈在排序。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const int N=1e5+10,K=105;
int n,m,k,s;
int a[N],dis[N][K];
vector<int> f[N],g[K];void bfs(int x){queue<int> q;for (auto i:g[x]) q.push(i),dis[i][x]=0;while (!q.empty()){int u=q.front();q.pop();for (auto v:f[u]){if (dis[u][x]+1<dis[v][x]) q.push(v),dis[v][x]=dis[u][x]+1;}}
}
int main(){scanf("%d%d%d%d",&n,&m,&k,&s);for (int i=1;i<=n;++i) scanf("%d",a+i),g[a[i]].push_back(i);while (m--){int u,v;scanf("%d%d",&u,&v);f[u].push_back(v);f[v].push_back(u);}memset(dis,0x3f,sizeof dis);for (int i=1;i<=k;++i) bfs(i);for (int i=1;i<=n;++i){sort(&dis[i][1],&dis[i][k+1]);ll ans=0;for (int j=1;j<=s;++j) ans+=dis[i][j];printf("%lld ",ans);}return 0;
}
http://www.jsqmd.com/news/450039/

相关文章:

  • Word文件转PDF、WPS在线打印、js提取Word文件内容、轻松将Word文档转为PDF
  • PB反编译工具,PB反编译大师,PB反编译器,PB代码恢复工具
  • 计算机毕业设计springboot基于java的大学生作业查重系统 基于Java的高校学生作业原创性检测平台 SpringBoot框架下的学术作业相似度分析系统
  • 三极管电平转换电路 - 指南
  • 计算机毕业设计springboot二手汽车交易平台 基于SpringBoot架构的二手车在线销售与信息管理系统 SpringBoot驱动的二手车辆数字化交易服务系统
  • 北师大版教材适配|5款宝藏虚拟实验品牌,老师家长直接抄作业 - 品牌测评鉴赏家
  • tt: as said
  • 快捷支付高并发处理与风控优化方案
  • 扩散模型虚拟试穿 IDM-VTON项目实战
  • 285_尚硅谷_反射的快速入门(1)
  • 如何评价ControlNet v1.1的InPaint版本?[特殊字符]
  • Git高效使用指南:从入门到精通
  • 高中化学学习神器!10款实用虚拟实验室软件汇总 - 品牌测评鉴赏家
  • 混排涡扇发动机设计点循环计算程序:与F119发动机公开资料比较的代码注释详细规范
  • MATLAB手势识别技术:静态手势与视频图像识别课程设计报告及AD电路图详解
  • npm离线打包
  • 旋转坐标系下的无传感器器控制方法:基于旋转高频注入和同轴系高通滤波器的误差提取与位置观测器
  • C++ -移动语义
  • 算法人权评估:自动检测歧视性代码
  • 量子机器学习流水线的技术架构与测试痛点
  • 芯片制造企业如何选择PDF转Word粘贴方案?
  • allure系统环境变量配置了,cmd输入allure --version报错
  • 基于大数据的粮食产量预测及可视化平台
  • 2026年最新评测:济南联想服务器都有哪些型号?一文为你讲解清楚!
  • 基于VMD分解算法的信号处理与数据预测程序
  • OpenClaw 第三篇:环境准备 + 本地部署,5 分钟拉起来
  • 西陆房产管理系统xiluHouse 2.1正式版|FastAdmin+ThinkPHP+UniApp多端兼容房产SaaS平台
  • 医疗OA系统如何实现跨平台内容同步粘贴?
  • 工程建筑行业如何通过WebUploader实现BIM模型文件夹的目录结构续传?
  • hot100 5.最长回文子串