题目: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. throw new OAException执行了,却没有正常抛出异常!

    try { if ("E".equals(returnStatus)) { throw new OAException(returnMessage, OAException.ERR ...

  2. DeepLearning (三) 预处理:主成分分析与白化

    [原创]Liu_LongPo 转载请注明出处 [CSDN]http://blog.csdn.net/llp1992 PCA算法前面在前面的博客中已经有介绍,这里简单在描述一下,更详细的PCA算法请参考 ...

  3. 微信小程序wx.chooseImage和wx.previewImage的综合使用(图片上传可以限制个数)

    本例从微信小程序的组件扒下来的. WXML: <view class="weui-cell"> <view class="weui-cell__bd&q ...

  4. Flask 学习资源

    http://docs.jinkan.org/docs/flask/quickstart.html

  5. C#阿里云移动推送列表

    C#阿里云移动推送列表 这个就在上期随笔的基础之上,加一个 函数就行了.   简单的. 附上源码:一下代码只要把参数改一下就可以了,中间几个参数 可以灵活修改 /// <summary> ...

  6. bzoj1088 [SCOI2005]扫雷

    题解: 首先枚举第一个有木有雷 然后第二个可以通过第一个推,第三个也是 以此类推 最后判断是否合法 代码: #include<bits/stdc++.h> using namespace ...

  7. 关于RM中的X3014错误,以及mul() 、天空盒

    关于  error X3014: incorrect number of arguments to numeric-type constructor 这个错误应该是某个类似float4 这样的变量初始 ...

  8. 使用OpenSSL生成证书并配置Https

    1.密钥.证书请求.证书概要说明 在证书申请签发过程中,客户端涉及到密钥.证书请求.证书这几个概念.我们以申请证书的流程说明三者的关系.客户端(相对于CA)在申请证书的时候,大体上有三个步骤: 第一步 ...

  9. windows内存体系结构 内存查询,读,写(附录源码)

    “进程内存管理器”这个程序实现的最基本功能也就是对内存的读写,之前的两篇文章也就是做的一个铺垫,介绍了内核模式切换和IoDeviceControl函数进行的应用程序与驱动程序通信的问题.接下来就进入正 ...

  10. 玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展HMC ...