[简单DP] COJ 1122 Game
2012-08-07 07:13
225 查看
这道题直接模拟即可,DP相当于一个优化,记录下从第i行第j列出发后到达的最终位置,下次需要时直接取,优化前后最坏情况下复杂度都是O(10^6)。
2WA,输出时把 n 当作 m 了,还以为是题目的下落方式没理解对。
一组数据:
------------------------input--------------------------------
5 5
_____
_\\__
__/__
_\___
_____
5 1 2 3 4 5
------------------------output------------------------------
1 0 1 2 1
# include <cstdio> # include <cstring> # define N 1000 + 5 int n, m; int cnt , ff , f ; char g ; int down(int row, int col) { int &ans = f[row][col]; if (ans != -1) return ans; if (row == n) return ans = col; if (g[row][col] == '\\') { if (col+1>m || g[row][col+1]=='/') return ans = 0; return ans = down(row+1, col+1); } if (g[row][col] == '/') { if (col-1<1 || g[row][col-1]=='\\') return ans = 0; return ans = down(row+1, col-1); } return ans = down(row+1, col); } void solve(void) { for (int i = 1; i <= n; ++i) memset(f[i]+1, -1, sizeof(int)*m); for (int i = 1; i <= m; ++i) { ff[i] = down(1, i); cnt[i] = 0; } int k, x; scanf("%d", &k); while (k--) { scanf("%d", &x); ++cnt[ff[x]]; } printf("%d", cnt[1]); for (int i = 2; i <= m; ++i) printf(" %d", cnt[i]); putchar('\n'); } void read_graph(void) { for (int i = 1; i <= n; ++i) scanf("%s", g[i]+1); } int main() { while (~scanf("%d%d", &n, &m)) { read_graph(); solve(); } return 0; }
2WA,输出时把 n 当作 m 了,还以为是题目的下落方式没理解对。
一组数据:
------------------------input--------------------------------
5 5
_____
_\\__
__/__
_\___
_____
5 1 2 3 4 5
------------------------output------------------------------
1 0 1 2 1
相关文章推荐
- Light oj 1122 Digit Count(简单dp)
- [简单DP] COJ 1123 PK武林盟主
- Light OJ 1122 Digit Count (简单数位DP)
- Bachet's Game+uva+简单dp
- lightoj 1122 - Digit Count 简单DP
- lightoj 1122 - Digit Count 简单DP
- LightOJ 1231+1232+1122+1047 (简单dp)
- (POJ3176) Cow Bowling <简单dp>
- zoj 3329 One Person Game (概率DP )
- UVA 10891 Game of Sum(区间DP)
- HDU 4576 (概率dp的简单应用)只有两种情况
- 计算直线的交点数(hdu1466简单的dp)
- ZOJ 3329 One Person Game (概率DP)
- Milking Time(3616) 简单dp
- tyvj p1016 装箱问题( 简单DP 01背包)
- USACO Section 1.5 Number Triangles - 最最简单最最经典的DP..
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 H (简单DP)
- C - Monkey and Banana HDU - 1069 简单dp
- 简单dp-max sum
- DP(三)——简单的完全背包