UOJ Logo Trinkle的博客

博客

【娱乐向】A+B problem 各种题解

2015-04-02 18:26:49 By Trinkle

我们学校的P1000 A+B problem下面已经有差不多30篇题解了,不知道其他学校的神犇们有没有参与这项活动。。。

挑了几个有意思的抠出来(我只是搬运工= =)

  1. 这题可以采用最大流解决。具体做法是在s和t之间加一条流量为a的边和流量为b的边。求该网络的最大流。

  2. 这题可用是上下界最小流解决,我们可以由源到汇连2条边,1条下界为a上界无穷大,还有1条下界为b上界也为无穷大,之后套个最小流的模板即可AC

  3. 本题属于网络流类型。但这里有个既快又方便的算法:随机加法!随机给出一个整数,判断是否为a+b的值,如果是则输出。时间复杂度:O(1)-O(2*maxlongint)。

  4. 这题可以转化为一种经典的统计问题求解。在[-Maxlongint,Maxlongint]范围内求x满足x=a+b输出每一个符合条件的x

  5. 本题初看困难,但可以把它看成一道图论最短路模型,设图中有3个点 1 到 2号点有一条长为a的连边 2到3有一条长为b的边 1到3有一条长为maxint的边 求1到3的最短路

  6. 一眼看过去这题可能对新手有点难,但只要你知道了树状数组,本题可以转化为树状数组来解决。先用树状数组维护一个所有位均为1的序列。a+b的值即为1~a的和加上1~b的和,这个求和我们就可以使用树状数组的求和搞定,即使是动态数据,我们有了动态求和的利器树状数组,对于m组询问,就可以在O(100000lg(100000) + m(lg(a)+lg(b)))的时间里对每组数据求解,代码又简短!

  7. 这题其实是裸的插头DP。我们构造一个2*2的网格,网格第1行第1列的数是a,第2行第2列的数是b,其他数是0。那么问题就变成求代价最小的哈密尔顿回路了。

  8. 这题其实是裸的FFT,考虑(1+a)*(1+b)=1+a+b+ab,所以乘完以后第一项就是答案。

  9. 本题其实是后缀数组的模板题。构造s,前a位为'b',后b位为'a',求sa[]和rank[]以及height[]之后,我们惊讶的发现,其实sa[1]就是答案了。。。

  10. 其实这是一道费用流裸题,在有向图里有一个点,源到它的流量为1,费用为-a,它到汇的流量为1,费用为-b,然后求最小费用最大流就好了。

  11. 这题其实是裸的LCT。假设有4个点,1到2连a,2到3连b,3到4连0,剩下的边连+oo。考虑将边排序,先求MST,然后不断往里面加新边,求出每个状态的MST边权和,最小值即为答案。

评论

TKD
前排orz
matthew99
233不过够无聊的
jcvb
够无聊的+1
ydc
无聊
monituihuo
没有模拟退火差评
siang
Orz
stdafx
orz

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。