[CF551C] GukiZ hates Boxes - 二分,贪心 Description 有 n 个位置编号 1 到 n,第 i 个位置上有 ai 个箱子,有 m 个人,开始在 0 位置,每秒钟每个人可以选择搬走自己当前位置上的一个箱子或者向前走一步,问至少需要多少时间能把所有箱子搬完。 Solution 二分答案加验证,假设有 mid 秒,一个
这一道题目的考点为二分答案 + 模拟 二分答案我换成了是倍增,因为蒟蒻我怕二分答案写错(害怕二分写错的同学可以跟我一起写倍增啊)。 模拟的时候有一个技巧,就是每次记录一下当前所有物品中第一个没有被搬完的坐标点。 然后大力模拟。 这道题一定要开longlong,写倍增的时初始答案一定要
大意: 给定$n,k,l,m$, 求有多少个长度为$n$, 元素全部严格小于$2^l$, 且满足 的序列. 刚开始想着暴力枚举当前or和上一个数二进制中$1$的分布, 但这样状态数是$O(64^3)$在加上矩阵幂的复杂度显然不行. 看了题解发现可以按每位单独来考虑
GukiZ and Binary Operations 显然我们要拆位, 因为每位都独立, 然后问题就变成能用dp求的东西,然后用矩阵快速幂优化一下。 注意mod为1的情况。 #include<bits/stdc++.h>#define LL long long#define fi first#define se second#define mk make_pair#define PLL pair<LL, LL>#define