poj1179多边形——区间DP
题目:http://poj.org/problem?id=1179
区间DP,值得注意的是有负值,而且有乘法,因此可能会影响最大值;
注意memset中写-1仅仅是-1,-2才是一个很小的负数;
最后找mxx时也要注意可能最大是负值,因此不能随便给mxx赋成0或-1之类。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a[],mx[][],mn[][],ans[],t,INF=;
bool sid[][];
int main()
{
char dc;
scanf("%d ",&n);
memset(mx,-,sizeof mx);//-1仅是-1!
memset(mn,,sizeof mn);
for(int i=;i<=n;i++)
{
if(i==n)scanf("%c %d",&dc,&a[i]);
else scanf("%c %d ",&dc,&a[i]);
if(dc=='t')sid[i-][i]=;
else sid[i-][i]=;
a[i+n]=a[i];
sid[i-+n][i+n]=sid[i-][i];
mx[i][i]=a[i];mx[i+n][i+n]=a[i];
mn[i][i]=a[i];mn[i+n][i+n]=a[i];
}
for(int l=;l<=n;l++)
for(int i=;i<=n*-l;i++)//
{
int j=i+l-;
for(int k=i;k<j;k++)
{
if(sid[k][k+])
{
mx[i][j]=max(mx[i][j],mx[i][k]+mx[k+][j]);
mn[i][j]=min(mn[i][j],mn[i][k]+mn[k+][j]);
}
else
{
mx[i][j]=max(mx[i][j],mx[i][k]*mx[k+][j]);
mx[i][j]=max(mx[i][j],mn[i][k]*mn[k+][j]);
mx[i][j]=max(mx[i][j],mx[i][k]*mn[k+][j]);
mx[i][j]=max(mx[i][j],mn[i][k]*mx[k+][j]); mn[i][j]=min(mn[i][j],mx[i][k]*mx[k+][j]);
mn[i][j]=min(mn[i][j],mn[i][k]*mn[k+][j]);
mn[i][j]=min(mn[i][j],mx[i][k]*mn[k+][j]);
mn[i][j]=min(mn[i][j],mn[i][k]*mx[k+][j]);
}
}
}
int mxx=-INF;//!-1
// for(int i=1;i<=n;i++)
// {
// if(mx[i][i+n-1]>mxx)
// {
// memset(ans,0,sizeof ans);
// t=1;
// ans[t]=i;
// mxx=mx[i][i+n-1];
// }
// else if(mx[i][i+n-1]==mxx)ans[++t]=i;
// }
// printf("%d\n",mxx);
// for(int i=1;i<=t;i++)
// printf("%d ",ans[i]);
for(int i=;i<=n;i++)
mxx=max(mxx,mx[i][i+n-]);
printf("%d\n",mxx);
for(int i=;i<=n;i++)
if(mx[i][i+n-]==mxx)
printf("%d ",i);
return ;
}
poj1179多边形——区间DP的更多相关文章
- 多边形——————区间dp
原题链接:https://www.acwing.com/problem/content/285/ 题意简单来说就是:给你一个环,断掉一条边使其成为一个链,用这个链跑dp,求最大得分. 首先这不是一道板 ...
- Hzoi 2018.2.11多边形 区间DP
给定一个由N个顶点构成的多边形,每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘法运算),所有边依次用整数1到N标识. 一个多边形的图形表示 首次移动,允许将某条边删除: ...
- POJ1179 Polygon 区间DP
题目大意: 多边形游戏,有N个顶点的多边形,3 <= N <= 50 ,多边形有N条边,每个顶点中有一个数字(可正可负),每条边上或者是“+”号,或者是“*”号.边从1到N编号,首先选择一 ...
- poj1179 环形+区间dp
因为要用到模,所以左起点设置为0比较好 #include<iostream> #include<cstdio> #include<cstring> #define ...
- Vijos 1565 多边形 【区间DP】
描述 zgx给了你一个n边的多边形,这个多边形每个顶点赋予一个值,每条边都被标上运算符号+或*,对于这个多边形有一个游戏,游戏的步骤如下:(1)第一步,删掉一条边:(2)接下来n-1步,每步对剩下的边 ...
- 多边形游戏——区间dp
题目描述 多边形(Polygon)游戏是单人玩的游戏,开始的时候给定一个由N个顶点构成的多边形(图1所示的例子中,N=4),每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘 ...
- poj1179 区间dp(记忆化搜索写法)有巨坑!
http://poj.org/problem?id=1179 Description Polygon is a game for one player that starts on a polygon ...
- kuangbin 区间dp
A - Cake 题目大意:给你一个n个顶点(n<=100)的多边形和每两个点连边的消耗,让你求把这个多边形全部切成三角形所需要的最小消耗,如果这个多边形为凹多边形则输出无解. 思路:先求一个凸 ...
- BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画(几何&区间dp)
1719: [Usaco2006 Jan] Roping the Field 麦田巨画 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 82 Solved ...
随机推荐
- 显存不够----ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096]
ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096] 类似问题 h ...
- Android studio 混淆打包问题
参考 : Android Studio代码混淆设置以及上传mapping文件 AndroidStudio 混淆打包 在app 目录下 proguard-rules.pro中加入 通用 混淆 #指定代 ...
- 访问一个绝对地址把一个整型数强制转换 (typecast)为一个指针是合法的
在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66.编译器是一个纯粹的ANSI编译器.写代码去完成这一任务. 解析:这一问题测试你是否知道为了访问一个绝对地址把一个整型数强制转换 ...
- String代码示例
package lianxi; public class lianxi0112 { public static void main(String[] args) { // TODO 自动生成的方法存根 ...
- EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...
- Java AQS详解(转)
原文地址 一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同 ...
- Linux内核--并发【转】
本文转自自:http://www.jianshu.com/p/035550ae05d2 为什么会产生并发 1.多个用户同时登陆的时候,他们有可能在任何时刻以任意的组合调用内核代码. 2.smp系统可能 ...
- poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
The Settlers of Catan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1123 Accepted: ...
- POJ 2348 Euclid Game (模拟题)
Euclid's Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7942 Accepted: 3227 Des ...
- BZOJ 1206 [HNOI2005]虚拟内存:模拟
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1206 题意: 内存大小为n(外存无限大),共有m次访问,每一次访问的信息编号为p. 对于每 ...