POJ1179 Polygon
题目: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的更多相关文章
- POJ-1179 Polygon (动态规划)
Polygon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5293 Accepted: 2238 Description P ...
- poj1179 Polygon【区间DP】
Polygon Time Limit: 1000MS Memory Limit: 10000K Total Submissions:6633 Accepted: 2834 Descriptio ...
- POJ1179 Polygon 区间DP
题目大意: 多边形游戏,有N个顶点的多边形,3 <= N <= 50 ,多边形有N条边,每个顶点中有一个数字(可正可负),每条边上或者是“+”号,或者是“*”号.边从1到N编号,首先选择一 ...
- 常规DP专题练习
POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time L ...
- 【POJ1179】Polygon 区间DP
这道题是典型的环形石子归并模型,破环成链后时间复杂度为\(O(n^3)\) 不过,因为题目中所给的数字可能是负数,仅仅记录区间内合并之后的最大值并不满足动态规划的最优子结构性质.因此,还需要额外记录下 ...
- [LeetCode] Convex Polygon 凸多边形
Given a list of points that form a polygon when joined sequentially, find if this polygon is convex ...
- 结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项
首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“lon ...
- [svg 翻译教程]Polyline(折线)polygon(多边形)
原文: http://tutorials.jenkov.com/svg/polygon-element.html Polyline 虽然说这个 元素我没用过,但是还是蛮强大的,也翻译下 示例 < ...
- [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题
[OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题 本文参考了(http://www.zeuscmd.com/tutorials/open ...
随机推荐
- quartz---springmvc的配置文件正合
quartz---springmvc的配置文件正合 XML <beans xmlns="http://www.springframework.org/schema/beans" ...
- [LeetCode] 29. Divide Two Integers(不使用乘除取模,求两数相除) ☆☆☆
转载:https://blog.csdn.net/Lynn_Baby/article/details/80624180 Given two integers dividend and divisor, ...
- ReactJS环境搭建
1.ReactJs 需要依赖nodejs环境,如果没有安装nodejs的话,需要安装.下载地址:https://nodejs.org/en/download/ 下载下来之后,安装windows版本的m ...
- qScrollArean的使用
1◆ qScrollArean的使用 qt designer 工具 有时会 卡死的 2◆ 展示效果 滚动条 3◆ 操作 4◆ 说明 qt designer会卡死的
- Edraw安装图解
Edraw安装图解 Success
- 快速切题 sgu102.Coprimes 欧拉函数 模板程度 难度:0
102. Coprimes time limit per test: 0.25 sec. memory limit per test: 4096 KB For given integer N (1&l ...
- Python 字符串转换为字典(String to Dict)
一.需求 为了处理从redis中拿到的value,如下 {"appId":"ct","crawlSts":false,"healt ...
- 自己写的一个delphi正整数快速排序
type TIntArr= array of word; procedure MyQSort(var arr: TIntArr; low: word; high: word); //word可以改 ...
- numpy 小示例
import numpy as np 生成 3*4 的由 0 组成的二维数组 >>> np.zeros((3,4)) array([[0., 0., 0., 0.], [0., 0 ...
- 2018-北航-面向对象567次OO作业分析与小结
设计策略及其变化 第五次作业-多线程电梯 在这次作业一开始的大部分时间,我一直想着怎样设计最为完美,完全使用BlockingQueue,导致交作业前发现设计并不能满足指导书的要求.最后仓皇之中加了一个 ...