题目:http://poj.org/problem?id=1179

石子合并的升级版。有负值。但运算符只有 + 和 * 。

考虑负值对原做法正确性的影响:之所以仅记录最大值可能不对,是因为有可能负数 * 负数得到很大结果。

发现只有这种情况影响。而且这种情况中负数越小越优。所以记录一下最小值,每次参与更新就行了。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//const int INF=16843009,FIN=-16843010;
int n,d[][][],ans=-;//别忘了ans的初值
char ch[];
int main()
{
scanf("%d",&n);//初值?
memset(d[],-,sizeof d[]);
memset(d[],,sizeof d[]);
for(int i=;i<=n;i++)
{
scanf(" %c%d",&ch[i],&d[][i][i]);
d[][i][i]=d[][i][i];
d[][i+n][i+n]=d[][i][i];d[][i+n][i+n]=d[][i][i];
ch[i+n]=ch[i];
// printf("(%d)(%c)",d[0][i][i],ch[i]);
}
for(int i=;i<=n;i++)
for(int l=;l<=*n-i;l++)
{
int r=l+i-;
for(int k=l;k<r;k++)//l~k k+1~r
{
if(ch[k+]=='t')
{
// printf("(%d+%d) ",d[0][k][k],d[0][k+1][k+1]);
d[][l][r]=max(d[][l][r],d[][l][k]+d[][k+][r]);
d[][l][r]=min(d[][l][r],d[][l][k]+d[][k+][r]);
}
if(ch[k+]=='x')
{
// printf("(%d*%d) ",d[0][k][k],d[0][k+1][k+1]);
d[][l][r]=max(d[][l][r],max(d[][l][k]*d[][k+][r],d[][l][k]*d[][k+][r]));
d[][l][r]=min(min(d[][l][r],d[][l][k]*d[][k+][r])
,min(d[][l][k]*d[][k+][r],d[][l][k]*d[][k+][r]));
}
}
}
for(int i=;i<=n;i++)
ans=max(ans,d[][i][i+n-]);
printf("%d\n",ans);
for(int i=;i<=n;i++)
if(d[][i][i+n-]==ans)
printf("%d ",i);
return ;
}

POJ1179 Polygon的更多相关文章

  1. POJ-1179 Polygon (动态规划)

    Polygon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5293 Accepted: 2238 Description P ...

  2. poj1179 Polygon【区间DP】

    Polygon Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:6633   Accepted: 2834 Descriptio ...

  3. POJ1179 Polygon 区间DP

    题目大意: 多边形游戏,有N个顶点的多边形,3 <= N <= 50 ,多边形有N条边,每个顶点中有一个数字(可正可负),每条边上或者是“+”号,或者是“*”号.边从1到N编号,首先选择一 ...

  4. 常规DP专题练习

    POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time L ...

  5. 【POJ1179】Polygon 区间DP

    这道题是典型的环形石子归并模型,破环成链后时间复杂度为\(O(n^3)\) 不过,因为题目中所给的数字可能是负数,仅仅记录区间内合并之后的最大值并不满足动态规划的最优子结构性质.因此,还需要额外记录下 ...

  6. [LeetCode] Convex Polygon 凸多边形

    Given a list of points that form a polygon when joined sequentially, find if this polygon is convex ...

  7. 结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项

    首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“lon ...

  8. [svg 翻译教程]Polyline(折线)polygon(多边形)

    原文: http://tutorials.jenkov.com/svg/polygon-element.html Polyline 虽然说这个 元素我没用过,但是还是蛮强大的,也翻译下 示例 < ...

  9. [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题

    [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题 本文参考了(http://www.zeuscmd.com/tutorials/open ...

随机推荐

  1. gitlab永久设置密码

    在 .gitconfig 文件中加入: [credential]       helper = store .git-credentials close address

  2. DevExpress v18.1新版亮点——WPF篇(四)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...

  3. DevExpress v17.2新版亮点—DevExtreme篇(二)

    用户界面套包DevExpress DevExtreme v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme v17.2 的New Color Sche ...

  4. 使用Setup安装Windows8 RTM方法

    1.下载Windows 8 RTM版. 2.解压ISO映像或加载虚拟光驱. 3.为了安装双系统,打开sources文件夹中的setup.exe才可. 4.打开后选择“在线获取安装程序的最新更新(推荐) ...

  5. PowerShell基础

    1. 一些命令像Get-SPSite有不同的参数变量.这些变量通过-?展示出来. Get-SPSite -? 2. F3 在当前行显示最近的一条命令结果 3. F7 显示之前执行过的命令列表 4. 显 ...

  6. iOS-UIImage变为NSData并进行压缩

    <iOS>UIImage变为NSData并进行压缩   //sdk中提供了方法可以直接调用 UIImage *img = [UIImage imageNamed:@"some.p ...

  7. Ubuntu:搜狗输入法不能输入中文

    搜狗输入法不能输入中文 问题描述 可以打开搜狗输入法,可以打英文,但是不能切换成中文. 其他输入法正常使用(这个可以判断是不是fcitx是不是出现错误). 有一个关于sogou的内部错误提示 解决方法 ...

  8. Centos编译Unix网络编程(第三版)卷1的源代码

    测试环境:Centos 1)在shell中输入./configure然后按回车(注意先让configure有执行权限 chomd 777 configure) 2)依次进入lib.libfree.li ...

  9. 第十七篇 make的路径搜索综合实践

     本节我们编写路径搜索相关的makefile,具体需求如下:  1.工程项目中不希望源码文件夹在编译时被改动(只读文件夹).  2.在编译时自动创建文件夹(build)用于存放编译结果.  3.编译过 ...

  10. magento增加左侧导航栏

    1.打开 app\design\frontend\default\modern\layout\catalog.xml,在适当位置加入以下代码: <reference name=”left”> ...