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中找到相等的 ...
随机推荐
- 设计模式学习之适配器模式(Adapter,结构型模式)(14)
参考链接:http://www.cnblogs.com/zhili/p/AdapterPattern.html一.定义:将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼 ...
- Delphi基础语法的学习笔记和注意事项总结
以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ...
- 【JAVA中String、StringBuffer、StringBuilder类的使用】
一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: public class Strin ...
- Java代码实现excel数据导入到Oracle
1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码 import java.io.File; import java.io.Fi ...
- android 入门-android Studio git 克隆
最后是完成 以上是如何从android studio Git 克隆Github的项目
- mysql_multi启动数据库
1.初始化数据库 在$mysql_base目录下,新增加存放data的文件夹,用mysql_install_db命令执行初始化 [root@ora11g scripts]# ./mysql_insta ...
- MarkupExtension
目的 如果要在XAML里引用静态或动态对象实例,或在XAML中创建带有参数的类.这时,我们需要用到XAML扩展.XAML扩展常用来设定属性值.使用标识扩展,告诉 XAML 处理不要像通常那样将属性值 ...
- MySQL中的约束简单使用
数据库约束是为了保证数据的完整性而实现的一套机制,它具体的根据各个不同的数据库的实现而有不同的工具.一般来说有以下几种实现方式:1.检查约束:通过在定义数据库表里,在字段级或者是在表级加入的检查约束, ...
- Linux学习笔记(2)Linux学习注意事项
1 学习Linux的注意事项 ① Linux严格区分大小写 ② Linux中所有内容均以文件形式保存,包括硬件,如硬件文件是/deb/sd[a-p] ③ Linux不靠扩展名区分文件类型,但有的文件是 ...
- SQLServer 维护脚本分享(10)索引
--可添加索引的字段 migs.user_seeks,migs.avg_total_user_cost,migs.avg_user_impact,migs.last_user_seek ,mid.st ...