[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)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...
随机推荐
- C#建立自己的测试用例系统
引言 很多时候,需要对类中的方法进行一些测试,来判断是否能按要求输出预期的结果. C#提供了快速创建单元测试的方法,但单元测试不仅速度慢不方便,大量的单元测试还会拖慢项目的启动速度. 所以决定自己搞个 ...
- HTTPS原理及流程
HTTPS为什么更安全:数据对称加密传出,对称密钥使用非对称加密协商. HTTPS就一定安全吗:不一定,如果用户在浏览器端执意访问证书可疑或过期的站点,就存在安全隐患. --- HTTPS实现原理:h ...
- JavaScript-其他设计模式
其他设计模式 JavaScript 中不常用 对应不到经典场景 原型模式-行为型 clone 自己,生成一个新对象 java 默认有 clone 接口,不用自己实现 //'object.creat'用 ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- You are my great sunshine
"何为孤寂?" "清风,艳日,无笑意." "可否具体?" "左拥,右抱,无情欲." "可否再具体?" ...
- C# WPF聊天界面(3/3)
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF聊天界面(3/3) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 系列文章 ...
- Android实战项目——家庭记账本设计思路
经过三周左右的Android学习,实感只有上手开发才能有所提高.在此打算做一个家庭记账APP,同时巩固一下学到的东西并且弥补漏洞. 概述 记账是自古以来人类必不可少的一件事,从古代的算盘,到手写账本, ...
- 防止或减少过拟合的方式(二)——Dropout
当进行模型训练的时候,往往可能错过模型的最佳临界点,即当达到最大精度的时候再进行训练,测试集的精度会下降,这时候就会出现过拟合,如果能在其临界点处提前终止训练,就能得到表达力较强的模型,从而也避免了过 ...
- BZOJ #2506. calc [根号分治,莫队,二分]
\(p\) 是个正常范围, \(\sqrt p <= 100\) 比较小,预处理出来 \(a_i % p == k\) 的位置,然后丢进去,最后询问的 \(p\) 如果大于 \(100\) 就莫 ...
- Python 一键安装全部依赖包
使用 pip requirements.txt 用来记录项目所有的依赖包和版本号,只需要一个简单的 pip 命令就能完成. pip freeze > requirements.txt 生成的文件 ...