Codeforces2B - The least round way(DP)
题目大意
给定一个N*N的格子,每个格子里有一个非负数,要求你找出从左上角到右下角的一条路径,使得它满足路径上的格子里的数全部乘起来的积尾部0最少
题解
如果要产生0肯定是2*5得出来的,最终的乘积可以表示为2^x*5^y*C,那么零的个数就是min(x,y)。我们可以先对每个格子里的数预处理下,计算出2和5的个数来,然后DP分别求出2和5的最小个数然后选两者中的最小值,输出路径方法没啥说的,很传统~~还有一个要注意的问题就是如果某个格子的数字为0的情况,这个需要特殊判断一下,我们可以把它当做10,如果最后的结果0的个数大于1则直接输出尾部0的个数为1即可
代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <utility>
using namespace std;
#define MAXN 1005
#define INF 0x7fffffff
int path[MAXN][MAXN][2];
int dp[MAXN][MAXN][2],a[MAXN][MAXN][2],n;
int zerox,zeroy,x;
string s;
bool flag;
int main()
{
scanf("%d",&n);
flag=false;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
scanf("%d",&x);
if(!x)
{
a[i][j][0]=a[i][j][1]=1;
zerox=i,zeroy=j,flag=true;
}
else
{
while(x%2==0) {a[i][j][0]++;x/=2;}
while(x%5==0) {a[i][j][1]++,x/=5;}
}
}
for(int k=0;k<2;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
int ans=INF;
if(i==0&&j==0) ans=0;
if(i!=0&&dp[i-1][j][k]<ans) ans=dp[i-1][j][k];
if(j!=0&&dp[i][j-1][k]<ans) ans=dp[i][j-1][k],path[i][j][k]=1;
dp[i][j][k]=ans+a[i][j][k];
}
int k=dp[n-1][n-1][0]<dp[n-1][n-1][1]?0:1;
if(flag&&dp[n-1][n-1][k]>1)
{
for(int i=0;i<zeroy;i++)
s+="R";
for(int i=0;i<zerox;i++)
s+="D";
for(int i=0;i<n-zeroy-1;i++)
s+="R";
for(int i=0;i<n-zerox-1;i++)
s+="D";
cout<<1<<endl<<s<<endl;
}
else
{
int i=n-1,j=n-1;
while(i>0||j>0)
{
if(path[i][j][k]==1)
s+="R",j--;
else
s+="D",i--;
}
reverse(s.begin(),s.end());
cout<<dp[n-1][n-1][k]<<endl<<s<<endl;
}
return 0;
}
Codeforces2B - The least round way(DP)的更多相关文章
- CF2B The least round way(dp+记录路径)
B. The least round way time limit per test 2 seconds memory limit per test 64 megabytes input standa ...
- codeforces 2B The least round way(DP+数学)
The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎 ...
- Codeforces Beta Round #2 B. The least round way dp
B. The least round way 题目连接: http://www.codeforces.com/contest/2/problem/B Description There is a sq ...
- Codeforces #2B The least round way(DP)
Description 有一个n*n的正整数矩阵,要你求一条从第一行第一列的格子到第n行第n列的路,使得你走过的格子里面的数乘起来的值末尾的零的个数最小.输出最小个数. Input 第一行包括1个数n ...
- [CF2B] The least round way - dp
给定由非负整数组成的n×n 的正方形矩阵,你需要寻找一条路径: 以左上角为起点 每次只能向右或向下走 以右下角为终点 并且,如果我们把沿路遇到的数进行相乘,积应当是最小"round" ...
- Codeforces Beta Round #2B(dp+数学)
贡献了一列WA.. 数学很神奇啊 这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少 ...
- CF 375C Circling Round Treasures [DP(spfa) 状压 射线法]
C - Circling Round Treasures 题意: 在一个$n*m$的地图上,有一些障碍,还有a个宝箱和b个炸弹.你从(sx,sy)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...
- CF 2B The least round way DP+Math
题意: 找出一条路, 使每个节点相乘,得到的数末尾 0 最少 每次移动只能向右或者向下, 找到后打印路径 ///按照题目要求,就是找出一条从左上角到右下角中每个数含2 or 5 最少的路 ///可以用 ...
- Codeforces 837D - Round Subset DP
先算出每个数的pop1(twonum),pop(fivenum)然后DP ans[i][j]表示选i个数有j个2时最多有多少个5 转移方程是 ;j--) { ;w++) { ans[j][w]=max ...
随机推荐
- hive与hbase的区别与联系
共同点:1.hbase与hive都是架构在hadoop之上的.都是用hadoop作为底层存储 区别:2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBa ...
- UIMenuController搭配UIPasteboard,执行拷贝-黏贴操作-b
一.基本概念 UIKit框架中,可以直接执行拷贝黏贴操作的有:UITextView.UITextField和UIWebView,其他控件需要实现相关方法. 关于UIPasteboard ·黏贴板是ap ...
- matlab高斯模板生成,K是归一化系数,上面是一个半径200的高斯模板用来做MSR
R3=; F=zeros(*R3+,*R3+); sigma=R3/; r=; :*R3+ :*R3+ r=(x-R3)*(x-R3)+(y-R3)*(y-R3); ...
- ie6 css sprites重复加载
如果你使用css sprites,那么在ie6下并不能发挥sprites的作用,它还是会每次再重新 加载这个图片,解决方法为为ie6添加下面这条js: <!--[if IE 6]> ...
- csuoj 1352: New Sorting Algorithm
因为每个元素都是移动到比它小1位的元素的后面: 这样的话以后的一定就可以把他们两个打包: 所以用这种方法最多扫一遍就可以了: 但是最小的那个数要不要移动呢? 如果最小的数后面的数都是升序的,那么一直扫 ...
- Android之监测手机网络状态的广播
Android之监测手机网络状态的广播 Android 监控网络状态 Android利用广播监听设备网络连接(断网)的变化情况
- Linux +apache+fastcgi运行c/c++
在Linux上搭建apache+fastcgi环境,说多了都是泪啊. 花费我几天时间,开源软件虽说好用,但是版本众多,文档缺乏,什么都只能自己摸索. 终于成功运行起来,特此记录. 一. apache ...
- linux 访问windows共享
1. windows端建立一个用户user用于共享访问 2. 共享一个目录,设置user可以访问,并在windows系统中确认可以访问 3. linux端创建一个用于挂载共享目录的目录 mkdi ...
- percona-xtrabackup安装及使用教程
安装percona-xtrabackup依赖包(前提已安装mysql) yum -y install perl-CPAN perl-DBD-MySQL perl make gcc gcc-c++ pa ...
- 10. 将摄像机对准物体,并显示整个对准过程,摄像机Zoom
1. 如果把代码放到按钮事件中调用,达不到想要的效果 2. 可以不用委托,但是要在Update函数中写调用CameraZoonIn的代码 3. 有很多需要改进的地方,可以参考使用 iTween 插件达 ...