一道警钟一样的好题

解析

乍一看:
“这不就能量项链嘛,这也蓝?”

然后就愉快的WA掉了…
qwq

让我们回归本源,在什么时候可以动态规划?
“局部最优解可以带动全局最优解的时候,我们可以使用动态规划算法”
然而在本题中,却不满足这个条件!
局部的最大值不一定会导致全局的最优!
当另一边为负时,局部取最大反而是最差的结果
所以应该维护一个最小值,考虑从两方面进行转移

以后写类似的题一定要多想一想,不能想当然

代码

#include<bits/stdc++.h>
using namespace std;
const int N=120;
const int mod=1e9+7;
double eps=1e-10;
#define ll long long
ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();};while(isdigit(c)){x=x*10+c-'0';c=getchar();};return x*f;
}int n,m;int x[N],op[N];
int mx[N][N],mn[N][N];
//1: add 2:multiply
int q[N],num;
int main(){memset(mx,-0x3f,sizeof(mx));memset(mn,0x3f,sizeof(mn));n=read();for(int i=1;i<=n;i++){char c;scanf(" %c%d",&c,&x[i]);op[i]=c=='t'?1:2;}for(int i=n+1;i<=2*n;i++){x[i]=x[i-n];op[i]=op[i-n];}for(int i=1;i<=n*2;i++) mn[i][i]=mx[i][i]=x[i];for(int len=2;len<=n;len++){for(int l=1;l+len-1<=2*n;l++){int r=l+len-1;for(int i=l;i<r;i++){if(op[i+1]==1){mx[l][r]=max(mx[l][r],mx[l][i]+mx[i+1][r]);mn[l][r]=min(mn[l][r],mn[l][i]+mn[i+1][r]);}else{mx[l][r]=max(mx[l][r],max(mx[l][i]*mx[i+1][r],mn[l][i]*mn[i+1][r]));mn[l][r]=min(mn[l][r],min(mx[l][i]*mx[i+1][r],mn[l][i]*mn[i+1][r]));}}}}int ans(-2e9);for(int i=1;i<=n;i++){int o=mx[i][i+n-1];if(ans<o){ans=o;q[num=1]=i;}else if(ans==o) q[++num]=i;}printf("%d\n",ans);for(int i=1;i<=num;i++) printf("%d ",q[i]);return 0;
}
/*
2 2 1
1 1
2 1 1
*/

P4342:[IOI1998]Polygon(区间dp)相关推荐

  1. P4342 [IOI1998]Polygon

    题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条边 ...

  2. [LUOGU] P4342 [IOI1998]Polygon

    poj挂了快两天了.. 洛谷的今日运势真的强,说能完成WA的题就能完成.. 咳咳,区间DP. 思路类似合并果子,不过在维护f[i][j] (i到j的最大值) 同时也要维护g[i][j] (i到j的最小 ...

  3. P4342 [IOI1998]Polygon —— 断链成环

    多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条边.随后每一步: 选择一条边连接的两个顶点V ...

  4. POJ1179,P4342-[IOI1998]Polygon【区间dp】

    正题 POJ题目链接:http://poj.org/problem?id=1179 洛谷评测记录:https://www.luogu.org/recordnew/lists?uid=52918& ...

  5. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  6. 0x53. 动态规划 - 区间DP(习题详解 × 8)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...

  7. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  8. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

  9. 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)

    最优矩阵链乘(动态规划) 一个n∗mn*mn∗m的矩阵由 nnn 行 mmm 列共 n∗mn*mn∗m 排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个nm的矩阵乘mp的矩阵,运算量 ...

最新文章

  1. 为什么百度只收录我的网站首页?
  2. Lua截取utf-8编码的中英文混合字符串
  3. (备忘)Java数据类型中String、Integer、int相互间的转换
  4. 使用 coding.net 发布你的个人博客
  5. 微博客之后有可能是“切客”
  6. SAP产品增强技术回顾
  7. jQuery.sap.require
  8. 【渝粤教育】电大中专新媒体营销实务 (13)作业 题库
  9. 小学计算机三年级课程目录,小学生信息技术课本目录.doc
  10. 初学网站建设,要学习些什么?
  11. oracle中断进程,中断ORACLE数据库关闭进程导致错误案例
  12. 每个电脑都会自己的SID号和GUID号,而且不会相同。。
  13. 输入法候选词排列的两种新方式
  14. Java设计模式——建造者模式
  15. Reed-Solomon纠错码(RS码)(里德-所罗门码)
  16. 计算机上的符号在哪找,像w的那个符号在哪里可以找到?word文档
  17. Basic Sensor Calibration (1) -- 加速计传感器校准
  18. 【备忘】尚学堂白贺翔java互联网架构师视频教程下载
  19. 现场总线->无线网络的技术->泛在网络
  20. springboot项目版本升级

热门文章

  1. Jupyter 常见可视化框架的选择
  2. oracle中表截断是什么意思,Oracle截断表
  3. html引用单文件组件,vue之单文件组件 纯网页方式引入
  4. java io流学设置编码_Java学习日志(21-2-IO流-基本数据类型与字节数组对象与、编码解码)...
  5. php 下拉表单,PHP表单和填充下拉列表问题
  6. php-7.1.0,PHP 7.4.0 Alpha 1 v7.4.0 官方最新版
  7. JAVA跟MYSQL数据库交互_【编写Java程序实现与Mysql数据库的连接,并交互性的实现简单查询,删除,修改,排序,显示等操作】...
  8. python数据分析numpy_(转)Python数据分析之numpy学习
  9. 计算机基础与应用教程计算机硬件,计算机基础系列一:计算机硬件
  10. 共聚焦图片怎么加标尺_聚焦扶贫政策,打造小康生活