noip集训练习 Day3
noip集训练习 Day2

暑期集训练习Day 21.接水问题 NOIP 2010 普及【问题描述】学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。
现在有n 名同学准备接水,他们的初始接水顺序已经确定。
将这些同学按接水顺序从1到n 编号,i号同学的接水量为w i。
接水开始时,1 到m 号同学各占一个水龙头,并同时打开水龙头接水。
当其中某名同学j 完成其接水量要求w j 后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。
这个换人的过程是瞬间完成的,且没有任何水的浪费。
即j同学第x秒结束时完成接水,则k同学第x+1 秒立刻开始接水。
若当前接水人数n 不足m,则只有n个龙头供水,其它m−n个龙头关闭。
现在给出n名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。
【输入】输入文件名为water.in。
第1行2个整数n 和m,用一个空格隔开,分别表示接水人数和龙头个数。
第2行n个整数w1、w2、……、w n,每两个整数之间用一个空格隔开,w i 表示i 号同学的接水量。
【输出】输出文件名为water.out。
输出只有一行,1 个整数,表示接水所需的总时间。
第1 秒,3 人接水。
第1 秒结束时,1、2、3 号同学每人的已接水量为1,3 号同学接完水,4 号同学接替3 号同学开始接水。
第2 秒,3 人接水。
第2 秒结束时,1、2 号同学每人的已接水量为2,4 号同学的已接水量为1。
第3 秒,3 人接水。
第3 秒结束时,1、2 号同学每人的已接水量为3,4 号同学的已接水量为2。
4 号同学接完水,5 号同学接替4 号同学开始接水。
第4 秒,3 人接水。
第4 秒结束时,1、2 号同学每人的已接水量为4,5 号同学的已接水量为1。
1、2、5 号同学接完水,即所有人完成接水。
【数据范围】1≤n≤10000,1≤m≤100 且m≤n;1≤w i ≤100。
2.统计数字NOIP 2007 提高【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
noip集训练习 Day 1

暑期集训练习Day 11.ISBN NOIP 2008 普及每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。
识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
输入格式Input Format输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式Output Format输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
输入样例:【样例1】0-670-82162-4【样例2】0-670-82162-0输出样例:【样例1】Right【样例2】0-670-82162-42.乒乓球NOIP 2003 普及【问题描述】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。
Day4模拟测试1

toybrick.in
magic.in
fcwr.in
输出文件名
move.out
toybrick.out
magic.out
fcwr.out
每个测试点时限
1秒
1秒
1秒
1秒
测试点数目
10
10
10
10
每个测试点分值
10
10
10
10
比较方式
忽略文件尾空行 忽略文件尾空 忽略文件尾空行 忽略文件尾空行
行
题目类型
【输入】 输入文件的第一行包含两个整数 N 和 S,1≤N≤100000,1≤S≤N。N 为女嘉宾的人数;
S 为梦飞要求小明从 S 号女嘉宾开始。女嘉宾的标号为 1··N。 接下来的 N-1 行为两个女嘉宾之间的距离,每一行包含三个用空格隔开的整数 A、B、C,
表示一条 A 号女嘉宾到 B 号女嘉宾所需要的时间为 C,1≤C≤1000。
【输入格式】 一行一个正整数,N。
【输出格式】 一行一个整数,表示最少施用魔法的次数。
【样例】 magic.in 8 magic.out 2
magic.in 80 magic.out 4
【样例解释】 对于第一个样例,淘淘第一次施法完成效果 1,现在淘淘就有了 2 个棒棒糖,之后施用
魔法完成效果 3(我们令 p=3),就变出了 8 个棒棒糖。 对于第二个样例,步骤如下: 1: 1+1 à 2 2: 2+1 à 3 3: 34 à 81 4: 81-1 à 80
【输入格式】 输入包括多个数据。 每个数据的第 1 行是两个正整数 n 和 s,n 的范围是[1,10000], s 的范围是[1,10000],表示
noip复习资料(提高组c++版)

7.4多重背包问题79
7.5二维费用的背包问题80
7.6分组的背包问题81
7.7有依赖的背包问题81
7.8泛化物品81
7.9混合背包问题82
7.10特殊要求82
7.11背包问题的搜索解法83
7.12子集和问题84
第八单元 排序算法85
8.1常用排序算法85
8.2简单排序算法87
11.6进制转换(正整数)123
11.7高精度算法(压位存储)!123
11.8快速幂!128
11.9表达式求值129
11.10解线性方程组*133
第十二单元 数论算法135
12.1同余的性质!135
12.2最大公约数、最小公倍数!135
12.3解不定方程ax+by=c!*135
12.4同余问题*136
13.8拓扑排序152
13.9关键路径155
13.10二分图初步157
13.11小结160
第十四单元STL简介164
14.1STL概述164
14.2常用容器164
14.3容器适配器170
14.4常用算法171
14.5迭代器175
14.6示例:合并果子175
附录A思想和技巧177
A.1时间/空间权衡177
1.9简单的算法分析和优化14
1.10代码编辑器16
第二单元 基础算法17
2.1经典枚举问题17
2.2火柴棒等式18
2.3梵塔问题19
2.4斐波那契数列19
2.5常见的递推关系!20
2.6选择客栈22
2.72k进制数23
2.8Healthy Holsteins24
2.9小结25
NOIP2023试题

NOIP2023 试题第一题词典【题目描述】小S的词典里有n个两两不同的、长度均为m的单词w1,w2,…,w n。
每个单词都是一个小写字母构成的字符串。
小S可以做以下操作任意多次(可以不做):选择词典中的任意一个单词,交换其中任意两个字符。
对于每个1≤i≤n,小S想知道,是否可以通过以上操作得到新的n个单词w1′,w2′,…,w n′,使得对于每个j≠i,w i′的字典序比w j′都要小。
对于n=1的情况,我们约定:上述性质是自然成立的。
对于两个同样长度的字符串s=s1s2…s L和t=t1t2…t L, 称字符串s字典序小于字符串t,当且仅当以下条件成立:存在位置i,在第i个字符之前s和t都相同,而且s i<t i,即小写字母s i在英文字母顺序中先于t i。
【输入格式】输入的第一行包含两个正整数n和m, 分别表示单词个数和单词长度。
接下来n行,每行包含一个长度为m的小写字母字符串w i,表示一个单词。
【输出格式】输出一行,其中包含一个长度为n的01字符串a; 对于1≤i≤n, 如果题目描述中的性质成立,则a i=1否则a i=0。
【样例输入】【样例输出】【样例解释】·不做任何操作,第一个单词字典序最小,因此输出第一个字符为1;·交换bananaa的前两个字符以及abandon的第三个和第六个字符,得到abondan, abnanaa,baannaa,notnotn,此时第二个单词字典序最小,因此输出第二个字符为1;·交换baannaa的第一个和最后一个字符得到aaannab, 其余字符串不变,此时第三个单词字典序最小,因此输出第三个字符为1;·无论如何操作,第四个单词不会小于第二个单词,因此输出第四个字符为0。
【数据范围】对于所有测试数据,保证:1≤n≤3,000,1≤m≤3,000,wi为长度为m的小写母字符串且两两不同。
第二题三值逻辑(tribool)【题目描述】小L今天学习了Kleene 三值逻辑。
NOIP初赛复习03

小练习
地面上有标号为A、B、C的3根细柱, 在A柱上 放有10个直径相同中间有孔的圆盘, 从上到下 次依次编号为1, 2, 3, ……,将A柱上的部分盘 子经过B柱移入C柱, 也可以在B柱上暂存。如 果B柱上的操作记录为:“进,进,出,进,
进,出,出,进,进,出,进,出,出”。那 么, 在C柱上, 从下到上的盘子的编号为( )。
出队
A1 A2 A3 A4……AN-1 AN
进队
F(队头)
R(队尾)
2.队列的基本操作
const maxn=xxxx; //队列的最大长度
var q:array[1..maxn] of qtype; //队列 front,rear:1..maxn; //队首指针和队尾 指针
1)队列的初始化或置空
将队首指针和队尾指针皆置为0。 procedure init; front:=0; rear:=0 end; 0 1 2 3 ……
fr
2)入队add(x),也称进队
首先判断队列q是否已满,若未满,则后移队 尾指针,并在队列的尾端插入元素x。
procedure add(x:qtype);
begin
if rear=maxn //队满
5 ,e 1 ,则栈S的容量至少应该为
(
)。
A)2 B)3
C)4 D)5
3.队列的溢出与假溢出
3.队列的假溢出
• 由于队列只能在一端插入,在另一端删除,因此随着 入队及出队运算的不断进行,就会出现一种有别于栈 的情形:队列在数组中不断地向队尾方向移动,而在 队首的前面产生一片不能利用的空闲存储区,最后会 导致当尾指针指向数组最后一个位置(即r=max)而 不能再加入元素时,存储空间的前部却有一片存储区 无端浪费,这种现象称为“假溢出”。
NOIP《 数据结构》练习题及答案
习题:1.设循环队列中数组的下标范围是1–n,其头尾指针分别为f和r,则其元素个数为(D).A.r- f B.r- f +1 C.(r- f ) MOD n+1 D.(r- f + n) MOD n 2.线性表若采用链表存贮结构,要求内存中可用存贮单元地址(D).A.必须连续 B.部分地址必须连续 C.一定不连续 D.连续不连续均可3.下列叙述中,正确的是( D ).A.线性表的线性存贮结构优于链表存贮结构B.队列的操作方式是先进后出C.栈的操作方式是先进先出D.二维数组是指它的每个数据元素为一个线性表的线性表4.在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为( C )A.2B.3C.4D.55.若已知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是( C )A.iB.n-1C.n-i+1D.不确定6.如果一个栈初始时为空,且当前栈中的元素从栈底到栈顶依次为a,b,c(如图所示),另有元素d已经出栈,则可能的入栈顺序是( D )。
A. a d c bB. b a c dC. a c b dD. d a b c7.( B )是一种先进先出的线性表A. 栈B. 队列C. 哈希表(散列表)D.二叉树8.如果一棵二叉树中序遍历为BAC,那么它的先序遍历不可能是( C )。
A. ABCB. CBAC. ACBD. BAC9.元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。
如果第1个出栈的是R3,那么第5个出栈的不可能是( B )。
A. R1B.R2C.R4D.R510. 设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有(C)。
A. a, b, c, e, dB. b, c, a, e, dC. a, e, c, b, dD. d, c, e, b, a 11.一个高度为h的二叉树最小元素数目是( B )。
NOIP2017提高组复赛试题
cheese.out
Yes No
Yes
见选手目录下的cheese/cheese1.in 和cheese/cheese1.ans。
【输入输出样例1说明】
第一组数据,由奶酪的剖面图可见∶第
一个空洞在(0,0,O)与下表面相切第
二个空洞在(0,0,4)与上表面相切两
个空洞在(0,0,2)相切
输出Yes
第二组数据,由奶酪的剖面图可见;
输出文件名为complexity.out。 输出文件共t 行,对应输入的t个程序,每行输出"Yes"或No"或者"ERR"(输出中不包 含引号),若程序实际复杂度与输入给出的复杂度一致则输出"Yes",不一致则输出"No",
若程序有语法错误(其中语法错误只有;①F 和 E 不匹配②新建的变量与已经存在但未
ERR。
【输入输出样例2】 见选手目录下的
complexity/complexity2.in和complexity/complexity2.ans。
【数据规模与约定】
对于30??数据∶不存在语法错误,数据保证小明给出的每个程序的前L/2行一定为
以F开头的语句,第L/2+1行至第L行一定为以E开头的语句,L<=10,若x、y均为整
型。
接下来L 行代表程序中循环结构中的"Fixy"或者"E"。
程序行若以F'开头,表示进入一个循环,之后有空格分离的三个字符(串)ixy, 其 中i是一个小写字母(保证不为"n》,表示新建的变量名,x和y 可能是正整数或n,已
知若为正整数则一定小于100。 程序行若以"E"开头,则表示循环体结束。
【输出格式】
第二个程序x 从1到n 是n的一次方的复杂度。
第三个程序有一个F开启循环却没有E结束,语法错误。
(2021年整理)NOIP2010集训小资料
NOIP2010集训小资料编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(NOIP2010集训小资料)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为NOIP2010集训小资料的全部内容。
NOIP2010集训小资料目录1.最短路floyed2.矩阵乘法3.并查集4。
空间的计算5.快速幂6.位运算7。
卡特兰数8.各类背包问题分析9.循环小数转分数10.Fibonacci数列11.反约瑟夫问题12.拓扑排序13.最短路SPFA14。
字典序法生成排列15最小生成树Kruskal16.过程fillchar的使用技巧17。
move函数的用法18。
中缀转后缀19.后缀转中缀20。
关键路径21。
求最大公约数(欧几里德算法)做题心得算法精华1。
最短路floyedFor k:=1 to n doFor i:=1 to n doIf i<〉j thenFor j:=1 to n doIf (j〈>i) and (j〈>k) thenIf map[i,j]>map[I,k]+map[j,k] thenMap[I ,j ]:=map[I,k]+map[k,j];注意:中间值k 必须放在最外层循环。
2.矩阵乘法.),(),(..),1()1,(......)1,(),(....)1,1()1,(A :......::......:),(),1(..),1()1,1(......)1,b (),1(....)1,1()1,1(A ),(B ..........)1,(:..........::..........:),1(..........)1,1()b ,a (..........)1,a (:..........::...........:)b ,1(..........)1,1(c b B b a A c B a A b B b a A B a c b B b A c B A B b A B c b b B c B B A A A A ⨯+⨯⨯++⨯⨯+⨯⨯++⨯=⨯∑=⨯=b 1],[],[],[k j k B k i A j i C矩阵乘法主要应用于求n 值较大的递推关系,难点在于构造矩阵。
NOIP训练题
注意:评测采用全文比较,输出最后一行后一定要换行,如果题目中意思与此相矛盾,以此为准,要求1秒内出解,程序名、输入、输出文件名全部要用小写。
1、机器分配assigned.pas问题描述:总公司拥有高效生产设备M台,准备分给下属的N个公司。
各分公司若获得这些设备,可以为国家提供一定的盈利。
问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。
其中M<=15,N〈=10。
分配原则:每个公司有权获得任意数目的设备,但总台数不得超过总设备数M。
输入格式:第一行保存两个数,第一个数是分公司数N,第二个数是设备台数M。
接下来是一个N*M的矩阵,表明了第I个公司分配J台机器的盈利。
输出格式:第一行为最大盈利值.第二~N+1行为每个分公司的分配方案。
输入样例:assigned.in3 330 40 5020 30 5020 25 30输出样例:assigned.out701 12 13 12、复制书稿book.pas[问题描述]有M本书(编号为1,2,…,M),每本书都有一个页数(分别是P1,P2,…,PM)。
想将每本都复制一份。
将这M本书分给K个抄写员(1<=K<=M<=500),每本书只能分配给一个抄写员进行复制。
每个抄写员至少被分配到一本书,而且被分配到的书必须是连续顺序的。
复制工作是同时开始进行的,并且每个抄写员复制一页书的速度都是一样的。
所以,复制完所有书稿所需时间取决于分配得到最多工作的那个抄写员的复制时间。
试找一个最优分配方案,使分配给每一个抄写员的页数的最大值尽可能小。
[输入]第一行两个整数M、K;(K<=M<=500)第二行M个整数,第i个整数表示第i本书的页数。
[输出]共K行,每行两个正整数,第i行表示第i个人抄写的书的起始编号和终止编号。
K行的起始编号应该从小到大排列,如果有多解,则尽可能让前面的人少抄写。
[样例]BOOK.IN9 31 2 3 4 5 6 7 8 9BOOK.OUT1 56 78 93、轮船问题ship.pas问题描述:某国家被一条河划分为南北两部分,在南岸和北岸总共有n对城市,每一城市在对岸都有惟一的友好城市,任何两个城市都没有相同的友好城市。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.动态规划:导弹拦截NOIP1999(提高组) 第一题【问题描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。
但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。
某天,雷达捕捉到敌国的导弹来袭。
由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
【输入文件】missile.in单独一行列出导弹依次飞来的高度【输出文件】missile.out两行,分别是最多能拦截的导弹数,要拦截所有导弹最少要配备的系统数【输入样例】389 207 155 300 299 170 158 65【输出样例】622.合唱队型NOIP2004(提高组) 第一题N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
【输入文件】输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。
第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。
【输出文件】输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
【样例输入】8186 186 150 200 160 130 197 220【样例输出】4【数据规模】对于50%的数据,保证有n<=20;对于全部的数据,保证有n<=100。
3. 装箱问题NOIP2001(普及组) 第四题【问题描述】有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30=,每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
【输入文件】第一行一个正整数V表示箱子的容量,第二行一个正整数N表示物品个数,接下来N行列出这N个物品各自的体积。
【输出文件】单独一行,表示箱子最小的剩余空间。
【输入样例】2468312797【输出样例】4. 砝码称重NOIP1996(提高组)第四题【问题描述】设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),用他们能称出的重量的种类数。
【输入文件】a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个,中间有空格)。
【输出文件】Total=N(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)。
【输入样例】【输出样例】TOTAL=31 1 0 0 0 05. 积木城堡XC的儿子小XC最喜欢玩的游戏用积木垒漂亮的城堡。
城堡是用一些立方体的积木垒成的,城堡的每一层是一块积木。
小XC是一个比他爸爸XC还聪明的孩子,他发现垒城堡的时候,如果下面的积木比上面的积木大,那么城堡便不容易倒。
所以他在垒城堡的时候总是遵循这样的规则。
小XC想把自己垒的城堡送给幼儿园里漂亮的女孩子们,这样可以增加他的好感度。
为了公平起见,他决定把送给每个女孩子一样高的城堡,这样可以避免女孩子们为了获得更漂亮的城堡而引起争执。
可是他发现自己在垒城堡的时候并没有预先考虑到这一点。
所以他现在要改造城堡。
由于他没有多余的积木了,他灵机一动,想出了一个巧妙的改造方案。
他决定从每一个城堡中挪去一些积木,使得最终每座城堡都一样高。
为了使他的城堡更雄伟,他觉得应该使最后的城堡都尽可能的高。
请你帮助小XC编一个程序,根据他垒的所有城堡的信息,决定应该移去哪些积木才能获得最佳的效果。
【输入文件】第一行是一个整数N(N<=100),表示一共有几座城堡。
以下N行每行是一系列非负整数,用一个空格分隔,按从下往上的顺序依次给出一座城堡中所有积木的棱长。
用-1结束。
一座城堡中的积木不超过100块,每块积木的棱长不超过100。
【输出文件】一个整数,表示最后城堡的最大可能的高度。
如果找不到合适的方案,则输出0。
【输入样例】22 1 -13 2 1 -1【输出样例】36.采药:【问题描述】辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。
为此,他想拜附近最有威望的医师为师。
医师为了判断他的资质,给他出了一个难题。
医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。
我会给你一段时间,在这段时间里,你可以采到一些草药。
如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。
”如果你是辰辰,你能完成这个任务吗?【输入文件】输入文件medic.in的第一行有两个整数T(1 <= T <= 1000)和M (1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。
接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。
【输出文件】输出文件medic.out包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
【输入样例】70 371 10069 11 2【输出样例】3【数据规模】对于30%的数据,M <= 10;对于全部的数据,M <= 100。
7.金明的预算方案NOIP2006 第二题【问题描述】金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。
更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。
今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无如果要买归类为附件的物品,必须先买该附件所属的主件。
每个主件可以有0个、1个或2个附件。
附件不再有从属于自己的附件。
金明想买的东西很多,肯定会超过妈妈限定的N元。
于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。
他还从因特网上查到了每件物品的价格(都是10元的整数倍)。
他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,……,jk,则所求的总和为:v[j1]*w[j1]+v[j2]*w[j2]+ …+v[jk]*w[jk]。
(其中*为乘号)请你帮助金明设计一个满足要求的购物单。
【输入文件】输入文件budget.in 的第1行,为两个正整数,用一个空格隔开:N m (其中N(<32000)表示总钱数,m(<60)为希望购买物品的个数。
)从第2行到第m+1行,第j行给出了编号为j-1的物品的基本数据,每行有3个非负整数:v p q(其中v表示该物品的价格(v<10000),p表示该物品的重要度(1~5),q表示该物品是主件还是附件。
如果q=0,表示该物品为主件,如果q>0,表示该物品为附件,q是所属主件的编号)【输出文件】输出文件budget.out只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<200000)。
【输入样例】1000 5800 2 0400 5 1300 5 1400 3 0500 2 0【输出样例】22008.Money Systems USACO 2.3【问题描述】母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。
他们对货币的数值感到好奇。
传统地,一个货币系统是由1,5,10,20 或25,50, 和100的单位面值组成的。
母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。
举例来说, 使用一个货币系统{1,2,5,10,...}产生18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。
写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。
保证总数将会适合long long (C/C++) 和Int64 (Free Pascal)。
【输入文件】货币系统中货币的种类数目是V (1<= V<=25)。
要构造的数量钱是N (1<= N<=10,000)。
第1 行: 二整数,V 和N第2 行:可用的货币V 个整数。
【输出文件】单独的一行包含那个可能的构造的方案数。
【输入样例】3 101 2 5【输出样例】109.数塔问题IOI94【问题描述】考虑在下面被显示的数字金字塔。
写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。
每一步可以走到左下方的点也可以到达右下方的点。
73 88 1 02 7 4 44 5 2 6 5在上面的样例中,从7 到3 到8 到7 到 5 的路径产生了最大和:30【输入文件】第一个行包含R(1<= R<=1000) ,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。
【输出文件】单独的一行包含那个可能得到的最大的和。
【输入样例】573 88 1 02 7 4 44 5 2 6 5【输出样例】3010. Henry捡钱最近,Henry由于失恋(被某大牛甩掉!)心情很是郁闷.所以,他去了大牛家,寻求Michael大牛的帮助,让他尽快从失恋的痛苦中解脱出来.Michael大牛知道Henry是很爱钱的,所以他是费尽脑水,绞尽脑汁想出了一个有趣的游戏,帮助Henry.....Michael感觉自己简直是个天才(我们从不这么认为),就把这个游戏取名为:Henry拣钱.为了帮助更多的人采用这种方法早日脱离失恋之苦,Michael特地选在这次DT比赛中把游戏介绍给大家...(大家鼓掌!!!) 其实,这个游戏相当垃圾,目的就是为了满足Henry这种具有强烈好钱的心理的人.游戏是这样的:Michael首先找到了一块方形的土地,面积为m*n(米^2).然后他将土地划分为一平方米大小的方形小格.Michael 在每个格子下都埋有钱(用非负数s表示,表示人民币的价值为s)和炸弹(用负数s表示,表示Henry挖出该方格下的东西会花掉s的钱去看病,医炸弹炸伤的伤口)...游戏的要求就是让Henry从一侧的中间列出发,按照下图的5种方式前进(前进最大宽度为5),不能越出方格.他每到一个格子,必定要取走其下相应的东西.直到到达土地的另一侧,游戏结束.不用说也知道,Henry肯定想得到最多的人民币.所以他偷窥了,Michael埋钱的全过程,绘成了一张距阵图.由于他自己手动找会很麻烦,于是他就找到了学习编程的你.请给帮他找出,最大人民币价值. 拣钱路线规则(只有5个方向,如下图):H为Henry的出发点,每组数据的出发点都是最后一行的中间位置!(前方5个格子为当前可以到达的)【输入文件】第一行为m n.(n为奇数),入口点在最后一行的中间接下来为m*n的数字距阵.共有m行,每行n个数字.数字间用空格隔开.代表该格子下是钱或炸弹.为了方便Henry清算,数字全是整数.【输出文件】一个数,为你所找出的最大人民币价值.【输入样例】6 716 4 3 12 6 0 34 -567 0 0 26 0 -1 -2 3 6 85 3 4 0 0 -2 7-1 7 4 0 7 -5 60 -1 3 4 12 4 2【输出样例】51【数据范围】N and M<=200(money.pas/c/cpp) 来源:Dream Team邀请赛【问题描述】最近,Henry由于失恋(被某大牛甩掉!)心情很是郁闷。