SRM 578 div1
2012-10-21 21:01
435 查看
第一次做DIV1,果断爆0。。。弱B的孩子伤不起啊。。。
275pt那题调了一上午没调出来,明显的傻逼dp就是不会写。。。T_T
参考DD大神的思路:
dp[i][j]表示从第i个位置贴一个长度为L的stamp,颜色为j。。。。
View Code
275pt那题调了一上午没调出来,明显的傻逼dp就是不会写。。。T_T
参考DD大神的思路:
dp[i][j]表示从第i个位置贴一个长度为L的stamp,颜色为j。。。。
View Code
class Stamp { public: int dp [4]; int cc(char c) { if(c == 'R') return 0; if(c == 'G') return 1; if(c == 'B') return 2; return 3; } int getMinimumCost(string dc, int sc, int pc) { int n = dc.size(), i, j, nj, k, l, t; LL ans = inf; for(l = 1; l <= n; ++l) { for(i = 0; i < N; ++i) for(j = 0; j < 3; ++j) dp[i][j] = inf; for(j = 0; j < 3; ++j) { t = cc(dc[0]); if(t == 3 || t == j) dp[0][j] = 1; } for(i = 0; i < n; ++i) { for(j = 0; j < 3; ++j) { for(k = i + 1; k <= i + l && k < n; ++k) { if(k + l - 1 >= n) break; t = cc(dc[k-1]); if(t != 3 && t != j) break; for(nj = 0; nj < 3; ++nj) { if(k < i + l && nj != j) continue; t = cc(dc[k]); if(t != 3 && t != nj) continue; dp[k][nj] = min(dp[k][nj], dp[i][j] + 1); } } } } /* for(i = 0; i < n; ++i) { printf("%d | %d %d %d\n", i, dp[i][0], dp[i][1], dp[i][2]); } printf("-------------%d-------------\n", l); */ for(j = 0; j < 3; ++j) { bool f = true; for(i = n - l; i < n; ++i) { t = cc(dc[i]); if(t != 3 && t != j) f = false; } if(f) ans = Min(ans, LL(dp[n - l][j])*LL(pc) + LL(l*sc)); } } return ans; } };
相关文章推荐
- [TopCoder] SRM 578 DIV 2, Wolf In Zoo, Solution
- SRM 578 Div II Level Two: GooseInZooDivTwo, DFS
- SRM DIV2 578 GooseInZooDivTwo
- SRM 578 Div II Level Three: WolfInZooDivTwo,Dynamic Programming,求教!
- [TopCoder] SRM 578 DIV 2, Goose In Zoo, Solution
- SRM 578 DIV 2
- SRM 578 250 DIV2
- SRM 578 DIV2 DIV1
- [TopCoder] SRM 578 DIV 2, Goose In Zoo, Solution
- [TopCoder] SRM 586 DIV 2, 500p, 1000p, Solution
- Topcoder SRM 652 DIV1 250
- SRM 449 DIV 1 总结(550p标记下,下次做)
- SRM 448 div1(practice)
- Topcoder SRM 626 DIV2 SumOfPower
- TopCoder SRM 474 DIV1 1000
- TC Member SRM 478 DIV 1(CarrotJumping-操作观察)
- topcoder srm 315 div1
- SRM588 KeyDungeonDiv1
- srm588 div1
- SRM149 - SRM150(少SRM150-DIV1-LV3)