Bigger is Better
题意:
用n根火柴棒搭出数字,求这个数能被m整除的最大值
思路:递推的式子是newi=i+num[k][根数], newj=(j*10+k)%m[余数]
dp[newi][newj] = max(dp[i][j]+1, dp[newi][newj]);
那么ans是只针对余数为0的情况
出发点是dp[0][0],结尾点是dp[i][0],之间必定是会得出一条等差数列(d=1)铺成的路
所以就有dp[newi][newj]==d[i][j]+1, path[i][j] = k;
<pre name="code" class="cpp">#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 110;
const int maxm = 3010;
int dp[maxn][maxm], path[maxn][maxm];
int m, n;
int ans;
int num[10] = {6,2,5,5,4,5,6,3,7,6};
void deal() {for(int i=0; i<n; i++)for(int j=0; j<m; j++) {if(dp[i][j]>=0) //已经得出for(int k=9; k>=0; k--) {if(num[k]+i<=n){int newi = i+num[k];int newj = (j*10+k)%m;if(dp[i][j]+1>dp[newi][newj]) dp[newi][newj] = dp[i][j]+1;if(dp[newi][newj]>ans && newj==0) ans = dp[newi][newj];
}}}
}void find() {memset(path, -1, sizeof(path));for(int i=n; i>=0; i--)for(int j=0; j<m; j++)if(dp[i][j]>=0) {if(dp[i][j]==ans && j==0) {path[i][j] = 10;continue;}for(int k=9; k>=0; k--) if(i+num[k]<=n) {int newi = i+num[k], newj = (j*10+k)%m;if(dp[newi][newj]==(dp[i][j]+1) && path[newi][newj]>=0) {path[i][j] = k;break;}}}
}
void print() {int i, j, k, l;if(ans>0) {i = 0, j = 0;while(path[i][j] != 10) {k = i+num[path[i][j]];l = (j*10+path[i][j])%m;printf("%d", path[i][j]);i = k;j = l;}printf("\n");}else if(n>=num[0]) printf("0\n");else printf("-1\n");
}int main() {int kase = 1;while(scanf("%d", &n) != EOF && n) {scanf("%d", &m);printf("Case %d: ", kase++);memset(dp, -1, sizeof(dp));dp[0][0] = 0, ans = 0;deal();find();print();}return 0;
}
Bigger is Better相关推荐
- 数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
2019独角兽企业重金招聘Python工程师标准>>> 数据导入报错:Got a packet bigger than'max_allowed_packet'bytes的问题 2个解 ...
- ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
今天ytkah进行了应急数据库恢复,用Navicat for Mysql导入sql文件出现ERROR 1153 (08S01): Got a packet bigger than 'max_allow ...
- AI:大力出奇迹?Bigger is better?AI下一代浪潮?—人工智能的大语言模型(LLMs)的简介、发展以及未来趋势
AI:大力出奇迹?Bigger is better?AI下一代浪潮?-人工智能的大语言模型(LLMs)的简介.发展以及未来趋势 目录 人工智能的大语言模型(LLMs)-AI下一代浪潮?Bigger i ...
- Got a packet bigger than 'max_allowed_packet' bytes
昨天用导入数据的时候发现有的地方有这个错误.后来才发现我用RPM包装的MYSQL配置文件里面有old_passwords=1去掉就可以了. Got a packet bigger than 'max_ ...
- MySql 错误 Err [Imp] 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 ...
- 【Python CheckiO 题解】Bigger Price
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- Got a packet bigger than 'max_allowed_packet' bytes(mysql)
mysql 导入数据显示Got a packet bigger than 'max_allowed_packet' bytes 错误 show VARIABLES like '%max_allowed ...
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...
- E06 【买衣服】Maybe you need a bigger size
核心句型 Maybe you need a bigger size 也许您需要大一些的. 场景对话 A:Can I try this jacket on,please? 我能试试这件夹克吗? B:Su ...
- DEEP DOUBLE DESCENT: WHERE BIGGER MODELS AND MORE DATA HURT
文章目录 概 主要内容 Effective Model Complexity(EMC) label noise data augmentation 下降方式 SGD vs Adam Adam SGD ...
最新文章
- 【CSDN】图片居中与调整大小
- hdfs合并块_hdfs 小文件合并 问题
- RocketMQ快速入门之消息过滤器(用户自定义属性)
- Django框架-Form组件
- java启动servlet_Java Servlet 运行原理分析
- 相机下载_佳能相机如何连接手机传输相片,视频?
- php fetch mode,odbc_fetch_into
- Oracle数据库个人整理常用的表空间、用户、授权操作
- 如何做实时监控?—— 参考 Spring Boot 实现
- iis设置首页为main.html,遇到X-Frame-Options头未设置"怎么解决
- android获取inflater
- 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
- 计算机总是蓝屏怎么解决办法,电脑经常蓝屏怎么办?教你解决几种常见的蓝屏问题...
- 关于H5的标签整理合集(一)
- 台式计算机怎么截屏,台式电脑怎么截屏
- 电脑网络里面的以太网不见了,开启后立即自动关闭,如何解决?
- 极客日报:华为拿百亿资金给员工分红,每股1.58元;苹果将推出M2芯片入门级MacBook Pro;Flutter 2.10发布
- golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
- win10安装steam有损计算机,win10系统steam磁盘写入错误怎么办 steam磁盘写入错误的解决教程...
- 华为和华三(H3C),你总要选一个才行