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......时,又该怎么做呢?
代码:
#include<iostream> #include<stdio.h> #include<algorithm> #include<queue> #include<math.h> #include<string.h> #include<stdlib.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define re(i,n) ;i<n;i++) int n; ; int a[maxn][maxn]; int two[maxn][maxn], five[maxn][maxn]; int s[maxn][maxn][]; void go(int c[maxn][maxn], int x){ for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if (a[i][j] == 0){ c[i][j] = 1e6; continue; } int cnt = ; ; k /= x)cnt++; c[i][j] = cnt; } } } void work(int c[maxn][maxn], int cc[maxn][maxn]){ re(i, n + 1)s[0][i][0] = s[0][i][1] = s[i][0][0] = s[i][0][1] = 1e6; s[0][1][0] = s[0][1][1] = s[1][0][0] = s[1][0][1] = 0; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if (s[i - 1][j][0] == s[i][j - 1][0]){ s[i][j][0] = c[i][j] + s[i][j - 1][0]; s[i][j][1] = cc[i][j]+min(s[i][j - 1][1], s[i - 1][j][1]); } ][j][]< s[i][j - ][]){ s[i][j][0] = s[i - 1][j][0] + c[i][j]; s[i][j][1] = s[i - 1][j][1] + cc[i][j]; } else{ s[i][j][0] = s[i][j-1][0] + c[i][j]; s[i][j][1] = s[i][j-1][1] + cc[i][j]; } } } } int main(){ freopen("in.txt", "r", stdin); cin >> n; re(i, n)re(j, n)scanf("%d", &a[i + 1][j + 1]); go(two, 2), go(five, 5); work(two, five); int p = min(s[n][n][0], s[n][n][1]); work(five, two); int q = min(s[n][n][0], s[n][n][1]); cout << min(p, q) << endl; return 0; }
hihocoder1241 Best Route in a Grid的更多相关文章
- hihocoder 1241:Best Route in a Grid
#1241 : Best Route in a Grid 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N行N列的非负整数方阵,从左上角(1,1)出发,只能向下 ...
- #1241 : Best Route in a Grid
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N行N列的非负整数方阵,从左上角(1,1)出发,只能向下或向右走,且不能到达值为0的方格,求出一条到达右下角的最佳 ...
- 广大暑假训练1(poj 2488) A Knight's Journey 解题报告
题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A (A - Children of the Candy Corn) ht ...
- [4]Telerik Grid 简单使用方法
1.columns <% Html.Telerik().Grid(Model) .Name("Orders") .Columns(columns => { //绑定列名 ...
- Oracle Grid control 11g及Active DataGuard 11g安装部署
Oracle Grid control 11g及Active DataGuard 11g安装部署(一) 原贴 http://blog.csdn.net/lichangzai/article/detai ...
- MatterTrack Route Of Network Traffic :: Matter
Python 1.1 基础 while语句 字符串边缘填充 列出文件夹中的指定文件类型 All Combinations For A List Of Objects Apply Operations ...
- ExtJS 4.2 Grid组件的单元格合并
ExtJS 4.2 Grid组件本身并没有提供单元格合并功能,需要自己实现这个功能. 目录 1. 原理 2. 多列合并 3. 代码与在线演示 1. 原理 1.1 HTML代码分析 首先创建一个Grid ...
- WPF中Grid实现网格,表格样式通用类
/// <summary> /// 给Grid添加边框线 /// </summary> /// <param name="grid"></ ...
- Application Request Route实现IIS Server Farms集群负载详解
序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一样,时不时的汹涌而至,让我们防不胜防.那么后台的高可用,以及服务器的处理能力就要做一个横向扩展的方案,以使后台业务持续的稳定 ...
随机推荐
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
- Linux基本操作命令之文件查看cat more less tail head
cat 参考之前博客:Linux基础命令之cat使用方法大全 more 命令 命令:more使用权限:所有使用者使用方式:more [选项] filename说明:类似于cat,不过会一页一页的显示内 ...
- android 滑动滚动条调节音量
利用滚动条滑动控制音量: 定义: private SeekBar mseekBarvolume: 以下实现代码: //调节音量--begin------------------------- //音量 ...
- Python使用QRCode模块生成二维码
QRCode官网https://pypi.python.org/pypi/qrcode/5.1 简介python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode ...
- ELF Format 笔记(八)—— 符号的类型和属性(st_info)
我是天空里的一片云,偶尔投影在你的波心,你不必讶异,更无须欢喜,在转瞬间消灭了踪影.你我相逢在黑夜的海上,你有你的,我有我的,方向:你记得也好,最好你忘掉,在这交会时互放的光亮! —— 徐志摩·偶然 ...
- [Top-Down Approach] Chatper 4 Notes
4.2 Virtual Circuit and Datagram Networks VC Set up connection Exchange data Free the connection The ...
- Asp.net MVC 学习系列(一)序
题外话 公司本月开始提供早餐服务,2块天一餐,包括粥,两个包(听说是利口福供应的),一个鸡蛋.良心企业.公司原本有一个内部订餐系统,用Delphi开发的,开发的人早就走光了,也没有留下什么文档,现在项 ...
- POJ1523 SPF[无向图割点]
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8139 Accepted: 3723 Description C ...
- NOIP2010乌龟棋[DP 多维状态]
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- Windows 10 UWP开发:如何不让界面卡死
http://edi.wang/post/2016/2/18/windows-10-uwp-async-await-ui-thread 关于UI线程 这里我们需要一点关于 UI 线程模型的概念,简单的 ...