zoukankan      html  css  js  c++  java
  • HDU 1495 非常可乐

    http://acm.hdu.edu.cn/showproblem.php?pid=1495

    bfs,个人感觉很经典的题目,分六种情况搜索

    View Code
    #include <iostream>
    using namespace std ;
    int s,n,m ;
    int q[101*101*101][3] ;
    int dp[101][101][101] ;
    int bfs()
    {
        if(s&1)
            return 0 ;
        if(n<(s>>1))
            return 0 ;
        dp[s][0][0]=0 ;
        int front=0,rear=1 ;
        q[front][0]=s ,q[front][1]=0 ,q[front][2]=0 ;
        while(front<rear)
        {
            int x,y,z ;
            int xx,yy,zz ;
            int pour ;
            x=q[front][0] ,y=q[front][1] ,z=q[front][2] ;
            front++ ;
            //s->n
            if(x!=0 && y!=n)
            {
                pour=min(x,n-y) ;
                xx=x-pour ;
                yy=y+pour ;
                zz=z ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
            //s->m
            if(x!=0 && z!=m)
            {
                pour=min(x,m-z) ;
                xx=x-pour ;
                yy=y ;
                zz=z+pour ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
            //n->s
            if(y!=0 && x!=s)
            {
                pour=min(y,s-x) ;
                xx=x+pour ;
                yy=y-pour ;
                zz=z ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
            //n->m
            if(y!=0 && z!=m)
            {
                pour=min(y,m-z) ;
                xx=x ;
                yy=y-pour ;
                zz=z+pour ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
            //m->s
            if(z!=0 && x!=s)
            {
                pour=min(z,s-x) ;
                xx=x+pour ;
                yy=y ;
                zz=z-pour ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
            //m->n
            if(z!=0 && y!=n)
            {
                pour=min(z,n-y) ;
                xx=x ;
                yy=y+pour ;
                zz=z-pour ;
                if(dp[xx][yy][zz]==-1)
                {
                    dp[xx][yy][zz]=dp[x][y][z]+1 ;
                    q[rear][0]=xx ,q[rear][1]=yy ,q[rear][2]=zz ;
                    rear++ ;
                }
            }
        }
        return dp[s>>1][s>>1][0] ;
    }
    int main()
    {
        while(scanf("%d%d%d",&s,&n,&m),(s||n||m))
        {
            if(n<m)
                n^=m^=n^=m ;
            memset(dp,-1,sizeof(dp)) ;
            int ans=bfs() ;
            if(ans<=0)
                puts("NO") ;
            else 
                printf("%d\n",ans) ;
        }
        return 0 ;
    }
  • 相关阅读:
    (十)HTTP.sys远程代码执行
    (九)不安全的HTTP方法
    (八)用户枚举
    (六)跨站请求伪造
    (五)跨站脚本攻击
    接口测试思路
    逆向工程,生成pojo、xml、mapper
    MyBatis框架核心之(五)注解使用resultMap及多表查询
    查看源代码Source not found及在eclipse中配置jdk的src.zip源代码
    EL有11个隐含对象
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2537887.html
Copyright © 2011-2022 走看看