[CF2B] The least round way - dp
给定由非负整数组成的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");
}
}
[CF2B] 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 ...
- CF2B The least round way(贪心+动规)
题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...
- codeforces 2B The least round way(DP+数学)
The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎 ...
- CF2B The least round way 题解
都是泪呀...↑ 题目传送门 题意(直接复制了QWQ) 题目描述 给定由非负整数组成的\(n \times n\)的正方形矩阵,你需要寻找一条路径: 以左上角为起点, 每次只能向右或向下走, 以右下角 ...
- 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 ...
- Codeforces Beta Round #2B(dp+数学)
贡献了一列WA.. 数学很神奇啊 这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少 ...
- Codeforces2B - The least round way(DP)
题目大意 给定一个N*N的格子,每个格子里有一个非负数,要求你找出从左上角到右下角的一条路径,使得它满足路径上的格子里的数全部乘起来的积尾部0最少 题解 如果要产生0肯定是2*5得出来的,最终的乘积可 ...
- CF 375C Circling Round Treasures [DP(spfa) 状压 射线法]
C - Circling Round Treasures 题意: 在一个$n*m$的地图上,有一些障碍,还有a个宝箱和b个炸弹.你从(sx,sy)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...
随机推荐
- 使用jdbc将mysql数据库中的内容封装为指定对象的list集合
使用jdbc将mysql数据库中的内容封装为指定对象的list集合 public List<User> findAll() { private JdbcTemplate template ...
- C#24种设计模式汇总
创建型:6 01. 简单工厂模式 08. 工厂方法模式 09. 原型模式 13. 建造者模式 15. 抽象工厂模式 21. 单例模式 结构型:7 06. 装饰模式 07. 代理模式 12. 外观模式 ...
- 就不能换DB吗? 抽象工厂模式
15.1 就不能换DB吗? 15.2 最基本的数据访问程序 namespace 抽象工厂模式 { class Program { static void Main(string[] args) { U ...
- gitlab被屏蔽问题
There was an error with the reCAPTCHA. Please solve the reCAPTCHA again. 解决办法 俗话说:哪里有碍事的墙,哪里就使劲推好了 h ...
- 并查集find,merge操作
一.find操作 //find操作路径压缩版 inline int find(int x){ if(fa[x]==x) return x; int t=find(fa[x]); fa[x]=t; re ...
- 数据库->神奇的concat_ws函数
神奇的concat_ws函数 了解到concat_ws函数起因是因为:朋友给我发了一份面试题,其中有一句看似很简单的查询,但是我就是没做出来.如下图: 经查阅资料了解通过两个字段拼接并且用“_”进 ...
- (办公)记事本_linux压缩命令
参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show 在Linux中可以识别的常见的压缩格式有十几种,比如&quo ...
- npm run build 打包后空白页解决问题两种情况
问题一:assetsPublicPath配置错误 解决办法:打开config/index.js文件 build:{ // assetsPublicPath: '/' ass ...
- springBoot 与 springMVC的区别
springMVC 1.是基于Servlet的一个MVC框架(DispatcherServlet.ModelAndView.ViewResolver),解决web开发问题 缺点是 :配置复杂 要简化使 ...
- 快捷使用 Iterm2 连接SSH ( HTTP代理 )
1,配置iterm2 > Preferences.. > Profiles > 填写:name : 别名 : Command : expect /Users/jerryxu/wwwr ...