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

[ABC077D] Small Multiple 同余最短路

之前写过一篇介绍同余最短路的文章,其实写的蛮烂得,鸽了这道题好久,今天中午好不容易算是做出来了。

题意

给定一个 \(K\),求出来 \(V=xk\)(\(x\) 为正整数),使得这个 \(V\) 的各数位和是最小的。

这个 \(K\) 的级别是 1e5 的。

做法

我们发现直接去具体搞明白到底是哪一个数几乎是不可能的,我们不排除有一个长到你无法想象的树中间有一大堆 0 最后还是最优的,所以我们基本上否决的直接得出数的想法了。

那么我们的重心就自然而然转向维护数位和上了。

我们不难发现一个 \(V\) 的必然的性质是 \(V%K=0\),而这个 \(K\) 的范围又是如此的眉清目秀。

为什么不维护所有数呢?我这么想到。

往同余最短路考虑一下。

我们设 \(dis[i]\) 表示 \(%K=i\) 的数字中,数位和最小的数字是多少。

我们选择从小到大思考,一个数想到一个更大的数,归根结底有两种方式。

一个是加一,一个是乘十,其他的都是这个的组合。

所以我们不难列出来约束条件。

\(f_i \ge f_{(i+10)%K}\)

\(f_i +1 \ge f_{(i+1}%K\)

这样就显然起来了,按照这个约束连边就行了,应该都会同余最短路和差分约束吧,到这里就结束了。

代码↓

#include <bits/stdc++.h>
using namespace std;
const int MN=1e6+116;
struct Node{int nxt, to, w;
}node[MN];
int head[MN], tottt;
void insert(int u, int v, int w){node[++tottt].to=v;node[tottt].w=w;node[tottt].nxt=head[u];head[u]=tottt; return;
}
int K;
int dis[MN], vis[MN];
void Dijkstra(int s){memset(dis,0x3f,sizeof(dis));memset(vis,false,sizeof(vis));priority_queue <pair<int,int>> q;q.push({0,s}); dis[s]=1;while(!q.empty()){int u=q.top().second; q.pop();if(vis[u]) continue; vis[u]=true;for(int i=head[u];i;i=node[i].nxt){int v=node[i].to, w=node[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push({-dis[v],v});}}}
}
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin>>K;for(int i=0; i<K; ++i){insert(i,(i*10)%K,0);insert(i,(i+1)%K,1);}Dijkstra(1);cout<<dis[0]<<'\n';return 0;
}
http://www.zskr.cn/news/9576.html

相关文章:

  • c# 保存文件 - 先保存到临时文件,保存成功后修改文件名
  • 20250427_信安一把梭_No11
  • 运营商数据分类分级:最佳实践、典型案例与智能化方案
  • .NET性能优化-使用RecyclableBuffer取代RecyclableMemoryStream
  • 20250415_信安一把梭_encode
  • Linux开机启动进入紧急模式emergency mode的解决方法 - 规格严格
  • Apifox调试报错信息
  • 故障处理:Oracle 19.20未知BUG导致oraagent进程内存泄漏的案例处理
  • esp32 stm32 ros2 三者区别
  • 前端 10 个 JS 神 API,开箱即用
  • 故障处理:清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业
  • Web自动化测试智能体详解
  • Playwright自动化测试框架与AI智能体应用
  • Python __init__.py文件
  • 20250330_信安一把梭_考试篇
  • VS Code配置Conda环境完整指南
  • 三度蝉联Gartner SASE领导者:唯一厂商的技术实力解析
  • 水水水 || CSP-S 2025 初赛
  • HCM 性能优化函数
  • Nginx配置里alias和root的区别
  • 国产DevOps生态崛起:Gitee如何赋能企业数字化转型
  • 【OpenCV】10 图像滤波
  • 50系GPU上安装MMCV
  • 20250308_信安一把梭_web
  • 萤石设备视频接入平台EasyCVR国标GB28181视频平台整合铁路抑尘喷洒智能视频监控方案
  • 从零到Offer:Java Socket面试通关秘籍-Socket面试为何总让人“心跳加速”? - 实践
  • 详细介绍:Linux驱动开发笔记(七)——并发与竞争(下)——自旋锁信号量互斥体
  • 2025年项目管理软件革命:AI与空间计算如何重塑企业协作范式
  • C语言 第三讲:分支和循环(上) - 教程
  • Vue3 新趋势:弃用 ECharts!最强图表库诞生!