我们学校的P1000 A+B problem下面已经有差不多30篇题解了,不知道其他学校的神犇们有没有参与这项活动。。。
挑了几个有意思的抠出来(我只是搬运工= =)
这题可以采用最大流解决。具体做法是在s和t之间加一条流量为a的边和流量为b的边。求该网络的最大流。
这题可用是上下界最小流解决,我们可以由源到汇连2条边,1条下界为a上界无穷大,还有1条下界为b上界也为无穷大,之后套个最小流的模板即可AC
本题属于网络流类型。但这里有个既快又方便的算法:随机加法!随机给出一个整数,判断是否为a+b的值,如果是则输出。时间复杂度:O(1)-O(2*maxlongint)。
这题可以转化为一种经典的统计问题求解。在[-Maxlongint,Maxlongint]范围内求x满足x=a+b输出每一个符合条件的x
本题初看困难,但可以把它看成一道图论最短路模型,设图中有3个点 1 到 2号点有一条长为a的连边 2到3有一条长为b的边 1到3有一条长为maxint的边 求1到3的最短路
一眼看过去这题可能对新手有点难,但只要你知道了树状数组,本题可以转化为树状数组来解决。先用树状数组维护一个所有位均为1的序列。a+b的值即为1~a的和加上1~b的和,这个求和我们就可以使用树状数组的求和搞定,即使是动态数据,我们有了动态求和的利器树状数组,对于m组询问,就可以在O(100000lg(100000) + m(lg(a)+lg(b)))的时间里对每组数据求解,代码又简短!
这题其实是裸的插头DP。我们构造一个2*2的网格,网格第1行第1列的数是a,第2行第2列的数是b,其他数是0。那么问题就变成求代价最小的哈密尔顿回路了。
这题其实是裸的FFT,考虑(1+a)*(1+b)=1+a+b+ab,所以乘完以后第一项就是答案。
本题其实是后缀数组的模板题。构造s,前a位为'b',后b位为'a',求sa[]和rank[]以及height[]之后,我们惊讶的发现,其实sa[1]就是答案了。。。
其实这是一道费用流裸题,在有向图里有一个点,源到它的流量为1,费用为-a,它到汇的流量为1,费用为-b,然后求最小费用最大流就好了。
这题其实是裸的LCT。假设有4个点,1到2连a,2到3连b,3到4连0,剩下的边连+oo。考虑将边排序,先求MST,然后不断往里面加新边,求出每个状态的MST边权和,最小值即为答案。