洛谷——P1554 梦中的统计

P1554 梦中的统计

题目背景

Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。

题目描述

Bessie的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0 \ldots 90…9):每一个数码在计数的过程中出现过多少次?

给出两个整数 MM 和 NN (1 \leq M \leq N \leq 2 \times 10^91≤MN≤2×109 以及 N-M \leq 5 \times 10^5NM≤5×105),求每一个数码出现了多少次。

输入格式

第 11 行: 两个用空格分开的整数 MM 和 NN

输出格式

第 11 行: 十个用空格分开的整数,分别表示数码 0 \ldots 90…9 在序列中出现的次数。

输入输出样例

输入 #1复制

129 137

输出 #1复制

1 10 2 9 1 1 1 1 0 1
#include<bits/stdc++.h>
#include<algorithm>
using namespace std; 
int n,m,a[10];	
int main(){	
//定义在外边,若定义在里边会出现乱码 
	cin>>n>>m;

	for(int i=n;i<=m;i++){
		for(int tmp=i;tmp;tmp/=10) {
			a[tmp%10]++; 
		}
	}
	for(int i=0;i<=9;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}
### 关于 P1746 离开中山路的 Python 解题思路 对于编号为P1746的题目《离开中山路》,该问题属于图论中的最短路径解类问题。给定地图上的多个节点以及连接这些节点的道路长度,目标是从起点到终点找到一条总距离最小的路径[^1]。 #### 据结构的选择 为了高效处理此类问题,可以采用邻接表来表示输入的地图据。邻接表不仅节省空间而且便于快速访问相连边的信息。此外,在寻找最短路径过程中,优先队列(通常通过堆实现)能够帮助按照当前累计成本从小到大顺序遍历各个顶点[^2]。 #### Dijkstra算法的应用 针对本题特点——即不存在负权边的情况,Dijkstra算法一个合适的选择。此方法从源结点出发逐步扩展已知区域直至覆盖整个网络;每次从未被收录进来的候选集中挑选具有最低估计代价者作为新的探索中心,并更新其相邻未访问过的邻居们的临时标记值直到抵达目的地为止[^3]。 下面是具体的Python代码实现: ```python import heapq def dijkstra(n, edges, start, end): graph = [[] for _ in range(n)] # 构建加权无向图的邻接列表形式 for u, v, w in edges: graph[u].append((v, w)) graph[v].append((u, w)) dist = [float(&#39;inf&#39;)] * n # 初始化所有节点的距离为无穷大 prev = [-1] * n # 记录前驱用于重建路径 pq = [(0, start)] # 将起始位置加入优先级队列并设初始距离为零 dist[start] = 0 while pq: d, node = heapq.heappop(pq) if node == end: # 提早终止条件:当到达终点时停止搜索 break if d > dist[node]: # 跳过已经找到了更优解的情形 continue for neighbor, weight in graph[node]: new_dist = d + weight if new_dist < dist[neighbor]: dist[neighbor] = new_dist prev[neighbor] = node heapq.heappush(pq, (new_dist, neighbor)) path = [] curr = end while curr != -1: path.append(curr) curr = prev[curr] return list(reversed(path)), dist[end] if __name__ == "__main__": N = ... # 输入城市量N M = ... # 道路条M roads = [...] # 所有道路信息[(A_i,B_i,C_i)...] S, T = ..., ... # 出发点S目的地点T result_path, min_distance = dijkstra(N, roads, S-1, T-1) # 注意索引调整 print(f"The shortest distance is {min_distance}.") print("The optimal route:", " -> ".join(map(str,[i+1 for i in result_path]))) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不易撞的网名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值