zoukankan      html  css  js  c++  java
  • [SCOI2008]天平

    这道题,是博主做的第一道差分约束的题。。。

    什么是差分约束呢?就是有一定限制条件,情况不一定,同时满足可以差分。。。

    对于这道题我们可以发现,砝码的重量只有 1 2 3

    所以我们可以很轻松的,列举最大差值最小差值,再通过弗洛伊德,限制上下界。。。

    最后看限制的唯一情况,符合那种情况就好了。。。

    呆码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    int n,A,B,minn[55][55],maxn[55][55],c1,c2,c3;
    char ch[110];
    
    int main()
    {
        scanf("%d%d%d",&n,&A,&B);
        for(int i=1;i<=n;i++)
        {
            scanf("%s",ch);
            int m=strlen(ch);
            for(int j=0;j<m;j++)
            {
                if(ch[j]=='=' || i==j+1) { minn[i][j+1]=0,maxn[i][j+1]=0; continue; }
                if(ch[j]=='+') { minn[i][j+1]=1,maxn[i][j+1]=2; continue; }
                if(ch[j]=='-') { minn[i][j+1]=-2,maxn[i][j+1]=-1; continue; }
                minn[i][j+1]=-2,maxn[i][j+1]=2;
            }
        }
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++) if(i!=k)
                for(int j=1;j<=n;j++) if(i!=j && k!=j)
                {
                    minn[i][j]=max(minn[i][j],minn[i][k]+minn[k][j]);
                    maxn[i][j]=min(maxn[i][j],maxn[i][k]+maxn[k][j]);
                }
        for(int i=1;i<=n;i++) if(i!=A && i!=B)
            for(int j=1;j<i;j++) if(j!=A && j!=B)
                {
                    if(minn[A][i]>maxn[j][B] || minn[B][i]>maxn[j][A]) { c1++; continue; }
                    if(minn[i][A]>maxn[B][j] || minn[i][B]>maxn[A][j]) { c3++; continue; }
                    if((minn[A][i]==maxn[A][i] && minn[j][B]==maxn[j][B] && minn[A][i]==maxn[j][B])
                      || (minn[A][j]==maxn[A][j] && minn[i][B]==maxn[i][B] && minn[A][j]==maxn[i][B]))
                    { c2++; continue; }
                }
        printf("%d %d %d
    ",c1,c2,c3);
        return 0;
    }
    代码
  • 相关阅读:
    弹出层模板
    Target runtime Apache Tomcat v7.0 is not defined.解决方法
    Referenced file contains errors
    angular 双向绑定demo
    VB 6.0 ByVal ByRef 的区别
    AutoResetEvent 类的学习网站
    C# 各种定时器区分
    C# 占用系统资源少的延时
    C# API sendmessage()函数获 部分讲解 (挺不错的)
    C# API sendmessage()函数 部分讲解
  • 原文地址:https://www.cnblogs.com/zzzyc/p/9227894.html
Copyright © 2011-2022 走看看