CF 2B.The least round way
很久以前就见过此题,以前看了题解,然后今天写了写,写的真搓。
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int dp2[][];
int dp5[][];
int p2[][];
int p5[][];
int p[][];
int que[];
int x,y,n,num = ;
void f1()
{
int a,b;
a = b = n;
while()
{
if(a > &&dp2[a][b] == dp2[a-][b] + p2[a][b])
{
que[num++] = ;
a --;
}
else if(dp2[a][b] == dp2[a][b-] + p2[a][b])
{
que[num++] = ;
b --;
}
if(a == &&b == ) break;
} }
void f2()
{
int a,b;
a = b = n;
while()
{
if(a > &&dp5[a][b] == dp5[a-][b] + p5[a][b])
{
que[num++] = ;
a --;
}
else if(dp5[a][b] == dp5[a][b-] + p5[a][b])
{
que[num++] = ;
b --;
}
if(a == &&b == ) break;
}
}
void f3()
{
int a,b;
a = b = n;
while()
{
if(a > x)
{
que[num++] = ;
a --;
}
else if(b > y)
{
que[num++] = ;
b --;
}
if(a == x&&b == y) break;
}
while()
{
if(a > )
{
que[num++] = ;
a --;
}
else if(b > )
{
que[num++] = ;
b --;
}
if(a == &&b == ) break;
}
}
int main()
{
int i,j,temp,flag;
scanf("%d",&n);
flag = ;
for(i = ;i <= n;i ++)
{
for(j = ;j <= n;j ++)
{
scanf("%d",&p[i][j]);
if(p[i][j] == )
{
flag = ;
x = i;
y = j;
continue;
}
temp = p[i][j];
while(temp% == )
{
p2[i][j] ++;
temp /= ;
}
while(temp% == )
{
p5[i][j] ++;
temp /= ;
}
}
}
for(j = ;j <= n;j ++)
{
dp2[][j] = dp2[][j-] + p2[][j];
dp5[][j] = dp5[][j-] + p5[][j];
}
for(i = ;i <= n;i ++)
{
dp2[i][] = dp2[i-][] + p2[i][];
dp5[i][] = dp5[i-][] + p5[i][];
}
for(i = ;i <= n;i ++)
{
for(j = ;j <= n;j ++)
{
dp2[i][j] = min(dp2[i-][j],dp2[i][j-]) + p2[i][j];
dp5[i][j] = min(dp5[i-][j],dp5[i][j-]) + p5[i][j];
}
}
if(flag == )
{
printf("%d\n",min(dp2[n][n],dp5[n][n]));
if(dp2[n][n] < dp5[n][n])
f1();
else
f2();
}
else
{
printf("%d\n",min(,min(dp2[n][n],dp5[n][n])));
if(min(dp2[n][n],dp5[n][n]) >= )
f3();
else if(dp2[n][n] < dp5[n][n])
f1();
else
f2();
}
for(i = num-;i >= ;i --)
{
if(que[i] == )
printf("D");
else
printf("R");
}
printf("\n");
return ;
}
CF 2B.The least round way的更多相关文章
- CF 2B The least round way DP+Math
题意: 找出一条路, 使每个节点相乘,得到的数末尾 0 最少 每次移动只能向右或者向下, 找到后打印路径 ///按照题目要求,就是找出一条从左上角到右下角中每个数含2 or 5 最少的路 ///可以用 ...
- [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)
Description 有一个n*n的正整数矩阵,要你求一条从第一行第一列的格子到第n行第n列的路,使得你走过的格子里面的数乘起来的值末尾的零的个数最小.输出最小个数. Input 第一行包括1个数n ...
- Codeforces 2B. The least round way
There is a square matrix n × n, consisting of non-negative integer numbers. You should find such a w ...
- codeforces 2B The least round way(DP+数学)
The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎 ...
- codeforces 2B The least round way 【DP】
VJ上可找到中文题意. 思路: 首先分解有多少2与多少5.接下来就是dp. 分两次,一次是根据2的数量贪心,另外一次是根据5的数量贪心,看哪一次乘积的末尾0最少. 需要注意的是两点: 1.输入有0的情 ...
- 最小较小codeforces 2B The least round way
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记载吧! 求从左上角到右下角所经过的数字之积末端所含0最小的个数 终究的积可以当作A*2^x*5^y, ...
- 【CF】7 Beta Round D. Palindrome Degree
manacher+dp.其实理解manacher就可以解了,大水题,dp就是dp[i]=dp[i>>1]+1如何满足k-palindrome条件. /* 7D */ #include &l ...
- cf B George and Round
题意:输入n,m,下一行为n个数a1<a2<a3......<an:然后再输入m个数b1<=b2<=b3<.....<=bm: 每个ai都必须在b中找到相等的 ...
随机推荐
- SQL常用方言列表
DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hi ...
- NBU bplabel命令擦除磁帶數據
bplabel Linux系統,該命令位於NBU server的如下目錄:/usr/openv/netbackup/bin/admincmd bplabel – write NetBackup lab ...
- Creating a Table View Programmatically
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/Cre ...
- JS常用语句
JavaScript常用语句 1.document.write(""); 输出语句 2.JS中的注释为 // 3.传统的HTML文档顺序是: document-& ...
- WPF程序最小化到任务通知栏
我们通常使用的桌面软件,都可以最小化到任务通知栏,并且可以从任务通知栏再打开当前软件,或者通过软件的快捷方式从任务通知栏呼出. 我们可以通过下面的方式把WPF程序最小化到任务栏.由于WPF并没有实现N ...
- 如何实现Outlook 2010 下载邮件后自动删除服务器上的邮件
outlook2010---文件---信息---账户设置---选中要设置的帐号---双击点选要设置的邮箱---其他设置---高级---在服务器上保留邮件的副本---14天后删除服务器上的邮件副本,修改 ...
- 基于socket、多线程的客户端服务器端聊天程序
服务器端: using System; using System.Windows.Forms; using System.Net.Sockets; using System.Net;//IPAddre ...
- CRC校验(转)
CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据 ...
- matlab练习程序(Moravec算子)
这个算子算是图像历史上第一个特征点提取算法了,1977年提出的,很简单,拿来练手很合适. 算法原理如下: 1.选取一个合理的邻域遍历图像,这里是5*5邻域的.在邻域中依次计算,垂直,水平,对角与反对角 ...
- 移动 Web 开发技巧
1.使用click会出现绑定点击区域闪一下的情况,解决:给该元素一个样式如下 -webkit-tap-highlight-color: rgba(0,0,0,0); 2.用iphone或ipad浏览很 ...