首页 > 代码库 > BZOJ 口胡记录

BZOJ 口胡记录

最近实在是懒的不想打代码。。。好像口胡也算一种训练,那就口胡把。

 

BZOJ 2243 染色(树链剖分)

  首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段。再对每个节点维护一个tag标记。剩下的就是很normal的线段树区间合并和标记下传了。

BZOJ 2245 工作安排(费用流)

  很normal的拆边费用流。建立虚拟源点s和汇点t。s向产品连边,产品向可以生产它的工人连边,工人向t连边。这里的分段函数是个非递减的分段函数,由于最小费用流的特殊性。这里的分段函数可以用流和费用分割开来。也就是说将工人和t之间的每个边拆成m段边,每段边给个流量和费用。最后求一遍最小费用最大流。

BZOJ 2257 瓶子和燃料(数论)

  两个瓶子的燃料之间的可能情况是ax+by(ax+by<=max(a,b)),而min(ax+by)=gcd(a,b)。归纳可以得出k个瓶子的最小燃料是gcd(a1,a2,,,ak),于是问题变成,找到n个数的k个数使得这k个数的最大公约数最大。处理出这n个数的因子。找到其中出现次数超过k次的最大因子即可。

BZOJ 2298 problem a(DP)

  题目可以转化为最多有几个人说真话,考虑每个人给出的信息实际上是一个关于他的rank的一个区间[ai+1,n-bi].给出的信息中,区间重合的次数要不大于于这个区间的长度。于是问题转化为,求出不冲突的区间个数的最大值。这个问题可以用DP解决。令dp[i]表示[1-i]的范围内最多有多少个区间不冲突。则转移显然可得。最后的答案就是n-dp[n].

 

BZOJ 口胡记录