zoj 2626 Polygon Game
2012-12-15 16:28
239 查看
这题Dp方程很容易想到,但是居然WA了一天,后来一个博客,才发现负数对最大值的影响。恍然大悟呀……
/* * zoj_2626.cpp */ #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; #define N 52 #define hpmax(a,b) (a)>(b)?(a):(b) #define hpmin(a,b) (a)<(b)?(a):(b) #define MIN -1e50 #define MAX 1e50 /** * [0]: max * [1]: min, maybe negative */ long long dp [2], ans; int ver ; char ope ; int n; inline long long calculate( long long a, char oper, long long b ) { if ( '+' == oper ) return ( a+b ); return ( a*b ); } int main() { int i, j, k, len, kn, jn; long long tmp; while ( scanf("%d", &n ) != EOF && n ) { for ( i = 0; i < n; ++ i ) { scanf(" %c%d", &ope[i], &ver[i] ); } for ( i = 0; i < n; ++ i ) dp[i][i][0] = dp[i][i][1] = ver[i]; ans = MIN; for ( len = 1; len < n; ++ len ) { //lenght = len+1 for ( i = 0; i < n; ++ i ) { j = i + len; jn = j%n; dp[i][jn][0] = MIN; dp[i][jn][1] = MAX; for ( k = i; k < j; ++ k ) { kn = k%n; tmp = calculate( dp[i][kn][0], ope[(k+1)%n], dp[(k+1)%n][jn][0] ); dp[i][jn][0] = hpmax( dp[i][jn][0], tmp ); dp[i][jn][1] = hpmin( dp[i][jn][1], tmp ); tmp = calculate( dp[i][kn][0], ope[(k+1)%n], dp[(k+1)%n][jn][1] ); dp[i][jn][0] = hpmax( dp[i][jn][0], tmp ); dp[i][jn][1] = hpmin( dp[i][jn][1], tmp ); tmp = calculate( dp[i][kn][1], ope[(k+1)%n], dp[(k+1)%n][jn][0] ); dp[i][jn][0] = hpmax( dp[i][jn][0], tmp ); dp[i][jn][1] = hpmin( dp[i][jn][1], tmp ); tmp = calculate( dp[i][kn][1], ope[(k+1)%n], dp[(k+1)%n][jn][1] ); dp[i][jn][0] = hpmax( dp[i][jn][0], tmp ); dp[i][jn][1] = hpmin( dp[i][jn][1], tmp ); } if ( n-1 == len ) ans = hpmax( ans, dp[i][jn][0] ); } } printf("%lld\n", ans ); } return 0; }
相关文章推荐
- [ZOJ]1048-水题一枚-注意数据类型转换的技巧
- UVA_10183||POJ_2413||ZOJ_1962||HDU_1316(大数加法、检索)
- ZOJ 3328 Searching the String (AC自动机)
- ZOJ 2770 Burn the Linked Camp(最短路+SPFA+差分约束系统)
- ZOJ 1806 (小数高精度)
- ZOJ 3537 Cake (区间DP,三角形剖分)
- ZOJ-1232 Adventure of Super Mario floyd+DP
- zoj 2974 Just Pour the Water矩阵快速幂
- ZOJ 3469 Food Delivery (区间DP,经典)
- ZOJ-1456 Minimum Transport Cost 最短路floyd路径输出
- ZOJ 1760 How Many Shortest Path(最短路+网络流之最大流)
- ZOJ 3684 Destroy
- POJ 2080/ZOJ 2420
- ZOJ Problem Set - 1365 Mileage Bank
- ZOJ 3209 Treasure Map (DLX精确覆盖问题)
- ZOJ-1004-Anagrams by Stack
- zoj 3366 Islands
- zoj 贪心
- ZOJ 3760 Treasure Hunting(最大流)
- zoj1026 Modular multiplication of polynomials