USACO 1.4 牛奶
Posted lm-lbg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了USACO 1.4 牛奶相关的知识,希望对你有一定的参考价值。
题目:https://www.luogu.org/problemnew/show/P1215
令三元组(i,j,k)表示该情况是否出现,即可防止死循环
注意0这个答案有可能是合法的,答案要加上
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; inline int read() { int ans = 0,op = 1; char ch = getchar(); while(ch < ‘0‘ || ch > ‘9‘) { if(ch == ‘-‘) op = -1; ch = getchar(); } while(ch >= ‘0‘ && ch <= ‘9‘) { (ans *= 10) += ch - ‘0‘; ch = getchar(); } return ans * op; } bool ok[21][21][21]; bool e[21]; int a,b,c; void dfs(int i,int j,int k) { if(i < 0 || j < 0 || k < 0 || i > a || j > b || k > c) return; if(ok[i][j][k]) return; if(i == 0) e[k] = 1; ok[i][j][k] = 1; dfs(i - (b - j),b,k); dfs(0,i + j,k); dfs(i,j - (c - k),c); dfs(i,0,j + k); dfs(a,j,k - (a - i)); dfs(i + k,j,0); dfs(a,j - a + i,k); dfs(i + j,0,k); dfs(i,b,k - b + j); dfs(i,j + k,0); dfs(i - c + k,j,c);//1 -> 3 dfs(0,j,i + k); } int main() { a = read(),b = read(),c = read(); dfs(0,0,c); for(int i = 0;i <= c;i++) if(e[i]) printf("%d ",i); return 0; }
以上是关于USACO 1.4 牛奶的主要内容,如果未能解决你的问题,请参考以下文章
$P1215 [USACO1.4]母亲的牛奶 Mother's Milk$
P1344 [USACO4.4] 追查坏牛奶 Pollutant Control (网络流)