• 追逐学长的背影


    由于某些奇怪的原因,11月暂时被跳过了,不要在意这些细节……有缘分的话会回头看的。

    https://www.cnblogs.com/DaD3zZ-Beyonder/archive/2015/12.html

    BZOJ 1024 生日快乐

    给一个长方形,切成n<=10份面积相等的长方形,要求这些长方形里最大的长宽比最小(也就是尽可能正方形),一开始不太理解,看了别人的博客,要使得每一块的面积相等,必然要使每一刀切下去的两块都是最终面积的倍数。由于n很小所以搜索的层数并不会很多。dfs(x,y,n)表示蛋糕xy分n块能够得到的最小的最大长宽比(类似dp的思想,有无后效性)。

    BZOJ 1607 Patting Heads

    这里好像是暴力的筛法,但其实并不是埃筛,因为埃筛不会访问合数。这里好像用到一个之前学过的求和式 $sumlimits_{i=1}^{n}lfloorfrac{n}{i} floor=O(nlogn)$ ,也就是从1遍历到n,他们的所有倍数的次数加起来大概是 $O(nlogn)$ 。

    最大流Dinic算法

    学长去学习了最大流Dinic算法。由于本人不会故只能先抄抄别人的模板,先对比一下哪个模板更强。

    学长的模板:

    bool bfs()
    {
        memset(dis,-1,sizeof(dis));
        q[1]=0; dis[0]=1;
        h=0;t=1;
        while (h<t)  
            {
                int j=q[++h],i=head[j];
                while (i)
                    {
                        if (edge[i].v>0 && dis[edge[i].to]<0)
                            {
                                dis[edge[i].to]=dis[j]+1;
                                q[++t]=edge[i].to;
                            }
                        i=edge[i].next;
                    }
            }
        if (dis[num]>0)
            return true;
        else
            return false;
    }
    
    long long dfs(int loc,long long low)
    {
        if(loc==num)return low;
        long long flow,cost=0;
        for(int i=cur[loc];i;i=edge[i].next)
            if(dis[edge[i].to]==dis[loc]+1)
                {
                    flow=dfs(edge[i].to,min(low-cost,edge[i].v));
                    edge[i].v-=flow;edge[i^1].v+=flow;
                    if(edge[i].v) cur[loc]=i;
                    cost+=flow;if(cost==low)return low;
                }
        if(!cost)dis[loc]=-1;
        return cost;
    }
    
    long long dinic()
    {
        long long temp=0;
        while (bfs())
            {
               for (int i=0; i<=num; i++) cur[i]=head[i];
               temp+=dfs(0,maxl);
            }
        return temp;
    }
    View Code

     其他:

    发现C++的log函数的写法:以m为底的对数=log(n)/log(m)

  • 相关阅读:
    两线段是否相交模板
    树的距离
    Codeforces Round #369 (Div. 2)-D Directed Roads
    Codeforces Round #369 (Div. 2)-C Coloring Trees
    Codeforces Round #374 (Div. 2)-D Maxim and Array
    zstu-4243 牛吃草
    Codeforces Round #447 (Div. 2)
    zstu 4247-萌新的旅行
    CDQ分治求前缀和
    self.faceshowing = !self.facshowing无效,了,原来set
  • 原文地址:https://www.cnblogs.com/Yinku/p/10478329.html
Copyright © 2020-2023  润新知