随笔分类 -  bzoj

摘要:贪心加优先队列维护。 先把每个建筑的t1和t2读进来,然后按照t2排序。 枚举建筑,当枚举到第i个建筑时,ans表示在t2[i-1]范围内可以修的最多建筑,now表示修这些建筑所需的最少时间。 如果可以修第i个建筑,即t1[i]+now<=t2[i],则now+=t1[i]。 否则就判断是否要不修已 阅读全文
posted @ 2018-01-25 17:05 TrassBlose 阅读(97) 评论(0) 推荐(0)
摘要:二分图最大匹配匈牙利算法。 阅读全文
posted @ 2018-01-24 19:18 TrassBlose 阅读(121) 评论(0) 推荐(0)
摘要:一看就想到了二分图最大匹配的匈牙利算法。 注意要加时间戳优化,不然会超时。 在网上找到了并查集做法,不难理解。 如果没有出现环,那么结果肯定是一片森林。 我们肯定每次选小的。 如果出现了环,那么环所在集合每个数都可以选了。 于是我们使用并查集维护集合。 保证集合的祖宗是整个并查集中最大的属性值。 每 阅读全文
posted @ 2018-01-24 18:57 TrassBlose 阅读(114) 评论(0) 推荐(0)
摘要:正着思考是无法得出答案的。 考虑容斥,可能发生越狱的状态=全部状态-不可能发生越狱的状态。 全部状态就是M^N。 不可能发生越狱的状态:第一个房间是随便什么宗教,而第二个房间不能和第一个一样,而第三个房间不能和第二个一样…… 用乘法原理算一下就是M*(M-1)^(N-1)。 快速幂即可。 阅读全文
posted @ 2018-01-24 18:41 TrassBlose 阅读(113) 评论(0) 推荐(0)
摘要:很容易想到把大于b的数赋值为1,小于b的数赋值为-1。 做一遍前缀和。 于是问题变成求sum[j]-sum[i]=0 (0<=i<w && j>=w) 于是直接按照b所在位置划分成两段,分别用桶统计sum某值出现的次数,注意sum数组中的数可能会出现负数,于是要加上一个n防止访问负的下标。 最后用乘 阅读全文
posted @ 2018-01-23 20:34 TrassBlose 阅读(88) 评论(0) 推荐(0)
摘要:一道伟大的题。 阅读全文
posted @ 2018-01-23 19:55 TrassBlose 阅读(97) 评论(0) 推荐(0)
摘要:任何数都可用2的幂次方加和得到。 于是问题变成求2^k大于m的第一个k。 阅读全文
posted @ 2018-01-23 19:50 TrassBlose 阅读(78) 评论(0) 推荐(0)