hihocoder1241 Best Route in a Grid
题目链接:hihocoder 1241
题意:
n*n的格阵,每个方格内有一个数字.蚂蚁从左上角走到右下角,数字是零的方格不能走,只能向右向下走.蚂蚁走的路径上全部方格的的乘积为s,要使s低位0的个数尽量少.问,最少s的末尾包含几个0.
分析:
10=2*5,所以只要统计蚂蚁路径上2的个数和5的个数,二者之中的较小者即为s末尾0的个数.
假设2的个数为x,5的个数为y.
对于路径(x,y),答案是min(x,y).
"路径(p,q)比路径(x,y)好"的充要条件"min(p,q)<min(x,y)".
最优路径(x,y)中x为最小值或者y为最小值.
这个问题可以进行延伸:将路径上数字的乘积用k进制来表示,使得末尾0的个数尽量少.对k进行因子分解,当k是若干个质数的乘积时,k=p1*p2*p3*p4...,对于每一个pi进行一次动归.当上边的主键等于左边时,就应该比较剩余的值,有点不好整了,还是两个质数之积比较简单.当k=p1^m1*p2^m2......时,又该怎么做呢?
代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 #include<queue> 5 #include<math.h> 6 #include<string.h> 7 #include<stdlib.h> 8 using namespace std; 9 typedef long long ll; 10 typedef unsigned long long ull; 11 #define re(i,n) for(int i=0;i<n;i++) 12 int n; 13 const int maxn = 1007; 14 int a[maxn][maxn]; 15 int two[maxn][maxn], five[maxn][maxn]; 16 int s[maxn][maxn][2]; 17 void go(int c[maxn][maxn], int x){ 18 for (int i = 1; i <= n; i++){ 19 for (int j = 1; j <= n; j++){ 20 if (a[i][j] == 0){ 21 c[i][j] = 1e6; continue; 22 } 23 int cnt = 0; 24 for (int k = a[i][j]; k%x == 0; k /= x)cnt++; 25 c[i][j] = cnt; 26 } 27 } 28 } 29 void work(int c[maxn][maxn], int cc[maxn][maxn]){30 re(i, n + 1)s[0][i][0] = s[0][i][1] = s[i][0][0] = s[i][0][1] = 1e6; 31 s[0][1][0] = s[0][1][1] = s[1][0][0] = s[1][0][1] = 0; 32 for (int i = 1; i <= n; i++){ 33 for (int j = 1; j <= n; j++){ 34 if (s[i - 1][j][0] == s[i][j - 1][0]){ 35 s[i][j][0] = c[i][j] + s[i][j - 1][0]; 36 s[i][j][1] = cc[i][j]+min(s[i][j - 1][1], s[i - 1][j][1]); 37 } 38 else if (s[i - 1][j][0]< s[i][j - 1][0]){39 s[i][j][0] = s[i - 1][j][0] + c[i][j]; 40 s[i][j][1] = s[i - 1][j][1] + cc[i][j]; 41 } 42 else{43 s[i][j][0] = s[i][j-1][0] + c[i][j]; 44 s[i][j][1] = s[i][j-1][1] + cc[i][j]; 45 } 46 } 47 } 48 } 49 int main(){50 freopen("in.txt", "r", stdin); 51 cin >> n; 52 re(i, n)re(j, n)scanf("%d", &a[i + 1][j + 1]); 53 go(two, 2), go(five, 5); 54 work(two, five); int p = min(s[n][n][0], s[n][n][1]); 55 work(five, two); int q = min(s[n][n][0], s[n][n][1]); 56 cout << min(p, q) << endl; 57 return 0; 58 }
转载于:https://www.cnblogs.com/weiyinfu/p/4890794.html
hihocoder1241 Best Route in a Grid相关推荐
- Grid-Based Route (Re-)Planning
Grid-Based Route (Re-)Planning 路线规划用于自主代理的导航,例如自动驾驶车辆.机器人和人类(考虑地图服务)基于网格的路由规划研究在二维空间中,将一个初始单元到一个目标单元 ...
- [4]Telerik Grid 简单使用方法
1.columns <% Html.Telerik().Grid(Model).Name("Orders").Columns(columns =>{//绑定列名colu ...
- OpenShift 4 - Ingress、Route与Shard
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 Ingress和Route IngressOperator和IngressC ...
- [pytorch]yolov3.cfg参数详解(每层输出及route、yolo、shortcut层详解)
文章目录 Backbone(Darknet53) 第一次下采样(to 208) 第二次下采样(to 104) 第三次下采样(to 52) 第四次下采样(to 26) 第五次下采样(to 13) YOL ...
- 阅读文献Evaluation of dynamic route planning impact on vehicular communications with SUMO
标题:基于SUMO的动态路径规划对车辆通信的影响评估 ABSTRACT: Simulations are the first approach used by the research communi ...
- Place Route相关
DEF 现在的综合一般分为logic synthesis和physical synthesis,为了让我们综合出来的netlist和PR做完place& route后的netlist有更强的c ...
- 11g Grid Control安装过程的一些“坑”
Oracle提供的图形化管理工具目前主要有三个版本: EMDC:Enterprise Manager Database Control EMGC:Enterprise Manager Grid Con ...
- 使用NVIDIA GRID vPC支持视频会议和算力工具
使用NVIDIA GRID vPC支持视频会议和算力工具 随着2020年的发展,远程工作解决方案已成为许多人的新常态.企业正在寻找行之有效的解决方案,如虚拟桌面基础设施(VDI),以使他们的团队能够在 ...
- CSS grid 的用法
grid 的用法 加三个宽度为 200px 的列. .container {display: grid;grid-template-columns: 200px 200px 200px; } 用 fr ...
最新文章
- 开发自己的山寨Android注解框架
- 常见的集合容器应当避免的坑
- iOS 宏(define)与常量(const)的正确使用
- docker ps 只显示容器名称 显示列名
- springboot配置定时任务及常用的cron表达式
- 生成的url无法显示_快速生成PDF文档~~
- 14.使用 CSS 显示 XML
- java opencv 摄像头,OpenCV使用摄像头
- 给非天才准备的 GRE 单词背诵方案
- RationalDMIS 2020 CAD模型坐标系转换(山涧果子)2021
- 自然语言处理NLP中的N-gram模型
- 2017EC-Scapegoat-(思维+优先队列贪心)
- H3C模拟器中文路径问题(提示:“当前系统用户名中包含非ASCII字符”! )方法尝试:
- [NOIP模拟测试30]题解
- 分组折线图、柱状图实现(多条折线图、柱状图同时显示)实现方式
- iPad Pro如何当外置显示器(win、mac)
- Web端算法部署+流媒体服务器算法部署+Flask+AI健身+Python-web实时检测效果显示
- 广和通携手中国联通研究院、中科创达现网验证全球首例5G模组端到端多切片方案
- 如何使用zotero对毕业设计论文参考文献进行中英文混排
- VMware认证考试科目及课程内容
热门文章
- Khan_Computer Science_Algorithms
- 二十四 Redis消息订阅事务持久化
- 【题解】SCOI2009围豆豆
- LINUX:Contos7.0 / 7.2 LAMP+R 下载安装Php篇
- 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结
- Windows 7安装Oracle 10g的方法
- Node.js学习笔记8
- c语言中文件的读写函数
- C# 特性(Attribute)学习
- 重读博弈论(四)-重要的基本概念的理解:风险爱好、风险中性、风险厌恶(风险避规)...