查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记载吧!

求从左上角到右下角所经过的数字之积末端所含0最小的个数

终究的积可以当作A*2^x*5^y,0的个数就是x,y中较小的数,

所以只需要分别dp求出出现2,5的最小个数,再进行比拟,选最小的一个

题目有个陷进:

就是给的数据可认为0,如果出现0的话,经过0这点的话结果为0,就是1个0,

如果不经过0的话,答案可能为0也可能>=1,所以只要求出不经过0出现最小0的个数跟1比拟,

如果大于1的话,最小的就是经过0的答案,否则就不经过0.

    每日一道理
那蝴蝶花依然花开花落,而我心中的蝴蝶早已化作雄鹰飞向了广阔的蓝天。
#include<stdio.h>
#include<string.h>
#define N 1001
#define inf 0x3fffffff
int dp[N][N][2];
int num[N][N][2];//记载每个数可分解2,5的个数
int dir[N][N][2];//记载方向
void prif(int n,int x,int y)
{
if(x==y&&x==0)return;
if(dir[x][y][n]==0)
{
prif(n,x-1,y);
printf("D");
}
else if(dir[x][y][n]==1)
{
prif(n,x,y-1);
printf("R");
}
}
int main()
{
int n,i,j,k,a,b,ii,flag;
while(scanf("%d",&n)!=-1)
{
flag=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
dp[i][j][0]=dp[i][j][1]=inf;
scanf("%d",&a);
if(a==0){flag=1;ii=i;continue;}//记载0所在行数
k=0;b=a;
while(b%2==0)
{
k++;
b/=2;
}
num[i][j][0]=k;//记载a可分解2的个数
b=a;k=0;
while(b%5==0)
{
k++;
b/=5;
}
num[i][j][1]=k;//记载a可分解5的个数
}
dp[0][0][0]=num[0][0][0];
dp[0][0][1]=num[0][0][1];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(i-1>=0)
{
if(dp[i][j][0]>dp[i-1][j][0]+num[i][j][0])
{
dp[i][j][0]=dp[i-1][j][0]+num[i][j][0];
dir[i][j][0]=0;
}
if(dp[i][j][1]>dp[i-1][j][1]+num[i][j][1])
{
dp[i][j][1]=dp[i-1][j][1]+num[i][j][1];
dir[i][j][1]=0;
}
}
if(j-1>=0)
{
if(dp[i][j][0]>dp[i][j-1][0]+num[i][j][0])
{
dp[i][j][0]=dp[i][j-1][0]+num[i][j][0];
dir[i][j][0]=1;
}
if(dp[i][j][1]>dp[i][j-1][1]+num[i][j][1])
{
dp[i][j][1]=dp[i][j-1][1]+num[i][j][1];
dir[i][j][1]=1;
}
}
}
k=dp[n-1][n-1][0]>dp[n-1][n-1][1];
if(flag==1&&dp[n-1][n-1][k]>1)//如果有0,而且求得的最小值大于1,就选择经过0的一条路径
{
puts("1");
for(i=1;i<=ii;i++)
printf("D");
for(j=1;j<n;j++)
printf("R");
for(i=ii+1;i<n;i++)
printf("D");
}
else
{
printf("%d\n",dp[n-1][n-1][k]);
prif(k,n-1,n-1);
}
printf("\n");
}
return 0;
}

文章结束给大家分享下程序员的一些笑话语录:

 一边用着越狱的ip,一边拜乔帮主的果粉自以为是果粉,其实在乔帮主的眼里是不折不扣的叛徒。

---------------------------------
原创文章 By
最小和较小
---------------------------------

最小较小codeforces 2B The least round way的更多相关文章

  1. Codeforces #2B The least round way(DP)

    Description 有一个n*n的正整数矩阵,要你求一条从第一行第一列的格子到第n行第n列的路,使得你走过的格子里面的数乘起来的值末尾的零的个数最小.输出最小个数. Input 第一行包括1个数n ...

  2. Codeforces 2B The least round way(dp求最小末尾0)

    题目链接:http://codeforces.com/problemset/problem/2/B 题目大意: 给你一个nxn的矩形,找到一条从左上角到右下角的路径,使得该路径上所有数字的乘积的末尾0 ...

  3. codeforces 2B The least round way(DP+数学)

    The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎 ...

  4. codeforces 2B The least round way 【DP】

    VJ上可找到中文题意. 思路: 首先分解有多少2与多少5.接下来就是dp. 分两次,一次是根据2的数量贪心,另外一次是根据5的数量贪心,看哪一次乘积的末尾0最少. 需要注意的是两点: 1.输入有0的情 ...

  5. Codeforces 2B. The least round way

    There is a square matrix n × n, consisting of non-negative integer numbers. You should find such a w ...

  6. CodeForces Contest #1110: Global Round 1

    比赛传送门:CF #1110. 比赛记录:点我. 涨了挺多分,希望下次还能涨. [A]Parity 题意简述: 问 \(k\) 位 \(b\) 进制数 \(\overline{a_1a_2\cdots ...

  7. 最小割dp Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E

    http://codeforces.com/contest/724/problem/E 题目大意:有n个城市,每个城市有pi件商品,最多能出售si件商品,对于任意一队城市i,j,其中i<j,可以 ...

  8. codeforces B. George and Round 解题报告

    题目链接:http://codeforces.com/contest/387/problem/B 题目意思:给出1-n个问题,以及要满足是good rounde条件下这n个问题分别需要达到的compl ...

  9. CodeForces B. The least round way(dp)

    题目链接:http://codeforces.com/problemset/problem/2/B B. The least round way time limit per test 5 secon ...

随机推荐

  1. 视频捕捉全教程(vc+vfw)

    目 录 一. 视频捕获快速入门 二.基本的捕获设置 1.设置捕获速度: 2.设置终止捕获 3.捕获的时间限制 三.关于捕获窗口 1.创建一个AVICAP捕获窗口 2.将一个捕获窗口连接至捕获设备 3. ...

  2. COCOS2D-X学习笔记(一)-----Node类的学习

    Node类(在3.0版本以下叫CCNode):节点类. 本文记录以下几个方法的学习笔记: init()和onEnter()这俩个方法都是CCNode的方法.其区别如下: 1.其被调用的顺序是先init ...

  3. Struts2中date标签乱码问题解决

    1.出现的问题如下图 八月份以前没有问题,但从九月份开始就会出现乱码问题 2.开始解决 (1)在使用标签的JSP中加入: <%@taglib prefix="s" uri=& ...

  4. elementaryOS系统托盘解决方案

    在用 eOS 的时候,你可能会遇到系统托盘的问题,有些需要托盘的软件比如说 QQ,没办法在 eOS 的 Wingpanel 上显示,一最小化就不见了,或者出现一个 System tray 的窗口,很麻 ...

  5. HDU 5122 K.Bro Sorting

    K.Bro Sorting Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Tot ...

  6. poj 1026(置换群)

    题意:给你一个变换规则,和一个字符串,问经过k次变换后得到的字符串. 思路:开始的时候试图去找它的整个周期,谁知道周期太大了,各种RE,后来在得知此题需要用置换群来优化,第一次接触置换群学习了下! 代 ...

  7. CSS选择器的兼容性

    CSS 1 CSS2.1 CSS3 :hover 在IE6中只有a元素可用.E:empty 貌似在webkit核心浏览器中有些小bug.如果这个bug依然存在,不太确定如何测试.IE6不支持.clas ...

  8. SVM应用

    我在项目中应用的SVM库是国立台湾大学林智仁教授开发的一套开源软件,主要有LIBSVM与LIBLINEAR两个,LIBSVM是对非线性数据进行分类,大家也比较熟悉,LIBLINEAR是对线性数据进行分 ...

  9. 有关android UI 线程

    1. GUI线程框架 常见的 Swing, SWT框架都是作为单线程子系统来实现的,实际上不仅限于在Java中, Qt.MacOS Cocoa以及其他的环境中的GUI框架都是单线程的.虽然很多人尝试过 ...

  10. SQL游标遍历数据表

    DECLARE @资产编号 VARCHAR(50) ,@gsid VARCHAR(50) DECLARE test_Cursor CURSOR LOCAL FOR SELECT 资产编号,gsid F ...