题意:n * n的数字矩阵,只能向下走和向右走,要求走的数字的积的后面的0最少,求最少的0和路径之一

题解:0 的情况2 种 2 *  5 和乘以 0,记录每个数字分解的2 和 5 的数量,从左上角到右下角使用dp跑出来分别最少的2 和 5,2 和 5个数中少的那个就是答案,如果矩阵中有0就看跑出来的答案是否大于1即可,用g[][][]数组记录路径,dfs输出路径

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<stack>
#include<cstdlib>
#include<queue>
#include<set>
#include<string.h>
#include<vector>
#include<deque>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define eps 1e-4
#define bug printf("*********\n")
#define debug(x) cout<<#x"=["<<x<<"]" <<endl
typedef long long LL;
typedef long long ll;
const int MAXN = 1e3 + 5;
const int mod = 998244353;int f[MAXN][MAXN][2];
int g[MAXN][MAXN][2];
void dfs(int x,int y,int k) {if(x == 1 && y == 1) return;if(g[x][y][k]) {dfs(x - 1,y,k);putchar('D');} else {dfs(x, y - 1,k);putchar('R');}
}
int main()
{int n,x = 0,k;scanf("%d",&n);memset(f,0,sizeof f);for(int i = 2; i <= n; i++)for(int id = 0; id < 2; id++)f[0][i][id] = f[i][0][id] = INF;for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {scanf("%d",&k);if (k == 0) {x = i;} else {while (k % 2 == 0) {f[i][j][0]++;k /= 2;}while (k % 5 == 0) {f[i][j][1]++;k /= 5;}}for (int id = 0; id < 2; id++) {if (f[i - 1][j][id] < f[i][j - 1][id]) {g[i][j][id] = 1;    //往下走f[i][j][id] += f[i - 1][j][id];} else {g[i][j][id] = 0;    //往右走f[i][j][id] += f[i][j - 1][id];}}
//            debug(f[i][j][0]);
//            debug(f[i][j][1]);
//            debug(g[i][j][0]);
//            debug(g[i][j][1]);
        }}if(f[n][n][1] < f[n][n][0])k = 1;elsek = 0;if(x && f[n][n][1] > 1) {printf("1\n");for(int i = 2; i <= x; i++)putchar('D');for(int i = 2; i <= n; i++)putchar('R');for(int i = x + 1; i <= n; i++)putchar('D');} else {
//        debug(k);printf("%d\n",f[n][n][k]);dfs(n,n,k);}return 0;
}

转载于:https://www.cnblogs.com/smallhester/p/11365429.html

The least round way CodeForces - 2B (DP 矩阵 路径)相关推荐

  1. Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】

    题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...

  2. 【bzoj3329】Xorequ 数位dp+矩阵乘法

    题目描述 输入 第一行一个正整数,表示数据组数据 ,接下来T行 每行一个正整数N 输出 2*T行 第2*i-1行表示第i个数据中问题一的解, 第2*i行表示第i个数据中问题二的解, 样例输入 1 1 ...

  3. agc013e Placing Squares(模型转化+dp+矩阵优化)

    题目链接:agc013e Placing Squares 题目大意: 给你一个正整数序列S,长度为m,还有一个正整数n,S中元素升序且都小于n(1≤X1<X2<...<Xm≤n−1) ...

  4. 第九届河南省赛 宣传墙 //状压dp+矩阵快速幂+dfs

    http://nyoj.top/problem/1273 状压dp+矩阵快速幂+dfs 1273-宣传墙 内存限制:64MB 时间限制:1000ms 特判: No 通过数:19 提交数:64 难度:4 ...

  5. 状压搜索 Circling Round Treasures:CodeForces - 375C

    题目:Circling Round Treasures:CodeForces - 375C 题意: 给你一个N*M的地图(N,M<=20),地图上'#'表示障碍物,'B'表示炸弹,数字表示宝藏( ...

  6. 【BZOJ】4861: [Beijing2017]魔法咒语 AC自动机+DP+矩阵快速幂

    [题意]给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量.(60%)n,m<=50,L<=100.(40%)原串长度为1或2,L<=10^18. [算法 ...

  7. CodeForces - 2B The least round way

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

  8. Codeforces Beta Round #17 C. Balance DP

    C. Balance 题目链接 http://codeforces.com/contest/17/problem/C 题面 Nick likes strings very much, he likes ...

  9. Product Oriented Recurrence(Codeforces Round #566 (Div. 2)E+矩阵快速幂+欧拉降幂)

    传送门 题目 fn=c2∗n−6fn−1fn−2fn−3\begin{aligned} &f_n=c^{2*n-6}f_{n-1}f_{n-2}f_{n-3}&\\ \end{alig ...

最新文章

  1. linux执行python不打印_在Python中执行shell程序而不打印到屏幕
  2. init进程(即进程1,或者说linuxrc)的详解
  3. c语言用什么操作系统,用C语言写关于操作系统的一个问题。
  4. JavaScript中的Math方法演示
  5. Android常见的设计模式详解
  6. FinCEN就非托管加密钱包报告规则征集意见时间将截至今日12时59分
  7. 苹果官方将首次参与天猫 618 促销活动;淘宝回应用户账号被禁用980年;Julia 1.5.0 beta1 发布 | 极客头条...
  8. 为什么你的 JavaScript 代码如此冗长?!
  9. android 前后台,Android App前后台监控
  10. 米线店结账程序 装饰着模式_云南大学《设计模式》实验报告2_装饰者模式.doc...
  11. JAVA学子商城项目问题集锦(springboot)
  12. 带SN切换流程_贴片电阻生产工艺流程简介
  13. Android直播带货app源码——直播推流SDK
  14. mysql 如何避免间隙锁_mysql 间隙锁
  15. 在Total Commander下使用sftp操作服务器
  16. 小度智能音箱Pro全新登场,百度软硬件结合如何青出于蓝而胜于蓝?
  17. Spring Cloud中使用jib进行docker部署
  18. Strut2的工作流程
  19. Android和风SDK,Android 和风天气SDK获取天气
  20. c语言中常量有何作用,正确的C语言常量是什么?

热门文章

  1. 两个网段怎么设置网关
  2. 谷歌母公司将分拆出新量子公司,名为“沙箱”
  3. 你见过哪些饭桌上不礼貌的行为?
  4. 江苏地区BA还真是慢得很
  5. 本人24岁,女,现在是一所双非大学的大四本科生,被保研到了华中师范大学,应该去读吗?
  6. 为什么感觉腹部肥胖不好减?
  7. 大家为什么去国企后都不想跳槽了?
  8. 养一台家庭轿车的年费是多少?有的工薪打工者为什么卖车?
  9. 告诉你我身边很多的聪明人,怎样利用科技产品挣钱
  10. 使用 sync.ErrGroup 实现并发搜索文件