第七届ACM趣味编程循环赛 Round #1 - ldq 的遗产题解
题意是给你一定数目的1,2,5分的硬币,让你找出不能被这些硬币表示的最小价值。
标准解法是母函数,这个我算法分享讲堂中讲过,
具体可以看我另一篇博客
生成函数入门
#include <stdio.h>
#include <string.h>
const int MAX=8000;
int main()
{ int z,max,c1[MAX+5],c2[MAX+5],num[4],money[4]={0,1,2,5}; while(scanf("%d%d%d",&num[1],&num[2],&num[3]),num[1]||num[2]||num[3]) { memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); c1[0]=1; max=0; for(int i=1;i<=3;i++) { max += money[i]*num[i]; for(int j=0;j<=max;j++) { for(int k=0;k<=num[i] && j+k*money[i]<=max;k++) { c2[j+k*money[i]] += c1[j]; } } memcpy(c1,c2,sizeof(c2)); memset(c2,0,sizeof(c2)); } for(int i=1;;i++) { if(!c1[i]) { printf("%d\n",i); break; } } } return 0;
}
当然,此题用母函数并不是最好解法。最好解法如下,
稍加分析可知,面值大的不能表示面值小的,所以我们要先考虑面值小的硬币。
如果1-4分可以全部被表示,那么它可以表示当前硬币的所有组合。那么结果就应该是所有硬币价值总和加一。
如果1-4分不可以全部被表示,那么它所不能表示的最小价值就应该是这1-4分中不可以被表示的最小价值。
代码如下:
#include <stdio.h>
int main()
{ int a,b,c; while(scanf("%d%d%d",&a,&b,&c),a||b||c) { if(a==0) printf("1\n"); else if(a+2*b<4) printf("%d\n",a+2*b+1); else printf("%d\n",a+2*b+5*c+1); } return 0;
}
当然,由于比赛开始前ldq为了强行降低比赛难度,所以临时把我的数据量改的极其小,最后导致以上两种做法都比较复杂,只要for循环暴力即可过
代码如下:
#include<stdio.h>
int i,n,x,sum,t1,t2,t3,flag[1500],T,a,b,c;
int main()
{cin>>T;while(T--){memset(flag,0,sizeof(flag));scanf("%d%d%d",&a,&b,&c);for(t1 = 0;t1 <= a;t1++)for(t2 = 0;t2<=b;t2++)for(t3 = 0;t3<=c;t3++)flag[t1+2*t2+5*t3] = 1;for(i = 1;i <= 1499;i ++)if(flag[i]==0){printf("%d\n",i);break;}}return 0;
}
第七届ACM趣味编程循环赛 Round #1 - ldq 的遗产题解相关推荐
- UESTC第七届ACM趣味程序设计竞赛第四场(正式赛)
Memory Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- CDOJ 第七届ACM趣味程序设计竞赛第三场(正式赛) 题解
宝贵资源 题目连接: http://acm.uestc.edu.cn/#/problem/show/1265 题意 平面上给n个点(n<=1000),要求找一个面积最小的正方形,将所有的点都囊括 ...
- 记第七届ACM校赛-回忆
这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...
- 2016山东省第七届ACM省赛总结
好久都没更过了 前段时间真是心态不好 状态也不好 都不打算练了 自己堕落了一阵子 醒悟了 感觉还是应该干些正事 加上去北京旅游(lanqiao)待了几天 心情也好多了 啊 自己太水 还要接着干. 好 ...
- 2018第七届CodeVita国际编程大赛
第七届TCS CodeVita 国际编程大赛 介绍 竞技不仅仅是一种游戏而是一种文化!它将不同民族不同背景的人们联系在一起,跨越了地理和文化的界限.竞技提供无国界的体验和无限的竞赛乐趣.在TCS,我们 ...
- 包头师范学院第七届ACM大学生程序设计竞赛
A.2021bttcacm*N 题目描述 欢迎参加第七届包头师范学院大学生程序设计竞赛!请各位亲积极编程,争取解决更多问题,为你的学院和班级争光!加油吧! 这个题目很简单,输入一个正整数n,然后输出n ...
- 2016第七届ACM山东省赛
"题目说的是输出编号.输出编号!!" "好,改好了." "交." 最后两分钟再一次提交了代码. no - wrong. 奋战到最后一秒 ...
- 山东理工大学第七届ACM校赛-G 飞花的传送门
G - 飞花的传送门 飞花壕最近手头比较宽裕,所以想买两个传送门来代步(夏天太热,实在是懒得走路).平面上有N个传送门,飞花壕想要挑两个距离最远的传送门带回家(距离为欧几里得距离,即两点之间直线距离) ...
- 华中地区高校第七届ACM程序设计大赛——之字形矩阵【2012年5月27日】
题意:输入a b Right 或 a b Down ,根据输入输出之字形路径的矩阵. 1 #include <stdio.h> 2 int xx[4]={0,1,-1,1},yy[4]={ ...
最新文章
- bash、dash(/bin/bash和/bin/sh)
- Curl http_code 状态码
- MarkDown编辑器常用语法
- python函数递归法求一个数各位数之和_python – 设计一个使用digit_sum计算数字总和的递归函数...
- 微信小程序-page
- Magento 2.0 Alipay Cross-Border Mobile Payment Extension - Magento 2.0 支付宝跨境支付手机版...
- 几种div/css布局的代码
- MongoDB驱动程序快速入门
- 最小生成树 POJ - 3522(枚举边最小生成树)
- 终于完成了一个能够绘制的FireFox插件
- 带你了解Java Agent
- ISO12233:2014 eSFR分辨率测试卡使用方法
- ubuntu-22.04.1磁盘分区和挂载
- jdk文档下载(html格式)
- Python中的算数运算符
- JavaIO流,万物皆文件
- Android 适配Dark Theme(暗黑模式),看完跪了
- 4G远程智能巡检摄像机解决方案对比
- (一)JPA的快速入门
- 不联网计算机软件升级,不能联网的电脑如何升级病毒库
热门文章
- 风控ML[16] | 风控建模中怎么做拒绝推断
- 电商项目之电商数据库建表
- python中控脚本_[宜配屋]听图阁
- 最新电脑为何不支持安装win7系统?原来秘密就藏在这里!
- MS08-067漏洞分析与复现
- pdffactory 打印字体_pdffactory pro|pdf虚拟打印机(pdffactory)下载 v5.31 官方版_小皮网...
- 0x00007ffff7ade419 in memcpy () from /lib/libc.so.6
- Python:实现多个txt文本的简单合并,亲测简单好用,保姆教程
- 内网安全:内网穿透详解
- VBA 朗读excel随机选择的单元格 (语音库人声可选)