4 2 4 3 -1 2
【输出样例】 7 81
题16。NOIP2001年提高组第3题--统计单词个数(t2001_3.pas) 问题描述
给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1 输入:输入数据放在文本文件input3.dat中,其格式如下:第一行有二个正整数(p,k),表示输入字串有p行;分为k个部分。接下来的p行,每行均有20个字符。再接下来有一个正整数s,表示字典中单词个数。(1<=s<=6)接下来的s行,每行均有一个单词。 输出:输出文件output3.dat中只有一行,该行只有一个整数,表示得到的最多单词个数。 样例输入: 1 3 thisisabookyouareaoh 4 is a ok sab 样例输出 7 题17。多边形的三角划分 N个顶点的凸多边形,各顶点权值已知,要求划分成N-2个三角形,使各三角形顶点权值乘积之和为最小 如右图当n=4,各顶点的权值 10 6 分别为10,5,7,6时,所求最小 值为10*5*6+5*6*7=510。 5 7 输入: 第一行:一个整数n 第二行:n个整数,依次表示各顶点的权值 题18。二叉树数 求由n个结点构成的不同的二叉树数. 样例输入: 3 样例输出: 5 题19。石子合并--NOI1995 stone.pas/stone.cpp/stone.c/stone.exe 有n堆石子围成一个圆圈。现在需要把它们合并成一堆石子。每次合并时,只能合并相邻的两堆石子,所耗力气为两堆石子重量之和,合并得到的新堆的重量为原两堆重量之和。问最少需要耗费多少力气? 输入文件stone.in中:第一行一个整数n,第二行n个整数,表示顺序排列的每堆石子的重量。 输出文件stone.out中:只有一行,该行只有一个整数,表示合并这n堆石子最少需要耗费的力气。 数据规模:1<=n<=200,合并n堆石子最少需要耗费的力气不超过2*109。 样例输入; 3 1 3 5 样例输出: 13 题20。1的最优操作序列 (请考虑使用动态规划和其它方法解决此题) 在黑板上写了N(n≤10000)个1,进行如下操作:每次擦去其中两个数a、b,并写上数a*b+1,如此下去直至最后一个数A。 请你编程序求出A的最大值。 输入文件bestone.in中只有一个整数N; 输出文件bestone.out中也只有一个整数,表示得到的最大值 样例输入 5 样例输出 7 题21。NOI2001上海选拔---排序工作量之新任务 问题描述 ??假设我们将序列中第i件物品的参数定义为Ai,那么排序就是指将A1,?,An从小到大排序。若i 输入:输入文件newsort.in中只有一行,该行只有两个整数n和t (1≤n≤20,0≤t≤n*(n-1)/2 )。 输出:输出文件newsort.out中有二行,第一行只有一个数,表示n个参数都不同的物品组成的序列集合中,逆序数为t的序列个数;第二行是所求物品参数序列。假设n个物品的参数分别为1到n。 样例输入 4 3 样例输出 6 1 4 3 2 题39。能量项链energy.pas/ energy.exe/ energy.c/ energy.cpp 【问题描述】在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为 (Mars单位),新产生的珠子的头标记为m,尾标记为n。 需要时,Mars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。我们用记号⊕表示两颗珠子的聚合操作,(j⊕k)表示第j,k两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为:(4⊕1)=10*2*3=60。这一串项链可以得到最优值的一个聚合顺序所释放的总能量为((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710。 【输入文件】输入文件energy.in的第一行是一个正整数N(4≤N≤100),表示项链上珠子的个数。第二行是N个用空格隔开的正整数,所有的数均不超过1000。第i个数为第i颗珠子的头标记(1≤i≤N),当i 【输出文件】输出文件energy.out只有一行,是一个正整数E(E≤2.1*109),为一个最优聚合顺序所释放的总能量。 【输入样例】 【输出样例】 4 710 2 3 5 10 题40。金明的预算方案budget.pas/budget.exe/budget.c/budget.cpp 主件 附件 【问题描述】金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自 电脑 打印机,扫描仪 己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:\你的房间需要购买哪些 书柜 图书 物品,怎么布置,你说了算,只要不超过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 5 2200 800 2 0 400 5 1 300 5 1 400 3 0 500 2 0 题51 关路灯 【问题描述】 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率(单位时间的耗电量)有大有小。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地去关,但是老张不知道怎样去关灯才能够最节省电。他每天都是在天亮时首先关掉自己所处位置的路灯,然后可以向左也可以向右去关灯。开始他以为,先算一下左边路灯的总功率,再算一下右边路灯的总功率,然后选择先关掉功率大的一边,再回过头来关掉另一边的路灯,这样可以最省电。而事实并非如此,因为在关的过程中适当地调头有可能会更省一些。 现在已知老张走的速度为1米/秒;每个路灯的位置(是一个整数,即距路线起点的距离,单位:米);以及功率(W),老张关灯所用的时间很短而可以忽略不计。 请你为老张编一程序来安排关灯的顺序,使从老张开始关灯时刻算起所有灯消耗电最少(灯关掉后便不再消耗电了)。 【样例输入】 【样例输出】 【输入】输入文件power.in中有若干行。 5 3 270 第1行是两个数字n和c,分别表示路灯数和老张所处位置的路灯号; 2 10 {此时关灯顺第2行至第n+1行,每行有两个整数。其中第k+1行的第一个整数 3 20 序为34215,表示第k盏灯离路线起点的距离,第二个整数表示第k盏灯的功率。 5 20 不必输出这以上n+1行中,每行的两个整数之间都有一个空格分隔。 6 30 个关灯顺序} 【输出】输出文件power.out只有一行,该行只有一个整数,表示 8 10 求得的最少耗电量。(单位:J,1J=1W·秒)。 【数据限制】本题共有10组测试数据,每组10分,共100分。 30%的数据, 1≤n≤20 【样例说明】有5盏灯,老张从第3100%的数据, 1≤n≤1000 盏灯开始关灯,最小耗电量 8 100%的数据, 求得的最小耗电量不大于1×10 =1*30+4*20+5*10+11*10=270 未知的动规: 题34。Tom的烦恼 Problem Tom是一个非常有创业精神的人,由于大学学的是汽车制造专业,所以毕业后他用有限的资金开了一家汽车零件加工厂 专门为汽车制造商制造零件。由于资金有限他只能先购买一台加工机器。现在他却遇到了麻烦,多家汽车制造商需要他加工一些不同零件(由于厂家和零件不同,所以给的加工费也不同),而且不同厂家对于不同零件的加工时间要求不同(有些加工时间要求甚至是冲突的,但开始和结束时间相同不算冲突)。Tom当然希望能把所有的零件都加工完,以得到更多的加工费,但当一些零件的加工时间要求有冲突时,在某个时间内他只能选择某种零件加工(因为他只有一台机器),为了赚得尽量多的加工费,Tom不知如何进行取舍。现在请你帮Tom设计一个程序,合理选择部分(或全部)零件进行加工,使得得到最大的加工费。 Input文件tom.in第一行是一个整数n(n<=30000),表示共有n个零件须加工。接下来的n行中,每行有3个整数,分别表示每个零件加工的时间要求。第一个表示开始时间,第二个表示该零件加工的结束时间,第三个表示加工该零件可以得到的加工费。注:数据中的每个数值不会超过100000. Output文件tom.out中只有一个整数,表示Tom可以得到的最大加工费。