• USACO Section 1.4 Mother's Milk


    DFS最容易理解,visited[A][B][C]表示a,b,c三桶此种状态有没有被搜索过,ans存放符合条件时,c桶的状态。对于每一个状态,下一状态有六种可能,详见代码中注释

     1 /*
    2 ID:linyvxi1
    3 PROG:milk3
    4 LANG:C++
    5 */
    6 #include <stdio.h>
    7 #include <algorithm>
    8 #include <stdlib.h>
    9 #include <string.h>
    10 using namespace std;
    11 long ans[50],p=-1;
    12 long a,b,c;
    13 bool visited[50][50][50];
    14
    15 bool check(long C)
    16 {
    17 int i;
    18 for(i=0;i<=p;i++){
    19 if(ans[i]==C){
    20 return true;
    21 }
    22 }
    23 return false;
    24 }
    25
    26 void DFS(long A,long B,long C)
    27 {
    28 if(visited[A][B][C])
    29 return;
    30 visited[A][B][C]=true;
    31 if(A==0){
    32 if(!check(C)){
    33 ans[++p]=C;
    34 }
    35 }
    36
    37 if(A<=b-B){
    38 DFS(0,B+A,C);
    39 }else DFS(A-(b-B),b,C);//A->B
    40 if(A<=c-C){
    41 DFS(0,B,C+A);
    42 }else DFS(A-(c-C),B,c);//A->C
    43 if(B<=a-A){
    44 DFS(A+B,0,C);
    45 }else DFS(a,B-(a-A),C);//B->A
    46 if(B<=c-C){
    47 DFS(A,0,C+B);
    48 }else DFS(A,B-(c-C),c);//B->C
    49 if(C<=a-A){
    50 DFS(A+C,B,0);
    51 }else DFS(a,B,C-(a-A));//C->A
    52 if(C<=b-B){
    53 DFS(A,B+C,0);
    54 }else DFS(A,b,C-(b-B));//C->B
    55
    56
    57 }
    58
    59 int main()
    60 {
    61 memset(ans,0,sizeof(ans));
    62 memset(visited,0,sizeof(visited));
    63
    64 FILE* fin=fopen("milk3.in","r");
    65 FILE* fout=fopen("milk3.out","w");
    66
    67 fscanf(fin,"%d%d%d",&a,&b,&c);
    68 DFS(0,0,c);
    69 sort(ans,ans+p+1);
    70 int i;
    71 for(i=0;i<=p;i++){
    72 if(i)
    73 fprintf(fout," ");
    74 fprintf(fout,"%d",ans[i]);
    75 }
    76 fprintf(fout,"\n");
    77 return 0;
    78 }



  • 相关阅读:
    BZOJ BLO 1123 (割点)【双连通】
    P4291 [HAOI2008]排名系统
    P3165 [CQOI2014]排序机械臂
    P3224 [HNOI2012]永无乡
    P1169 [ZJOI2007]棋盘制作
    P2303 [SDOi2012]Longge的问题
    P2216 [HAOI2007]理想的正方形
    P2473 [SCOI2008]奖励关
    P2617 Dynamic Rankings
    P2518 [HAOI2010]计数
  • 原文地址:https://www.cnblogs.com/yangce/p/2342651.html
Copyright © 2020-2023  润新知