摘要:
原题链接 考察:模拟 思路一: 枚举每一年的每一月,看该月13号离1900年1月1日有多少天,对天数模7统计. 这里比较简单的做法是计算xxxx年x月的1日离1900年1月1日有多少天,再+12天就是13号离它多少天. 1 #include <iostream> 2 #include <cstdio 阅读全文
摘要:
原题链接 考察:贪心 思路: 6*6的箱子可以放下1个6*6、5*5、4*4,再用a[2]与a[1]填补空缺. 3*3需要分情况讨论,一个6*6可以放下4个3*3,剩下的可以用a[3]、a[2]、a[1]补. 1 #include <iostream> 2 #include <algorithm> 阅读全文
摘要:
原题链接 考察:贪心 思路: 手测几个样例可以发现:当n>3时,有两种策略: a[1]与a[i]过去,a[1]返回,a[1]与a[i-1]过去,a[1]返回,此时还未过去的人数-=2 a[1]与a[2]过去,a[1]返回,a[i]与a[i-1]过去,a[2]返回,此时还未过去人数-=2 本蒟蒻将最优 阅读全文
摘要:
原题链接 考察:递推 思路: 设f[i]是i与其他牛的噪音和,我们可以发现它与f[i+1]的关系是f[i+1] = f[i]+i*d-(n-i)*d(d为与i+1的距离).实际是指f[i+1]比f[i]多i个d的距离,而f[i]又比f[i+1]多计算了(n-i)个距离. 1 #include <io 阅读全文
摘要:
原题链接 考察:贪心 错误思路: 为了让利益最大,任务时间首先要尽可能大,在时间相同情况下,等级要尽可能大.采取双指针的类似思想,排序后从尾到头遍历,从m~1找到所能完成的任务数,如果机器时间或者等级<当前任务就continue 此思路错在如果最大时间的机器等级非常低,而完成任务的机器都排在后面就会 阅读全文
摘要:
原题链接 考察:贪心 这道题的贪心好难理解....在网上也没看到证明... 思路: 首先是洗衣服的时间,这时所有衣服的开始时间相同.用优先队列存储每个洗衣机,每件衣服都用耗时最少的,如果该洗衣机被选过一次,那么就相当于有一台t*2的洗衣机.由此算出每件衣服洗完的时间. 然后是烘干的时间.看了很多题解 阅读全文
摘要:
原题链接 考察:贪心+模拟 错误思路: 预处理一遍>0的最小的数字和它在序列里出现的次数.在从头到尾遍历,讨论0与s[i]与minv的大小关系.用deque模拟 这样想其实没错,但是要讨论很多限制条件,看了别人的题解思路简单又快速... 正确思路: 从右往左找,找到除0外最小的数字,它右边的直接按顺 阅读全文
摘要:
原题链接 考察:贪心 思路: 最小数量很好求,从大到小贪心即可.关键是最大数量.我们要考虑全部取最小的剩下的还能否被表示的问题.直接取很难求,至少本蒟蒻没想出来怎么求. 我们求出C的最小数量后,可以发现剩下的是表示总钱数sum-C的最大数量.根据此我们可以求出sum-C的最小数量,剩下的就是最大数量 阅读全文
摘要:
原题链接 考察:贪心 思路: 贪心策略:从价值高的开始取,直到背包体积不够用. 乍一看很像背包问题,但是这里给的是单价,而背包问题是总体价值且不能分割. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #incl 阅读全文
摘要:
原题链接 考察:贪心 错误思路: 用区间选点的模板处理,然后发现很难处理连续有重合区间与不重合区间....没在网上看到用这种解法的,基本都是下面的解法. 正确思路1: 将区间拆成两个时间点,到达时间增加人数,离去时间减去人数.将这些人按时间排序加减即可. 1 #include <iostream> 阅读全文