摘要: 题目大意:有n件工作,做每件工作的消耗时间为s,截止时间为d,问最多能做完几件工作。题目分析:贪心策略:优先做截止时间靠前的,一旦做不完当前工作,则从已经做过的工作中删去一件耗时最长的,用当前工作取代之。代码如下:# include# include# include# include# inclu... 阅读全文
posted @ 2015-10-12 21:08 20143605 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一个整数序列a,1≤a[i]≤i。问能否通过在一些元素前加上负号,使得整个序列和为0。题目分析:贪心。贪心策略:每次都先选最大的元素加负号(或保留,不加负号)。 贪心依据:对于1≤a[i]≤i,1~sum[i]总能表示出来。 贪心依据证明:用数学归纳法证明,当i=1时,显... 阅读全文
posted @ 2015-10-12 19:23 20143605 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一张n个顶点、m条边的无向连通图,用k种颜色着色(相邻顶点颜色不能相同),其中k为不小于点的最大度数的最小奇数。题目分析:水题一道。建张图深搜一下就行了。# include# include# include# include# includeusing namespace std;str... 阅读全文
posted @ 2015-10-12 16:18 20143605 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 题目大意:考试共有三道题,n个人,每个人对每道题的可能得分已知,现在已知考后排名情况,问排名合不合理。题目分析:贪心。贪心策略:每处理一个排名,都让他的得分尽量高。# include# include# include# includeusing namespace std;const double... 阅读全文
posted @ 2015-10-12 15:21 20143605 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出1~n的某个排列,问由升序变到这个排列最少需要几次操作。操作1:将头两个数交换;操作2:将头一个数移动最后一个位置。题目分析:反过来考虑,将这个排列变为升序排列,那么这个变化过程实际上就是冒泡排序的过程。将这个排列视为环形的,操作1为交换过程,操作2为查找逆序对的过程。那么,将升序排列... 阅读全文
posted @ 2015-10-12 14:13 20143605 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变)。题目分析:拿掉d个数字,还剩下n-d个数字。相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口滑动优先选取大的。代码如下:# include# include# include# inc... 阅读全文
posted @ 2015-10-12 11:13 20143605 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目大意:两个等长的字符串p和q,p有‘0’,‘1’,‘?’组成,q由‘0’,‘1’组成。有三种操作:1.将‘?’变成0;2.将‘?’变成‘1’;3.交换同一字符串任意两个位置上的字符。问有p变到q最少需要几次操作。题目分析:贪心。贪心策略:若两个位置上的字符相同,则不用处理;能交换位置便交换位置,... 阅读全文
posted @ 2015-10-12 10:17 20143605 阅读(191) 评论(0) 推荐(0) 编辑