CF 2B The least round way DP+Math
题意: 找出一条路, 使每个节点相乘,得到的数末尾 0 最少
每次移动只能向右或者向下, 找到后打印路径
///按照题目要求,就是找出一条从左上角到右下角中每个数含2 or 5 最少的路
///可以用Dp的思想, 然后把每个节点该走的方向记下来
///再从终点回溯,把路径存入栈,再输出
///数据会有0的情况, 这时候我们应该记录离终点最近的0
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int maxn = + ;
LL Map[maxn][maxn];
LL Dp[maxn][maxn][];
char Step[maxn][maxn][];
stack<char> Mesure; int Factor(int Num, int Base) ///得到因子 2 和 5 的个数
{
if(Num == ) return ;
int ret = ;
while(Num % Base == )
{
ret++;
Num /= Base;
}
return ret;
} int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
cin >> n;
bool Zero = false;
int Zero_Pos;
for(int i = ; i < n; ++i)
{
for(int j = ; j < n; ++j)
{
cin >> Map[i][j];
if(Map[i][j] == )
{
Zero = true;
Zero_Pos = i;
}
Dp[i][j][] = Factor(Map[i][j],);
Dp[i][j][] = Factor(Map[i][j],);
} } for(int i = ; i < n; ++i)
{
for(int j = ; j < n; ++j)
{
for(int k = ; k < ; ++k)
{
if(i == && j == ) continue;
if(i == )
{
Dp[i][j][k] += Dp[i][j-][k];
Step[i][j][k] = 'R';
}
else if(j == )
{
Dp[i][j][k] += Dp[i-][j][k];
Step[i][j][k] = 'D';
}
else
{
Dp[i][j][k] += min(Dp[i-][j][k],Dp[i][j-][k]);
Step[i][j][k] = Dp[i-][j][k] < Dp[i][j-][k] ? 'D' : 'R';
}
}
}
} if(min(Dp[n-][n-][],Dp[n-][n-][]) > && Zero)
{
printf("1\n");
for(int i = ; i < Zero_Pos; ++i) putchar('D');
for(int i = ; i < n-; ++i) putchar('R');
for(int i = Zero_Pos; i < n-; ++i) putchar('D');
//
}
else
{
printf("%d\n",min(Dp[n-][n-][],Dp[n-][n-][]));
int k = ;
k = Dp[n-][n-][] < Dp[n-][n-][] ? : ;
for(int i = n-, j = n-; i != || j != ; )
{
Mesure.push(Step[i][j][k]);
if(Step[i][j][k] == 'D') i--;
else j--;
}
while( !Mesure.empty() ) putchar(Mesure.top()), Mesure.pop();
}
puts("");
return ;
}
CF 2B The least round way DP+Math的更多相关文章
- Codeforces #2B The least round way(DP)
Description 有一个n*n的正整数矩阵,要你求一条从第一行第一列的格子到第n行第n列的路,使得你走过的格子里面的数乘起来的值末尾的零的个数最小.输出最小个数. Input 第一行包括1个数n ...
- codeforces 2B The least round way(DP+数学)
The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎 ...
- CF 2B.The least round way
题目链接 很久以前就见过此题,以前看了题解,然后今天写了写,写的真搓. #include <cstdio> #include <cstring> #include <st ...
- [cf contest 893(edu round 33)] F - Subtree Minimum Query
[cf contest 893(edu round 33)] F - Subtree Minimum Query time limit per test 6 seconds memory limit ...
- codeforces 2B The least round way 【DP】
VJ上可找到中文题意. 思路: 首先分解有多少2与多少5.接下来就是dp. 分两次,一次是根据2的数量贪心,另外一次是根据5的数量贪心,看哪一次乘积的末尾0最少. 需要注意的是两点: 1.输入有0的情 ...
- CF 375C Circling Round Treasures [DP(spfa) 状压 射线法]
C - Circling Round Treasures 题意: 在一个$n*m$的地图上,有一些障碍,还有a个宝箱和b个炸弹.你从(sx,sy)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...
- Codeforces 2B The least round way(dp求最小末尾0)
题目链接:http://codeforces.com/problemset/problem/2/B 题目大意: 给你一个nxn的矩形,找到一条从左上角到右下角的路径,使得该路径上所有数字的乘积的末尾0 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- CF 148D. Bag of mice (可能性DP)
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
随机推荐
- springBoot----aop--整合日志相关
springBoot整合日志相关 1:新建log4j.properties文件 : log4j.properties: #log4j.rootLogger=CONSOLE,info,error,DEB ...
- windows server 禁用智能卡服务的步骤
许多用户对于系统中的很多功能都不太了解,其中智能卡服务更是少有人知.智能卡服务就是对插入的智能卡进行管理和访问控制,大多数用户都无需使用此项功能.那么在Win7系统中要怎么取消智能卡服务呢? 1.首先 ...
- Android MediaPlayer播放raw资源封装类
import android.content.Context; import android.media.MediaPlayer; import xxxx.R; public class MediaU ...
- 【bzoj 3669】[Noi2014]魔法森林
Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...
- c# c/s 框架的分页用户控件,还有事件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- [C++]PAT乙级1009. 说反话 (17/20)
/* 1009. 说反话 (20) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例, 在一行内给出总长度不超过80的字符串. 字符串由若干单词和若干 ...
- python操作Excel-写/改/读
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. xlrd和xlwt这两个库用之前需要安装:cmd -> pip instal ...
- UOJ #276「清华集训2016」汽水
为什么你们常数都这么小啊 UOJ #276 题意:在树上找一条链使得|边权平均值$ -k$|尽量小,$ n<=5e4$ $ Solution:$ 首先二分答案$ ans$,即我们需要找一条链使得 ...
- day 4 - 1 列表
1.列表的增删改查 1) append insert extend li = ["ysg",[1,2,3,4,5],"peipei","梦幻" ...
- Spring Boot Endpoint
Spring Boot 的 Endpoints 带着强烈的 DevOps 色彩, “you build it, you run it” ,开发不仅要关心如何实现功能,还需要关心服务在线上运行的状态,如 ...