poj 1179 动态规划
来源:互联网 发布:贵州中小企业数据统计 编辑:程序博客网 时间:2024/04/28 17:19
求最大,同时维护最小。
#include <iostream>#include <algorithm>#include <fstream>#include <string>using namespace std;#define N 50#define inf 10000000string s[N+5];int f[N+5][N+5],g[N+5][N+5];int main(){ freopen("1.in","r",stdin); freopen("1.out","w",stdout); int n; cin>>n; for (int i=0;i<n;i++){ int j; cin>>s[(i+1-1)%n+1]>>j; f[(i+2-1)%n+1][0] = g[(i+2-1)%n+1][0] = j; } for (int i=1;i<=n;i++) for (int len=1;len<n;len++) f[i][len]=-inf, g[i][len]=inf; for (int len=1;len<n;len++){ for (int i=1;i<=n;i++){ for (int t=0;t<len;t++){ if (s[(i+t-1)%n+1][0]=='t'){ if (f[i][len]<f[i][t]+f[(i+t+1-1)%n+1][len-t-1]) f[i][len]=f[i][t]+f[(i+t+1-1)%n+1][len-t-1]; if (g[i][len]>g[i][t]+g[(i+t+1-1)%n+1][len-t-1]) g[i][len]=g[i][t]+g[(i+t+1-1)%n+1][len-t-1]; } else { int Max=max(max(f[i][t]*f[(i+t+1-1)%n+1][len-t-1], f[i][t]*g[(i+t+1-1)%n+1][len-t-1]), max(g[i][t]*f[(i+t+1-1)%n+1][len-t-1], g[i][t]*g[(i+t+1-1)%n+1][len-t-1]) ); int Min=min(min(f[i][t]*f[(i+t+1-1)%n+1][len-t-1], f[i][t]*g[(i+t+1-1)%n+1][len-t-1]), min(g[i][t]*f[(i+t+1-1)%n+1][len-t-1], g[i][t]*g[(i+t+1-1)%n+1][len-t-1]) ); if (f[i][len]<Max) f[i][len]=Max; if (g[i][len]>Min) g[i][len]=Min; } } } } int ans=-inf; for (int i=1;i<=n;i++) if (ans<f[i][n-1]) ans=f[i][n-1]; cout<<ans<<endl; int sum=0; for (int i=2;i<=n+1;i++) if (ans==f[(i-1)%n+1][n-1]){ if (sum) cout<<' '; cout<<i-1; sum++; } cout<<endl; return 0;}
- poj 1179 动态规划
- POJ-1179 Polygon (动态规划)
- poj 2411 动态规划
- Poj 1157(动态规划)
- POJ 1651动态规划
- Poj 1221 动态规划
- POJ 3186 动态规划
- [poj]动态规划2479
- [poj]动态规划1015
- [poj] 动态规划 1141
- POJ 1088 动态规划
- poj 1636 动态规划
- poj 1159 动态规划
- POJ 动态规划 题集
- poj 1088 动态规划
- POJ 3267 动态规划
- poj 2609 动态规划
- poj 3267 动态规划
- Pro Android学习笔记(十三):用户界面和控制(1):UI开发
- HDU 1106 排序
- Vim 配置详解
- shell批量添加删除100用户
- 自己实现用FFT加速多项式计算
- poj 1179 动态规划
- 今天遇到一个Extjs窗口层次问题,找了半天找到一篇有用的
- hdu4489 The King’s Ups and Downs
- 存储过程中执行动态Sql语句
- uploadfiy 3.0
- Android Query框架用法简单介绍
- C++宏定义详解
- 字符串处理小结
- 华为机试题——整数减法