昨天已经把题目做完,但是没有写总结博客。
2033:简单的加法题,但是要按照60进制处理进位。
2034:做完这道题的时候,我翻阅了大一的课本《离散数学结构》,查阅了特征函数和子集的计算机表示方法,非常怀念大一的学习时光,但是当时没有好好地把离散数学基础打好。
在这道题里,A-B一定是A的子集。首先假设A-B等于A,然后遍历A中的每个元素,对于A中的每个元素,遍历B中的每个元素,只要找到B中有A中的元素,该元素就不在A-B中。
不过要注意的是,在做上述操作前,要对A和B中的元素进行排序。
2035:因为本题只要求结果的后三位数,所以不怕结果溢出。本题有两种方法,一种是进行b次循环求得结果;另一种是用递归的方法求结果。
从两次提交的情况来看,递归的方法明显快很多。
还有,两个整数相乘结果的后三位数,只和两个数的后三位数有关,因为第n位数,只能影响到结果的第n位。
2036:第一次使用结构体解题。本题是一个模板题,只要套用数学公式就可以解决了,但是我暂时无法证明该公式。
把第0个点的值赋到第n个位置,统一了0到n-1这n个点的计算规则,经过统一,n个点的计算规则都是和下一个点进行计算。
2037:本题是经典的贪心题。本题只是要求求出最优解所包含的电视节目个数,其实使用贪心法,只能求得可能的最优解的其中一个。
因为程序实现已经将节目按照结束时间的先后排序了,如果存在一个不含第一个节目(a0)的最优解,那么一定可以用第一个节目代替最优解的第一个节目,从而得到了包含a0的最优解,即一定存在包含a0的最优解。
假设紧接着a0的结束时间的节目是ai,即便存在包含a0但是不包含 ai 的最优解,不妨设这个最优解中紧接a0的是 aj ,那么则 aj 的结束时间一定大于或等于 ai (因为 ai 是最接近 a0 且开始时间大于等于 a0 的节目 ),所以一定存在包含 a0 和 ai 的最优解。
如此类推下去,每次找最接近最后一个已选节目,并且开始时间大于等于该已选节目的结束时间,就可以得到其中一个最优解了,得到最优解,计算这个解的节目个数,就可以得出本题的答案了。