首页 acm校赛题目+题解

acm校赛题目+题解

举报
开通vip

acm校赛题目+题解烤面包 除了写题,zqs还喜欢烤面包。 烤面包需要正反两面各烤一次,每个烤箱同时只能烤一个面包的一面,烤一面需要3分钟,现在他要烤N个面包,有N个烤箱,问烤完所有的面包需要多少时间? 输入:有多组输入数据,第一行为一个数字case,代表有多少组输入数据(case<=20)。 以下每组数据一行有2个整数N,M,代表需要烤N个面包,有M个烤箱(0<=N<=1000,1<=M<=1000)。 输出:一共case行,每行一个整数对应该组数据烤完所有面包需要多少时间。 样例输入: 2 2 1 3 3 样例输出: 12 6 思...

acm校赛题目+题解
烤面包 除了写 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,zqs还喜欢烤面包。 烤面包需要正反两面各烤一次,每个烤箱同时只能烤一个面包的一面,烤一面需要3分钟,现在他要烤N个面包,有N个烤箱,问烤完所有的面包需要多少时间? 输入:有多组输入数据,第一行为一个数字case,代 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 有多少组输入数据(case<=20)。 以下每组数据一行有2个整数N,M,代表需要烤N个面包,有M个烤箱(0<=N<=1000,1<=M<=1000)。 输出:一共case行,每行一个整数对应该组数据烤完所有面包需要多少时间。 样例输入: 2 2 1 3 3 样例输出: 12 6 思路:   该题需要分三种情况,第一种,没有面包,那自然不需要时间即为0,第二种面包不超过烤箱数量,那两次就可以烤完全部面包,第三种情况就是面包比烤箱多,因为面包为两面,使所有烤箱都保持满载状态,最后一次可能会有部分烤箱用不到,但也必须有那一次,所以面包数X2除以烤箱数取整再加一,得数X3即可。此题最大陷阱就是,面包不可能同时两面被烤,不能单纯的想有两个烤箱一个面包一次就能烤掉。 --------------------------------------------------------------------------- B 怒刷GPA 众所周知,WM现在在清华读博,熟不知他为了报送刷分很久的。 WM大一的时候成绩非常烂,我们学校的成绩满分是十分,没门成绩的得分是0到10中的一个数字,WM大一的时候有N门课,每门课都得了一个不是很理想的分数,大二的时候开始奋发学习,现在告诉他大一的时候的成绩,他想知道他在后面的课程中连续得到多少个10分才能将平均分提高到9.5以上(包括9.5)。 输入: 有多组输入数据,第一行为一个数字case,代表有多少组输入数据(case<=20)。 以下每组数据的第一行一个整数n,代表他们他一已经考了多少门课(n<=1000 )。 接下来一行n个数字,每个数字ci,代表第i门课他考了多少分(0<=ci<=10)。 输出: 一共case行,每行一个整数对应该组数据他需要再考多少个十分可以将平均分提高到9.5以上(包括9.5)。 样例输入: 2 2 9 10 1 8 样例输出: 0 3 题解思路:   计算原本n门课的总分数j,设需要再考k次10分,判断(k*10+j)/(n+k) 何时大于等于9.5,输出k即可。 --------------------------------------------------------------------------- C.排列 问题描述: 像所有的女孩子一样,LT讨厌排列,他现在向你寻求一个排列问题的答案。 给你一个数字N(1<=N<10000),并且保证N的各个位上没有0. 他想知道将N的每个位置上的数字全部拿出来,重新排列得到的所有数字的和是多少。 比如122的所有排列为:122+212+221=555。注意相同的数字只需要计算一次。 输入:有多组输入数据,第一行为一个数字case,代表有多少组输入数据(case<=20)。以下case行每行包含一个正整数N(1<=N<10000),N的意义如上所述。 输出: 一共case行,每行一个整数对应N的所有排列得到的数字和。 样例输入: 2 122 12 样例输出: 555 33 思路一:   思路一: 针对每一个case的数n,递归枚举每一种情况。 把一个数看作一个字符串进行读入记为s,初始递归状态为dfs(“”),维护一个全局变量vis数组来标识字符串的每一个元素有没有被访问过,在当前字符串str的长度小于s的长度时,i从0 -> s.size()枚举,如果当前元素没有被访问则把当前状态标记为已访问并dfs(str+s[i]),在每一句递归之后把当前元素标记为未访问。当str的长度等于s的长度时把字符串转换成数字,如果当前数字没有生成过则累加,并标记这个数字出现过,return递归 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数。在所有的递归完成后输出结果。 void dfs(string str) { if(str.size()==s.size()) { int temp=0; for(int i=0;i 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 1~9每个数字出现的次数,分别记为ai;然后全排列的情况数(记为k) k=(n的位数)!/[(a1)!*(a2)!*(a3)*...*(a9)]。 思路三: 题中说的N<10000,那么我们可以分开讨论,1位数,2位数,3位数,4位数的情况。 输入到一个字符数组中,将每一位-‘0’,得到每一位的真实数字。 1位数,等于他本身。 2位数,如果两位都相等,那么就是它本身,不相等的话,就把两位数的数字反过来再加它本身。 3位数,一共有6种排序。如果有两位相等则将6种相加的和除以2,如果有三位相等则就是其本身。 4位数的判断比较复杂,4位数,共有24种排序结果,如果有两位相等,则在24种中删除重复的,最终会剩下12组不重复排序结果,相加即可。如果有三位数相等,则让不重复的数字在每一位上都出现一次,有4种排序结果,相加即可。如果四位数都相等结果就是它本身。 这种思路比较容易理解,但是代码量会很大,不过大部分可以通过复制黏贴来搞定。 --------------------------------------------------------------------------- D.贪心的小羊 EVA家里想养很多小白羊,每个小白羊都要每天至少吃一定量的食物为base[i],小白羊总是很贪心,如果她看到EVA家里养有M只羊,那么他就要多吃add[i]*(M-1)的食物。 现在告诉你每只羊的base和add以及EVA家里总共有的食物,问最多他家能养多少只小白羊。 输入: 有多组输入数据,第一行为一个数字case,代表有多少组输入数据(case<=20) 以下每组数据的第一行两个正整数N,total,分别为总共有多少只小白羊和她家有的食物量 接下来的两行第一行代表每只羊的case,第二行代表每只羊的add (1<=N<=100,0<=total<=1000000) (1<=base[i]<=1000,0<=add[i]<=1000) 输出: 一共case行,每行一个整数该组数据EVA最多能养多少只小白羊 样例输入: 2 3 7 1 2 3 2 2 1 5 10 1 1 1 1 1 1000 1000 1000 1000 1000 样例输出: 2 1 解题思路: 根据本题的题意可以看出,假设现在EVA已经确定要养m只羊,则对于每一只羊如果其被领养,那么它所每天所吃的食物量是固定可以算出的,即base[i]+(m-1)*add[i]; 那么此时作一个贪心,按照每只羊所吃的食物量由小到大排序,取前m只羊.即领养这前m只羊可使每天消耗的食物量最小.如果EVA的食物总量可以承受的话,则再考虑养m+1只,如果仍然可以承受,继续考虑养m+2只….依次考虑,直到找到EVA最多可以承受的领养的羊的只数为止. 伪代码如下 For i=1 to m V[i]=base[i]+(i-1)*add[i]; Sort(v.begin(),v.end()); Sum=v[1…..i]; If(sum>total)break; end Cout<8)return; For(int i=0;i<3;i++) { Int t=num*10+f[i]; v.push_back(t); dfs(n+1,t); } } 在主函数中调用dfs(0,0),如此,则在向量v中保存了所有满足条件的数字,且是按照从小到大的顺序保存.之后每次对于给定的区间[a,b],在v中找到第一个小于等于a的数字begin和小于等于b的数字end,输出end和bigin在v中的下标之差再加1即是结果. --------------------------------------------------------------------------- F.FZ打11 问题描述: 最近11对战平台非常火热,身为dota爱好者的FZ当然也不能落后,得赶紧把积分刷上去才行,现在FZ要打n局,他想玩m个英雄(m个英雄必须至少玩一次),当然一直玩同一个英雄是是件无聊的事,所以如果FZ在玩两个相同英雄之间必须至少打了k个其他英雄。现在问FZ有多少种 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 来打dota?最后答案可能会很大,输出%1000000007即10^9+7就行了。 输入:输入第一行为整数case,case<=10表示有case组测试数据。 接下来case行,每一行三个整数n,m,k(1<=n<=n<=1000,0<=k<=1000)。 输出:对于每组数据输出一行,总的方案数%1000000007的值 样例输入: 3 3 2 1 4 2 2 4 3 2 样例输出: 2 0 6 --------------------------------------------------------------------------- G EVA喜欢买各种中奖的饮料,比如康师傅,百事可乐。。。一天她买了N种饮料各一个,饮料的瓶盖上都有可能中奖,不同的饮料中奖率不同,中奖后获得的钱数也不同。 EVA喜欢买各种化妆品,可是她的钱已经全部买了饮料,她把化妆品的希望寄托于中奖,她有M种中意的化妆品,当然每种化妆品所需的钱数也不同,如果EVA中奖后有一些钱,她会买最多数量的化妆品。 这里限定每种化妆品最多能买一种。现在告诉你每个商品的中奖率和如果中奖得到的钱数以及每种化妆品的价格,求她期望能买到多少个化妆品,结果保留四位小数。 输入: 有多组输入数据,第一行为一个数字case,代表有多少组数据(case<=20) 以下每数组的第一行为两个整数n和m,代表她有n种饮料和m个喜欢的化妆品(2<=n<=30,m<=30) 接下来n行每行一个整数vi和pi,分别代表第i种饮料的中奖钱数和中奖百分率(0<=vi<=10000000,0<=pi<=100) 接下来m行每行一个整数ci,代表第i个化妆品的价钱(0<=ci<=10000000) 输出: 一共case行,每行一个实数对应该组数据可以买到的期望数量的化妆品(hint:输出一个小数保留四位可以这样,printf(“%4f\n”,ans);) 样例输入: 3 1 1 1 50 1 2 2 2 50 2 100 2 2 1 1 1 100 2 样例输出: 0.5000 1.5000 0.0000
本文档为【acm校赛题目+题解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_555594
暂无简介~
格式:doc
大小:51KB
软件:Word
页数:0
分类:互联网
上传时间:2012-12-04
浏览量:28