题意: 找出一条路, 使每个节点相乘,得到的数末尾 0 最少

每次移动只能向右或者向下, 找到后打印路径

///按照题目要求,就是找出一条从左上角到右下角中每个数含2 or 5 最少的路
///可以用Dp的思想, 然后把每个节点该走的方向记下来
///再从终点回溯,把路径存入栈,再输出
///数据会有0的情况, 这时候我们应该记录离终点最近的0
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int maxn = 1000 + 7;
LL Map[maxn][maxn];
LL Dp[maxn][maxn][2];
char Step[maxn][maxn][2];
stack<char> Mesure;int Factor(int Num, int Base) ///得到因子 2 和 5  的个数
{if(Num == 0) return 1;int ret = 0;while(Num % Base == 0){ret++;Num /= Base;}return ret;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);int n;cin >> n;bool Zero = false;int  Zero_Pos;for(int i = 0; i < n; ++i){for(int j = 0; j < n; ++j){cin >> Map[i][j];if(Map[i][j] == 0){Zero = true;Zero_Pos = i;}Dp[i][j][0] = Factor(Map[i][j],2);Dp[i][j][1] = Factor(Map[i][j],5);}}for(int i = 0; i < n; ++i){for(int j = 0; j < n; ++j){for(int k = 0; k < 2; ++k){if(i == 0 && j == 0) continue;if(i == 0){Dp[i][j][k] += Dp[i][j-1][k];Step[i][j][k] = 'R';}else if(j == 0){Dp[i][j][k] += Dp[i-1][j][k];Step[i][j][k] = 'D';}else{Dp[i][j][k] += min(Dp[i-1][j][k],Dp[i][j-1][k]);Step[i][j][k] = Dp[i-1][j][k] < Dp[i][j-1][k] ? 'D' : 'R';}}}}if(min(Dp[n-1][n-1][0],Dp[n-1][n-1][1]) > 1 && Zero){printf("1\n");for(int i = 0; i < Zero_Pos; ++i) putchar('D');for(int i = 0; i < n-1; ++i) putchar('R');for(int i = Zero_Pos; i < n-1; ++i) putchar('D');//
    }else{printf("%d\n",min(Dp[n-1][n-1][0],Dp[n-1][n-1][1]));int k = 0;k = Dp[n-1][n-1][0] < Dp[n-1][n-1][1] ? 0 : 1;for(int i = n-1, j = n-1; i != 0|| j != 0; ){Mesure.push(Step[i][j][k]);if(Step[i][j][k] == 'D') i--;else j--;}while( !Mesure.empty() ) putchar(Mesure.top()), Mesure.pop();}puts("");return 0;
}

转载于:https://www.cnblogs.com/aoxuets/p/5506885.html

CF 2B The least round way DP+Math相关推荐

  1. CF 221 C Circling Round Treasures - dp - 状压

    题目大意: 给你一张网个图,每个位置是空地.障碍.炸弹.宝藏.起点之一. 规划一条从其点出发不包含炸弹的闭合路线(回路),并可获得最大的利润. 利润定义为路线内部的宝藏收益(可能为负数)之和减去路径长 ...

  2. CF 2B.The least round way

    题目链接 很久以前就见过此题,以前看了题解,然后今天写了写,写的真搓. 1 #include <cstdio> 2 #include <cstring> 3 #include ...

  3. 【CF 149D】Coloring Brackets(dp)

    [CF 149D]Coloring Brackets(dp) D. Coloring Brackets time limit per test 2 seconds memory limit per t ...

  4. Educational Codeforces Round 80 (Rated for Div. 2)SZU cf集训round2 C~E(dp,状压+二分,树状数组+逆向思维)

    C. Two Arrays 题目大意:就是给定两个整数n和m.计算数组对的数量(a,b),使得: 1 .两个阵列的长度都等于m: 2 .每个数组的每个元素都是1到n(包括1和n)之间的整数: 从1到m ...

  5. CF 375C Circling Round Treasures [DP(spfa) 状压 射线法]

    C - Circling Round Treasures 题意: 在一个$n*m$的地图上,有一些障碍,还有a个宝箱和b个炸弹.你从(sx,sy)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...

  6. java math round小数_Java Math round() 使用方法及示例

    Java Math round() 使用方法及示例 Java Math round()方法将指定的值四舍五入为最接近的int或long值,然后将其返回. 也就是说,1.2四舍五入为1,1.8四舍五入为 ...

  7. CodeForces - 2B The least round way

    B. The least round way time limit per test2 seconds memory limit per test64 megabytes inputstandard ...

  8. java math round小数_Java——Math的round方法

    代码如下,后面的注释是输出的结果 public static voidmain(String[] args) { System.out.println(Math.round(0.399));//0 S ...

  9. EXCEL的几个取整函数对比,int() round() ceiling() ceiling.math()等

    1目标 我们处理EXCEL数据经常要遇到以下的需求 取整 取倍数 按任意数取倍数 2 简单取整函数 int() int()只能最简单取整,无任何参数 3 round() 四舍五入取整函数 &  ...

最新文章

  1. OpenCV读写视频文件解析
  2. FloodFill算法详解及应用
  3. Android makefile
  4. oracle aia,[zz] What Are Oracle AIA, PIP and How Do They Work?
  5. 转:ReLU激活函数:简单之美
  6. 互联网行业不需要中年人,那些35岁离开BAT的人都去哪了?
  7. 课堂随笔01--进制转换
  8. SQL Server 2019 安装教程(详细免费,自定义安装)
  9. 实现Codeblock支持C99标准
  10. vista任务管理器_为什么我的Windows Vista资源管理器发送到菜单挂起或打开缓慢?...
  11. 经纬度格式转换-(互转 度转度分秒 度分秒转度……)
  12. 管理科学与运筹学(MS/OR)国际权威期刊
  13. Allegro铜皮动静态切换操作指导
  14. 命令行登陆北邮校园网
  15. OpenGL学习——入门篇 第三章 四个变换及模拟地球公转
  16. 查询每个部门工资最低的两个员工的编号,姓名,工资
  17. Altium 常用快捷键
  18. python打开docx出错_导入pythondocx时出错?
  19. ansys的kbc_ANSYS单调加载、滞回曲线
  20. 医药CRM解决方案,助力医药企业数字化转型

热门文章

  1. c#中为datagrid添加下拉列表框
  2. 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
  3. ----移动端移动端调试神器vConsole----
  4. gitlab之gitlab-ci和gitlab-runner二
  5. eclipse 开发常见问题集锦
  6. .17-浅析webpack源码之compile流程-入口函数run
  7. 阿里云 centos oracle安装
  8. Okhttp----缓存的加入方式----附完整demo
  9. Android面试题目(10) 内存泄露
  10. Android 打包流程