HDU2929 Bigger is Better[DP 打印方案 !]
Bigger is Better
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1106 Accepted Submission(s): 278
Write a program to make a non-negative integer which is a multiple of m. The integer should be as big as possible.
5 6
0
Case 2: -1
题意:要用最多N根火柴摆出一个尽量大的正整数,而且这个数要能够被M整除
一开始想d[i][j]表示i根火柴模m后为j的最大数字
d[i+ms[k]][(j*+k)%m] 这样dp完了之后再处理每一位是什么,用bit[i][j]表示,n倒着枚举
具体的思想就是,大到小枚举k,找[i][j]第一个能更新到的"合法的"[ti][tj]
对于d[i][j]==mxl,bit[i][j]=10代表这一位最高下面没有了 最后打印方案,从尾开始,因为每次加是加在最后
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=,M=,INF=1e9;
int n,m;
int ms[]={,,,,,,,,,},d[N][M],bit[N][M];
void dp(){
int mxl=;
memset(d,-,sizeof(d));
d[][]=;
for(int i=;i<=n;i++)
for(int j=;j<m;j++) if(d[i][j]>=){
for(int k=;k<=;k++) if(i+ms[k]<=n){
if(d[i+ms[k]][(j*+k)%m]<d[i][j]+)
d[i+ms[k]][(j*+k)%m]=d[i][j]+;
//if(i==0&&j==0) printf("o %d %d %d\n",i+ms[k],(j*10+k)%m,d[i+ms[k]][(j*10+k)%m]);
}
if(j==) mxl=max(mxl,d[i][j]);//printf("d %d %d %d\n",i,j,d[i][j]);
} memset(bit,-,sizeof(bit));
for(int i=n;i>=;i--)
for(int j=;j<m;j++) if(d[i][j]>=){
if(d[i][j]==mxl&&j==) {bit[i][j]=;continue;}
for(int k=;k>=;k--) if(i+ms[k]<=n){
int ti=i+ms[k],tj=(j*+k)%m;
if(d[ti][tj]==d[i][j]+&&bit[ti][tj]>=) {bit[i][j]=k;break;}
// if(i==0&&j==0) printf("obit %d %d %d %d\n",ti,tj,d[ti][tj],bit[ti][tj]);
}
}
//printf("hi %d %d %d\n",mxl,d[0][0],bit[0][0]);
if(mxl>){
int i=,j=,ti,tj;
while(mxl-->){
ti=i+ms[bit[i][j]];
tj=(j*+bit[i][j])%m;
printf("%d",bit[i][j]);
i=ti;j=tj;
}
}else printf("-1");
printf("\n");
}
int main(){int cas=;
while(cin>>n){ if(n==) break;cin>>m;
printf("Case %d: ",++cas);
dp();
}
}
HDU2929 Bigger is Better[DP 打印方案 !]的更多相关文章
- CF10D-LCIS题解--线性DP+打印方案
题目链接: https://www.luogu.org/problemnew/show/CF10D 方法一 分析 \(LCS\)和\(LIS\)已经成烂大街的知识了,可是当这两个合并起来成为\(LCI ...
- BestCoder Round #87 1002 Square Distance[DP 打印方案]
Square Distance Accepts: 73 Submissions: 598 Time Limit: 4000/2000 MS (Java/Others) Memory Limit ...
- HDU 2296 Ring [AC自动机 DP 打印方案]
Ring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissio ...
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- POJ 2125 Destroying The Graph [最小割 打印方案]
Destroying The Graph Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8311 Accepted: 2 ...
- 【题解】POJ1934 Trip (DP+记录方案)
[题解]POJ1934 Trip (DP+记录方案) 题意: 传送门 刚开始我是这么设状态的(谁叫我DP没学好) \(dp(i,j)\)表示钦定选择\(i\)和\(j\)的LCS,然而你会发现这样钦定 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- hdu2929 Bigger Is Better
题意 给出n根木棍,要你拼一个最大的数,并且这个数是m的倍数. 题解 显然越长的数越大.设\(dp[i][j]\)表示用i根木棍并且\(mod m = j\)的最大长度. 我们很容易想出dp方程,再用 ...
- lightoj1064 【DP求方案】
题意: n个相同的骰子,问你掷出>=x点数的可能性: 思路: dp[i][j]代表前 i 个骰子掷出 j 点数的方案数; 然后Σdp[n][x]-dp[n][6*n]就好了 卧槽,一开始想的是拆 ...
随机推荐
- 如何停止CSS3的动画?
前言 我们在移动端一般使用zepto框架,与其说zepto是jquery的轻量级替代版,不如说是html5替代版我们在js中会用到animate方法执行动画,这个家伙可是真资格的动画,完全是css一点 ...
- ubuntu 搭建开发环境
一. 安装C/C++程序的开发环境 1. sudo apt-get install build-essential //安装主要编译工具 gcc, g++, make 2. sudo apt-get ...
- Jquery全选单选功能
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm6.aspx. ...
- RxJava 和 RxAndroid 三(生命周期控制和内存优化)
rxjava rxandroid 赵彦军 前言:对Rxjava.Rxandroid不了解的同学可以先看看 RxJava 和 RxAndroid RxJava 和 RxAndroid 二(操作符的使用) ...
- Android 友盟分享躺过的几个坑,大坑,坑爹啊
前言:公司上线了一个项目,做Android 客户端集成友盟分享,在做得过程中,遇到了下面3个问题,希望其他小伙伴注意. ) 错误1: 1.错误描述 我是照着友盟的集成文档一步一步的集成的,做完后,发现 ...
- UIApplicationDelegate
App受到干扰时,UIApplication会通知它的delegate对象,让delegate处理系统事件. 项目中的AppDelegate已经遵守了UIApplicationDelegate协议 ...
- Android 手机卫士--事件传递&响应规则
问题的提出: 本文地址:http://www.cnblogs.com/wuyudong/p/5911187.html ,转载请注明源地址. 前面的文章实现了点击SettingItemView条目的时候 ...
- Android 调用系统照相机拍照和录像
本文实现android系统照相机的调用来拍照 项目的布局相当简单,只有一个Button: <RelativeLayout xmlns:android="http://schemas.a ...
- (20160602)开源第三方学习之SDWebImage
这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. 地址:https://github.com/rs/SDWebIm ...
- iOS中如何知道app版本已更新
主要用于程序升级,开启程序后是否显示新特性两个方面. 1.苹果app版本 苹果规定,程序的版本只能升不能降.例如1.0->1.1可以,1.1->1.0就不可以,不允许上架. 2.app版本 ...