Codeforces Beta Round #2B(dp+数学)
贡献了一列WA。。
数学很神奇啊
这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少对2和5
这样就知道了 就是求2和5 的对数最少的 一条路 DP就不用说了 递推
注意有0的时候的计算 特殊处理一下

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
using namespace std;
#define N 1010
#define INF 1e10
#define LL __int64
LL dp[N][N][];
int a[N][N],b[N][N];
int n;
char pa[N<<];
int init(int x,int k)
{
int num=;
while(x)
{
if(x%k==)
{
num++;
x/=k;
}
else break;
}
return num;
}
int main()
{
int i,j,y,o1,o2,f=;
scanf("%d",&n);
for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
{
scanf("%d",&y);
if(y==)
{
o1 = i;
o2 = j;
f = ;
}
int o = init(y,);
a[i][j] = o;
o = init(y,);
b[i][j] = o;
}
for(i = ; i <= n; i++)
for(j = ; j <= n ; j++)
{
dp[i][j][] = INF;
dp[i][j][] = INF;
}
dp[][][] = a[][];
dp[][][] = b[][];
for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
{
dp[i][j][] = min(dp[i][j][],min(dp[i-][j][],dp[i][j-][])+a[i][j]);
dp[i][j][] = min(dp[i][j][],min(dp[i-][j][],dp[i][j-][])+b[i][j]);
}
int g = ;
if(f&&min(dp[n][n][],dp[n][n][])>)
{
printf("1\n");
for(i = ; i < o2 ; i++)
printf("R");
for(i = ; i < o1 ; i++)
printf("D");
for(i = o2; i < n ; i++)
printf("R");
for(i = o1; i < n ; i++)
printf("D");
return ;
}
if(dp[n][n][]<dp[n][n][])
{
int i = n,j = n;
while()
{
if(i>&&dp[i][j][]==dp[i-][j][]+a[i][j])
{
i = i-;
pa[++g] = 'D';
}
else if(j>)
{
j = j-;
pa[++g] = 'R';
}
if(i==&&j==)
break;
}
}
else
{
int i = n,j = n;
while()
{
if(i>&&dp[i][j][]==dp[i-][j][]+b[i][j])
{
i = i-;
pa[++g] = 'D';
}
else if(j>)
{
j = j-;
pa[++g] = 'R';
}
if(i==&&j==)
break;
}
}
printf("%I64d\n",min(dp[n][n][],dp[n][n][]));
for(i = g ; i >= ; i--)
printf("%c",pa[i]);
puts("");
return ;
}
Codeforces Beta Round #2B(dp+数学)的更多相关文章
- 暴力/DP Codeforces Beta Round #22 (Div. 2 Only) B. Bargaining Table
题目传送门 /* 题意:求最大矩形(全0)的面积 暴力/dp:每对一个0查看它左下的最大矩形面积,更新ans 注意:是字符串,没用空格,好事多磨,WA了多少次才发现:( 详细解释:http://www ...
- Codeforces Beta Round #16 E. Fish (状压dp)(概率dp)
Codeforces Beta Round #16 (Div. 2 Only) E. Fish 题目链接:## 点击打开链接 题意: 有 \(n\) 条鱼,每两条鱼相遇都会有其中一只吃掉对方,现在给你 ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- Codeforces Beta Round #62 题解【ABCD】
Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #67 (Div. 2)
Codeforces Beta Round #67 (Div. 2) http://codeforces.com/contest/75 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #59 (Div. 2)
Codeforces Beta Round #59 (Div. 2) http://codeforces.com/contest/63 A #include<bits/stdc++.h> ...
- Codeforces Beta Round #52 (Div. 2)
Codeforces Beta Round #52 (Div. 2) http://codeforces.com/contest/56 A #include<bits/stdc++.h> ...
随机推荐
- python学习小结6:模块
模块:在Python中有一个概念叫做模块(module),简单地说,模块就是一个保存了Python代码的文件. 模块能定义函数,类和变量,模块里也能包含可执行的代码. ...
- 从一个新手容易混淆的例子简单分析C语言中函数调用过程
某天,王尼玛写了段C程序: #include <stdio.h> void input() { int i; ]; ; i < ; i++) { array[i] = i; } } ...
- android开发之socket快传文件以及消息返回
应用场景: 两台android机器:一台自建wifi热点,另一台搜索到,连接该wifi热点.之后再通过socket传递消息,文件等,当服务器端接收到消息之后会返回对应的应答消息: 注意点:接收到消息之 ...
- HTML5网页制作教程:HTML5块级链接
网页制作Webjx文章简介:Web 标准中处处充满了打脸行为,这条规则现在已经失效了!在那篇文章发布一个月后,HTML5doctor 发表了 “Block-level” links in HTML5, ...
- vi之跳到指定行
vi里怎样跳转到某一指定行 输入 :行号 :$跳到最后一行 gg跳到第一行.
- Flex 教程(1)-------------控件拖动
今天和大家分享下关于在Flex中 针对控件的拖动开发. 1.需要在 .mxml文件中编写一个Button按钮 如下代码: <s:Button id="button1" lab ...
- 【转载】struct和typedef struct彻底明白了
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可 ...
- apache 多域名配置
一直不明白apache多域名配置的问题,所以只能用不同的端口来配置,现在终于搞懂了一点 首先,开启apache的vhost模块 找到配置文件httpd.conf中的下面两行 #LoadModule v ...
- 【设计模式六大原则2】里氏替换原则(Liskov Substitution Principle)
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑.其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的. 定义1:如果对 ...
- package.json 字段全解析 share
Name 必须字段. 小提示: 不要在name中包含js, node字样: 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头: 这个名字可能在require()方法中被 ...