Bigger is Better
题意:
有n个火柴棒,已知拼成9个数字花费的数目,求能拼出的能整除m的最大数
分析:
dp[i][j]表示,用i个火柴棒,拼出的数余m余数为j时的最大数
int tmp=dp[i][j]*10+k;(k是拼成的某个数)
dp[i+num[k]][tmp%m]=max(dp[i+num[k]][tmp%m],tmp);
这个数很大,用java写超时了两发,只能用大数模拟。
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
int n,m;
struct bignum
{
int l;
char a[];
void zclear()
{
while (a[l-]==) l--;
}
void set(char v)
{
memset(a,,sizeof(a));
l=;
a[]=v;
if (v==) l=;
}
void add(char v)
{
char i;
a[]+=v;
for (i=;i<l;++i)
{
if (a[i]>=)
{
a[i+]++;
a[i]-=;
}
else break;
}
if (a[l]>) l++;
zclear();
}
void mul10()
{
for (int i=l;i>;--i)
a[i]=a[i-];
a[]=;
l++;
zclear();
}
bool bigger(bignum ta)
{
ta.zclear();zclear();
if (ta.l!=l) return l>ta.l;
for (int i=l-;i>=;--i)
if (ta.a[i]!=a[i]) return a[i]>ta.a[i];
}
void give(bignum ta)
{
l=ta.l;
memcpy(a,ta.a,sizeof(char)*);
}
void output()
{
if (a[]==-||l==)
{
if (n>=) printf("0\n");
else printf("-1\n");
return;
}
for (int i=l-;i>=;--i)
printf("%d",(char)a[i]);
printf("\n");
}
};
bignum dp[][];
int num[]={,,,,,,,,,};
int ca=;
int i,j,k;
int main()
{
while (scanf("%d",&n),n)
{
scanf("%d",&m);
for (i=;i<=n;++i)
for (j=;j<m;++j)
dp[i][j].set(-);
for (i=;i<;++i)
dp[num[i]][i%m].set((char)i);
for (i=;i<=n;++i)
for (j=;j<m;++j)
if (dp[i][j].a[]!=-)
{
for (k=;k<;++k)
{
int x=i+num[k];
int y=(j*%m+k%m)%m;
if (x>n) continue;
bignum temp;
temp.give(dp[i][j]);
temp.mul10();
temp.add((char)k);
if (temp.bigger(dp[x][y]))
dp[x][y].give(temp);
}
}
bignum minv;
minv.set(-);
for (i=;i<=n;++i)
if (dp[i][].bigger(minv)) minv.give(dp[i][]);
printf("Case %d: ",++ca);
minv.output();
}
return ;
}
Bigger is Better的更多相关文章
- spark - tasks is bigger than spark.driver.maxResultSize
Error ERROR TaskSetManager: Total size of serialized results of 8113 tasks (1131.0 MB) is bigger tha ...
- MYSQL 内存报错 Use 'mysqld --thread_stack=#' to specify a bigger stack.
今天在使用mysql的过程中,连接数据库始终无法成功 最后发现是数据库无法执行增加修改的操作 :错误代码 Thread stack overrun: 11552 bytes used of a 13 ...
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...
- HDU2929 Bigger is Better[DP 打印方案 !]
Bigger is Better Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDOJ 2929 Bigger is Better
DP....好难的DP... Bigger is Better Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
- don't forget the bigger picture
Imagine a circle that contains all of human knowledge: By the time you finish elementary school, you ...
- Got a packet bigger than 'max_allowed_packet' bytes
昨天用导入数据的时候发现有的地方有这个错误.后来才发现我用RPM包装的MYSQL配置文件里面有old_passwords=1去掉就可以了. Got a packet bigger than ‘max_ ...
- Navicat导入数据时发生了报错 --- 1153 - Got a packet bigger than 'max_allowed的处理办法
今天我在使用Navicat导入.sql文件数据时,发现本来是80万条的数据,结果只导入了10万条左右,而且在其错误信息日志中,我发现了这样一条错误:1153 - Got a packet bigger ...
- Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes
在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes 查了 ...
随机推荐
- A. Counting Kangaroos is Fun(贪心)
#include<stdio.h> #include<algorithm> using namespace std; ]; int main() { int i,n,high; ...
- 从一次面试经历谈PHP的普通传值与引用传值以及unset
关于这个概念一般都会在PHP的第一堂课说变量的时候给介绍,并且我以前还给其他PHPer介绍这个概念.但是作为一个工作一段时间的PHPer的我,竟然在面试的时候一下子拿不定主意最后还答错了,很觉得丢脸( ...
- ios开发--清理缓存
ios文章原文 一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ...
- Using the Repository Pattern with ASP.NET MVC and Entity Framework
原文:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-and ...
- 解决Nginx下WordPress后台404的问题
在把这个博客做好后,上传到nginx服务器上却出现问题. 首先是wordpress官方的伪静态是通过.htaccess实现的,但nginx并不支持.htaccess,无奈只好在网上找到wordpres ...
- 32. Longest Valid Parentheses
题目: Given a string containing just the characters '(' and ')', find the length of the longest valid ...
- Bean不同配置方式比较
基于XML配置 基于注解配置 基于Java类配置 Bean定义 在XML文件中通过<bean>元素定义Bean,如:<bean class="com.bbt.UserD ...
- BNU OJ 33691 / LA 4817 Calculator JAVA大数
留着当个模板用,在BNU上AC,在LA上RE……可能是java的提交方式不同??? 数和运算符各开一个栈. 表达式从左到右扫一遍,将数存成大数,遇到数压在 数的栈,运算符压在 运算符的栈,每当遇到右括 ...
- 《数据通信与网络》笔记--TCP中的拥塞控制
1.拥塞窗口 发送方窗口的大小不仅取决于接收方,而.而且还取决于网络拥塞的情况. 发送方有2种信息:接收方通告的窗口大小和拥塞窗口的大小,实际的窗口大小事这两者中的最小者. 实际窗口大小 = min( ...
- BZOJ 1898 Swamp 沼泽鳄鱼(矩阵)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1898 题意:一个无向图.给出起点和终点,以及某些时刻某些点不能到达的信息.问从起点出发在 ...