1 条题解

  • 0
    @ 2025-10-8 16:55:07
    #include<bits/stdc++.h>
    using namespace std;
    struct node{int a[4],kt;};
    deque<node>Q;
    map<int,bool>V;bool vv[30];
    int A[4]; 
    int kt(node no){return no.a[1]*10000+no.a[2]*100+no.a[3];}
    int main()
    {
        scanf("%d%d%d",&A[1],&A[2],&A[3]);
        memset(vv,0,sizeof(vv));vv[A[3]]=1;
       
        node stno=node{{0,0,0,A[3]},0};stno.kt=kt(stno);
        V[stno.kt]=1;
        Q.push_back(stno);
        while(!Q.empty())
        {
            for(int i=1;i<=3;i++)for(int j=1;j<=3;j++)
    	        if(i!=j&&Q.front().a[i]>0)
    	        {
    	            node no=Q.front();
    	            int t=A[j]-no.a[j];
    	            if(no.a[i]>=t){  no.a[j]+=t;        no.a[i]-=t;}
    	            else          {  no.a[j]+=no.a[i];  no.a[i]=0; }
    	            no.kt=kt(no);
    				if(V[no.kt]==0)
    	            {
    	                V[no.kt]=1;
    					if(no.a[1]==0)vv[no.a[3]]=1;
                        Q.push_back(no);
    	                    
    	            }
    	        }
            Q.pop_front();
        }
        for(int i=0;i<=20;i++)if(vv[i])printf("%d ",i);
        return 0;
    }
    
    • 1

    【宽搜】[USACO1.4] 母亲的牛奶 Mother's Milk

    信息

    ID
    995
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    34
    已通过
    27
    上传者