给定由非负整数组成的n×n 的正方形矩阵,你需要寻找一条路径:

以左上角为起点

每次只能向右或向下走

以右下角为终点 并且,如果我们把沿路遇到的数进行相乘,积应当是最小“round”,换句话说,应当以最小数目的0的结尾.

Solution

考虑到最终答案只取决于 \(2,5\) 因子数中最小的那一个,所以可以拆开考虑,然后就是一个朴素的最小和路径dp了

注意如果原矩阵中包含零,答案要和 \(1\) 取 min 一下

#include <bits/stdc++.h>
using namespace std; vector <int> pat;
int n,a[1005][1005],x[1005][1005],f[1005][1005],ans=1e+9; void solve(int p) {
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++){
a[i][j]=0;
int t=x[i][j];
while(t && t%p==0) t/=p, a[i][j]++;
}
}
memset(f,0x3f,sizeof f);
f[0][1]=0;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
f[i][j]=min(f[i-1][j],f[i][j-1])+a[i][j];
}
}
/*for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) cout<<f[i][j]<<" ";
cout<<endl;
}*/
vector <int> v;
{
int p=n,q=n;
while(p!=1 && q!=1) {
int i=p, j=q;
if(f[i][j]==f[i-1][j]+a[i][j]) {
v.push_back(1); //cout<<"up";
--p;
}
else if(f[i][j]==f[i][j-1]+a[i][j]) {
v.push_back(0); //cout<<"left";
--q;
}
else cout<<"err";
}
while(p!=1) {
--p;
v.push_back(1);
}
while(q!=1) {
--q;
v.push_back(0);
}
reverse(v.begin(),v.end());
if(f[n][n]<ans) {
ans=f[n][n];
pat=v;
}
}
} int main() {
scanf("%d",&n);
int flag=0,posx,posy;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
scanf("%d",&x[i][j]);
if(x[i][j]==0) flag=1,posx=i,posy=j;
}
}
solve(2);
solve(5);
if(ans>1 && flag) {
cout<<1<<endl;
for(int i=1;i<posx;i++) cout<<"D";
for(int i=1;i<posy;i++) cout<<"R";
for(int i=posx;i<n;i++) cout<<"D";
for(int i=posy;i<n;i++) cout<<"R";
return 0;
}
cout<<ans<<endl;
for(int i=0;i<pat.size();i++) {
cout<<(pat[i]?"D":"R");
}
}

最新文章

  1. wex5 实战 HeidiSQL 导入Excel数据
  2. 一个无缝滚动的jquery插件
  3. XMLHTTPRequest对象不能跨域获取数据?!
  4. 消息队列系列(一):.Net平台下的消息队列介绍
  5. emacs 操作集锦
  6. glibc strlen delphi pascal
  7. nmon的安装以及使用
  8. edx 配置smtp发送邮件
  9. 【HDOJ】2424 Gary&#39;s Calculator
  10. Struts 2零配置
  11. php知识(第2天)
  12. ycsb对hbase性能测试的研究
  13. MySQL5.7 JSON类型及其相关函数的学习
  14. Django基础-01
  15. 安卓权限申请处理框架Android-UsesPermission
  16. 国服最强JWT生成Token做登录校验讲解,看完保证你学会!
  17. System.currentTimeMillis() uptimeMillis elapsedRealtime 区别
  18. leecode第四十六题(全排列)
  19. 1.横向滚动条,要设置两个div包裹. 2. 点击切换视频或者图片. overflow . overflow-x
  20. 深度学习原理与框架-卷积网络细节-图像分类与图像位置回归任务 1.模型加载 2.串接新的全连接层 3.使用SGD梯度对参数更新 4.模型结果测试 5.各个模型效果对比

热门文章

  1. MYSQLl给用户授予数据库表权限
  2. 教你用python爬虫监控教务系统,查成绩快人一步!
  3. 基于JavaSwing开发银行信用卡管理系统
  4. 高级UI组件(二)
  5. c#画图之折线图
  6. cobaltstrike使用笔记2
  7. comTest.json文件中内容,被NewsList.vue文件引入
  8. MVC的App_Data中看不到数据库mdf文件
  9. C# SQLITE 使用文档
  10. JS变量+作用域