题目

CF2B The least round way

做法

后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数

则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5\)求两边动规,得出最小值\(ans=min(num_2,num_5)\)

我们贪心地选择最小值所对应的\(2\)或\(5\),然后从\((n,n)\)按动规路径返回

Code

#include<bits/stdc++.h>
typedef int LL;
const LL maxn=1e3+9;
inline LL Read(){LL x(0),f(1); char c=getchar();while(c<'0' || c>'9'){if(c=='-') f=-1; c=getchar();}while(c>='0' && c<='9'){x=(x<<3)+(x<<1)+c-'0'; c=getchar();}return x*f;
}
LL n,m,ax,ay,flag;
LL p[2][maxn][maxn],dp[2][maxn][maxn],a[maxn][maxn];
void Solve(LL x,LL y,LL op){if(x==1 && y==1) ;else if(x==1){Solve(x,y-1,op); printf("R");}else if(y==1){Solve(x-1,y,op); printf("D");}else{if(dp[op][x][y-1]==dp[op][x][y]-p[op][x][y]) Solve(x,y-1,op),printf("R");else Solve(x-1,y,op),printf("D");}
}
int main(){n=m=Read();for(LL i=1;i<=n;++i)for(LL j=1;j<=m;++j){a[i][j]=Read();if(!a[i][j]){ax=i; ay=j;flag=true;}while(a[i][j]%2==0 && a[i][j]){++p[0][i][j]; a[i][j]/=2;}while(a[i][j]%5==0 && a[i][j]){++p[1][i][j]; a[i][j]/=5;}}for(LL i=1;i<=n;++i)for(LL j=1;j<=m;++j){if(i==1 && j==1){dp[0][i][j]=p[0][i][j];dp[1][i][j]=p[1][i][j];}else{if(i==1){dp[0][i][j]=dp[0][i][j-1]+p[0][i][j];dp[1][i][j]=dp[1][i][j-1]+p[1][i][j];}else if(j==1){dp[0][i][j]=dp[0][i-1][j]+p[0][i][j];dp[1][i][j]=dp[1][i-1][j]+p[1][i][j];}else{dp[0][i][j]=std::min(dp[0][i-1][j],dp[0][i][j-1])+p[0][i][j];dp[1][i][j]=std::min(dp[1][i-1][j],dp[1][i][j-1])+p[1][i][j];}}}LL ans(std::min(dp[0][n][m],dp[1][n][m]));if(ans>1 && flag){puts("1");for(LL i=1;i<ax;++i) printf("D");for(LL i=1;i<ay;++i) printf("R");for(LL i=ax;i<n;++i) printf("D");for(LL i=ay;i<m;++i) printf("R");return 0;}printf("%d\n",ans);if(ans==dp[0][n][m]){Solve(n,m,0);}else{Solve(n,m,1);}return 0;
}

转载于:https://www.cnblogs.com/y2823774827y/p/10966316.html

CF2B The least round way(贪心+动规)相关推荐

  1. leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针

    贪心的思路: 得到最小值,再挨个用数组中的值减去最小值,最终值取一个最大的 class Solution { public:int maxProfit(vector<int>& p ...

  2. 导弹拦截(动规,贪心)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  3. 剪绳子(动规、数论、贪心)

    文章目录 题目 数论 思路 代码 复杂度分析 动规一 思路 代码 动规二 思路 代码 对最终结果取模1e9+7 思路 代码 题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是 ...

  4. 关于数位动规(入门到进阶,难度中档)

    数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...

  5. bzoj3875: [Ahoi2014Jsoi2014]骑士游戏 spfa处理有后效性动规

    bzoj3875: [Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的 ...

  6. 树形动规_(技能树)

    技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...

  7. 正则表达式匹配(动规)

    文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...

  8. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

  9. BTTCOJ 问题 G: 逃离地牢 树形动规

    题目描述 小明明又被大威鱼抓住了,大威鱼把小明明关在地牢里,地牢由n * n 个房间组成,小明被困在地牢的最左上角的房间中,出口在最右下角,他想逃出这个诡异的地牢,但是他只能向下或者向右走. 小明每经 ...

最新文章

  1. Latex: 设置 threeparttable footnote 行宽度
  2. nexus代理地址整理
  3. 怎么计算网站高峰期并发量和所需的带宽?
  4. Bootstrap全局css样式_表格
  5. 高斯课堂数电讲义笔记_【法考经验贴】40岁三战主观题127分!他的笔记学习法助他逆袭!...
  6. plsql设置oracle11g,数据库oracle11G,如何通过plsql查询表空间大小,如何通过PLSQL把一个表空间的大小设置成自动扩展...
  7. 我在外包的日子35:二期上线
  8. linux(Ubuntu)常用命令整理 -- 基础篇 -- 持续更新
  9. Android开发笔记(五十八)铃声与震动
  10. JavaScript学习(三十五)—拖动元素
  11. GSM:联通项目中的常见术语(BTS、BSC、MSC、VLR、HLR)
  12. pandas.read_csv() 详解与如何合适的读取行序号与列名
  13. mysql 空值处理
  14. delphi2007 打开项目时,突然报错,提示microsoft.net borland 报错
  15. SAP JCo BAPI的使用(刘欣) 2009-2-6
  16. node mysql菜鸟教程_Node.js 全局对象
  17. java混淆书籍介绍,第二代Java混淆器Allatori功能介绍教程资源
  18. 佳蓝php智能应答系统|在线客服 v1.0,佳蓝PHP智能应答系统|在线客服 v1.0
  19. 推荐一款特别厉害的在线工具,程序员的百宝箱
  20. uip协议栈分析(2)

热门文章

  1. Android BLE学习(三):编写自己的 BLE蓝牙读写工具(功能仿照nrf master control panel)
  2. head在linux命令中什么意思,linux系统中head命令使用说明
  3. java 事务的提出者_java中什么是事务
  4. 线程的run()方法带参情况
  5. 日志分析系统分类有哪些_Java开发日志规范
  6. yml eureka defaultzone 只生效第一个_SpringCloud基础教程(三)-Eureka进阶
  7. python脚本语言采用声音作为手段_python 利用pyttsx3文字转语音过程详解
  8. 商品详细信息的代码html_Web前端,你该有的代码规范
  9. Linux版本_linux版本信息解析
  10. 『设计模式』就因为多收了我2块5,我追着收银员问是不是不懂设计模式--策略模式