- Calculate a+b
|
|
- B ASCII码排序(输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。 )
|
|
- C 计算两点间的距离 (输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 )
|
|
- D - 计算球体积(根据输入的半径值,计算球的体积。 )
|
|
- E - 求绝对值(求实数的绝对值。 )
|
|
- F - 成绩转换
|
|
- G - 第几天?(给定一个日期,输出这个日期是该年的第几天。 )
|
|
- H - 平方和与立方和(给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。 )
|
|
- I - 数值统计(统计给定的n个数中,负数、零和正数的个数。 )
|
|
- J - 求数列的和(数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 )
|
|
- K - 水仙花数
|
|
- L - 多项式求和 (1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + …现在请你求出该多项式的前n项的和。 )
|
|
- M - 素数判定(对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。 )
|
|
- N - 蟠桃记 (第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢? )
|
|
- O - 青年歌手大奖赛_评委会打分
|
|
- P-Best Cow Line (字典序问题)
可以用cin.getline();但是时间慢, 也可以用 scanf(“%s”, tmp);s[i] = tmp[0];
参考了网上的思路发现,还可以用scanf(“ %c”, &ch);
在格式串中,空格的意思是匹配输入中的所有换行、TAB、空格,所以加上一个空格,就可以屏蔽掉在输入中的所有的不愉快的因素了。
|
|
- Q Saruman’s Army
题意:在一条直线上,有n个点。从这n个点中选择若干个,给他们加上标记。对于每一个点,其距离为R以内的区域里必须有一个被标记的点。问至少要有多少点被加上标记。
题解:我们从最左边的开始考虑。对于这个点,到距其R以内的区域必须要有带有标记的点。带有标记的点一定在其右侧(包含这个点本身)。给从最左边开始,距离为R以内的最远的点加上标记,尽可能的覆盖更靠右边的点。对于添加了标记的点右侧相距超过R的下一个点,采用同样的方法找到最右侧R距离以内最远的点添加标记。在所有点都被覆盖之前不断重复这一过程。
|
|
- R - Fence Repair
每次都要先从大长木板上切下要分割的木板中的较大的小木板,这样才能最后切割的费用最小。
|
|
- S - Cleaning Shifts
题意:给出区间[ 1,T ]和N个小区间,要求用尽可能少的小区间覆盖区间[ 1,T ],输出最少的小区间数量;若不能覆盖,输出-1。
思路:贪心。
具体:令begin为当前未被覆盖的区间起点。
贪心策略:选取包含点begin的区间中右端点最大的那个;若不存在包含begin的区间,输出-1。
证明:因为begin为未被覆盖的区间起点,所以begin一定要被小区间覆盖,将最优解中覆盖begin的小区间命名为区间X。
以下使用剪贴技术证明。
若存在包含begin的小区间Y( Y != X )使最终所需的小区间数少于原最优解,那么Y一定包含了X之后的某些小区间,
即Y的右端点大于X的右端点,与贪心策略矛盾,得证。
|
|
- T poj3190Stall Reservations(贪心+优先队列)
思路:
首先根据挤奶时间的先后顺序排序。。。然后将第一头牛加入优先队列。。然后就是加入优先队列的牛应该根据越早结束挤奶那么优先级更高,如果时间结束点相等,那么开始时间早的优先级高。。。
然后从前向后枚举。如果碰到有牛的挤奶时间的开始值大于优先队列的首部的结束值,那么说明这两头牛可以一起公用一个挤奶房。。然后从优先队列中删除这头牛。。那么这个问题就得到解决了。。。
|
|
- U POJ 1017 Packets(贪心
题意:工厂出售边长分别为1,2,3,4,5,6的正方形板子,但工厂只有66的板子,其他的板子都是从这种板子上裁剪而来的。现在给出分别这些板子的需求量,问最少需要多少块66的板子。
题解:从面积大的开始取,一块66的板子可以去一块55的板子剩下11个 11的板子。取一块44的板子剩下5个22的板子。 66的板子可以取四块33的板子,在一块66板子上取33的板子数目为 1 2 3 4 的时候剩下 22的板子分别为 5 3 1 0,剩余部分还可以去11的板子。 若22的板子有剩余,还可以分割成1*1的板子。
|
|
- V Stripies (和R题Fence Repair是一样一样的)
题意:介绍了一大堆,全废话。 题目就是说有n个物品,每个物品重w_i,对于两个物品他们合并时重量就会变成
w = 2 sqrt(w_a w_b)。 问当n个物品合成一个时,最小重量是多少?
题解:贪心啊,不过要用到一点数学知识,在n个物品中取两个物品合并,要想最后总重最小,要每次取两个重量最大的物品。关于这个结论,下面给出证明:
设:n=3,三个物品的重量分比为:a,b,c, 合并之后最小重量为w。
则w = 2 sqrt( a 2 sqrt(b c) )
化简后的 w^2/8 = sqrt( aab*c ), 此式可得 a 取最小时 w 的值最小。
归纳总结,n个物品每次取最大的两个合并,总重最小。
|
|
- W-Protecting the Flowers
题解:因为农夫每抱走一头牛,剩下的n-1头牛的问题还是和上面的问题一致。故要想使最终结果最优,所以必须要求当前最优解,所以可以判定是贪心问题。
刚开始,以为先优先d值大的,d值相等时优先t值小的。 WA了,应该优先 t/d 小的。
若先取走a牛,则食花量为 2 t_a d_b ;
若先取走b牛,则食花量为 2 t_b d_a ;
两式分别除以 d_a d_b ;分别为 2 t_a / d_a 2 * t_b / d_b
所以要优先 t/d 值小的。
对于贪心问题n与n-1的策略是相同的,所以由n=2的情况推广到任意n的情况。
注意:O(n^2)算法是会超时的,除去排序情况,其他部分可以优化到O(n)的。
|
|
- X-The Dragon of Loowater
题意
有n头龙????和m个骑士,需要让这些骑士杀掉所有的龙,骑士能杀死龙的条件是骑士的身高比龙头的直径要高,每个骑士只能被雇用一次,且雇佣的费用是骑士的身高,求杀死所有龙所需要的最少费用 如果不能杀死所有的龙输出 Loowater is doomed!
思路
把龙头的直径和骑士的身高从小到大排序,从第一头龙开始找,然后从所有的骑士里面找能杀死他的,如果找到一个肯定是最小的,然后把他标记上(代表不能再雇佣他了) 如果可以杀死所有的龙????,那么输出答案,否则输出 Loowater is doomed!
|
|
调度问题,直接贪心出完成任务需要的时间最长的那个人排序,就行了。
一种贪心的证明思路是:先假设找到了一种最优解,然后看我们贪心的方法是否会改变这个最优解,如果改变不了,那么说明我们的方法一定是没有问题的。
|
|
- Z - Children’s Game (字典序问题)
题意
让你从给定的n个字符串中组成一个字典序最大的字符串
思路
如果是9 和 90 两个字符串,如果按照字典序排序的话是909 但是990比它要大,要重载运算符符<,定义a+b > b+a为less真,按字典序从大到小的顺序来排列, 这样排完之后就是字典序最大的字符串了.
不能挨个位数的比较,要找到好的比较方法。
|
|