本文主要是介绍10.24南海NOIP模拟测解题报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
而最后一题也是想到了解法没有写出来,第三题写的时候写错了。所以这表现出我的编程能力尚有所不足,还需打好基础。
1、扑克牌
(a.pas/cpp/c)
【题目描述】
FJ有一副扑克,有52张牌,分为方块、梅花、红桃、黑桃,共4大类,每类都是有13张牌。我们用P表示方块类,用K表示梅花类,用H表示红桃类,用T表示黑桃类。每一类用数字01,02,03,......13 表示13张牌,那么方块类的13张牌就是:P01,P02,P03, ...P10,P11,P12,P13。同理,梅花类的13张牌就是:K01,K02,K03,...K10,K11,K12,K13。红桃类,黑桃类的也同理。
FJ现在教Bessie认扑克牌,FJ给出一个字符串S,问字符串中是否有重复的扑克牌?如果有重复的扑克牌,Bessie要输出“GRESKA”。如果没有重复的扑克牌,如果FJ要把一副扑克的52张牌全部给Bessie的话,除了已经给了字符串S代表的扑克牌,还缺多少张方块牌?还缺多少张梅花牌?还缺多少张红桃牌?还缺多少张黑桃牌?
【输入格式】
输入文件名为a.in 。
一个字符串S,表示FJ已经给了这些扑克牌给Bessie。字符串的每三个连续的字符表示一张扑克牌。S的长度不超过1000。
【输出格式】
输出文件名为a.out 。
如果有重复的扑克牌,输出“GRESKA”(双引号不用输出)。
否则输出4个整数,空格分开,分别表示还缺的方块扑克牌的数量、还缺的梅花扑克牌的数量、还缺的红桃扑克牌的数量、还缺的黑桃扑克牌的数量。
输入样例: a.in | 输出样例: a.out | 样例解释 |
P01K02H03H04 | 12 12 11 13 | 给出了4张扑克牌,其中第1张是方块,第2张是梅花,第3张和第4张是红桃,没有给出黑桃,给出的没有重复的扑克牌,因为4大类的扑克牌都是13张的,所有还缺方块牌12张,还缺梅花牌12张,还缺红桃牌11张,还缺黑桃牌13张。 |
H02H10P11H02 | GRESKA | 因为给出的两张H02,有重复。 |
P10K10H10T01 | 12 12 12 12 | 没有给出重复的牌,而且各类都是给出1张,所以各类扑克牌都是缺12张。 |
2、购书
(b.pas/cpp/c)
【题目描述】
Bessie买了N本书,第i本书的价格是Price[i]。书店老板有个规定,如果把任意的3本书放在一起打包,那么这3本书之中价格最低的那本书可以不用给钱。那么Bessie应该如何打包,才能用最少的钱把这N本书买回来?注意:是每3本书都可以打包,你不能尝试着把4本书放在一起打包,也不能把2本书放在一起打包。
【输入格式】
输入文件名为b.in。
第一行,一个整数N。 1<=N<=100000。
接下来有N行,第i行是一个整数,表示第i本书的价钱Price[i]。 1<=Price[i]<=100000。
【输出格式】
输出文件名为b.out。
一个整数,最少的钱。
【数据规模】
有50%的数据,N <= 2000。
输入样例 b.in | 输出样例 b.out | 样例解释 |
4 3 2 3 2 | 8 | 可以把前3本书打包,这样第2本书不用给钱。 |
6 6 4 5 5 5 5 | 21 | 分两次打包,可以省下9元。 |
3、折纸
(c.pas/cpp/c)
【题目描述】
FJ给你一张长方形的白纸,宽度是W,高度是H。但是你真正需要的是一张面积是A的长方形白纸,于是你可能需要多次折纸,每次折纸的过程中,要同时遵守如下的两个规则:
1、你选择一条直线,然后把白纸沿着直线折过来。你务必要保证你选择的这条直线是平行于白纸的某一条边,则可以横折或者竖折,不能斜折,折完之后白纸还是长方形形状。
2、每折纸一次,都要保证折纸之后,白纸的长度和宽度都是整数。
在以上的前提下,你至少需要折纸多少次,才能得到面积是A的白纸?如果不可能完成任务则输出-1,否则输出最少的折纸次数。
【输入格式】
输入文件名为c.in。
第一行,三个整数:W,H,A。 1<=W,H<=1000000000。 1<=A<=100000。
【输出格式】
输出文件名为c.out。
最少的折纸次数。不能完成任务则输出-1。
【数据规模】
对于60%的数据,1<=W,H<=200。 1<=A<=200。
输入样例 c.in | 输出样例 c.out |
5 3 12 | 1 |
2 2 3 | -1 |
4 4 1 | 4 |
127 129 72 | 8 |
1 100000 100000 | 0 |
4、足球队
(d.pas/cpp/c)
【题目描述】
一支足球队都由11名球员组成的,除了1名守门员外,还有10名球员,这10名球员有的踢后卫位置,有的是踢中锋位置,有的是踢前锋位置。不同的球队可能喜欢的阵型可能不一样,有的球队喜欢4-4-2阵型(即4名后卫4名中锋2名前锋),有的球队喜欢3-5-2阵型(即3名后卫5名中锋2名前锋),也有球队喜欢5-3-2阵型(即5名后卫3名中锋2名前锋)。我们约定,后卫用大写字母‘O’表示,中锋用大写字母‘V’表示,前锋用大写字母‘N’表示。但是有的球员能踢多个位置,例如某个球员能踢的位置是OV,那么表示该球员既能踢后卫又能踢中锋,又比如某个球员是NV,则表示该球员既能踢前锋又能踢中锋,如果某个球员是VON,则表示该球员能踢中锋、后卫、前锋。总之,一个球员能踢的位置根据给出的字母就可以确定了。
现在给出M个候选球员,知道每个球员能踢的位置。现在足球教练想安排的阵型是:x-y-z,表示要从M名球员中挑出10人,安排x人踢后卫,y人踢中锋,z人踢前锋,其中x+y+z=10,且0<=x,y,z<=10。那么足球教练有多少种不同的选择方案呢?注意:如果被选中的10人不同,那么肯定是不同的方案。10人被选中之后,如果安排某球员踢的位置不同,也算不同的方案。请看样例帮助理解。
【输入格式】
输入文件名为d.in。
第一行的格式是:x-y-z,其中x,y,z是三个整数,且x+y+z=10,且0<=x,y,z<=10,表示教练的阵型。
接下来一行是一个整数M,表示有M名候选球员。10<=M<=22。
接下来是M行,每行描述一个球员能踢的位置。
【输出格式】
输出文件名为d.out。
一行,一个整数,表示不同的方案数。
【数据规模】
有60%的数据,M=10。
输入样例: d.in | 输出样例: d.out | 样例解释 |
4-4-2 11 O O O V V V V N N OV OV | 13 |
|
这篇关于10.24南海NOIP模拟测解题报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!