Description

多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符 "+" 或 "*"。所有边依次用整数从1到n编号。

游戏第1步,将一条边删除。

随后的n-1步按以下方式操作:

(1)选择一条边E以及由E连接着的两个顶点V1V2

(2)用一个新的顶点取代边E以及由E连接着的两个顶点V1V2。将由顶点V1V2的整数值通过边E上的运算得到的结果赋予新顶点。

最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。

问题:对于给定的多边形,计算最高得分W ( -231 < W < 231 )。

Input

输入的第一行是单独一个整数n( 3 ≤ n ≤ 18 ),表示多边形的顶点数(同时也是边数)。接下来第n行,每行包含一个运算符("+"或"*")和一个整数V[i]( -10 < V[i] < 10 ),分别表示第i条边所对应的运算符和第i个顶点上的数值。

Output

输出只有一个整数,表示最高得分W

Sample Input

3
+
2
* 3
+ 1

Sample Output

9

  1. #include<string.h>
  2. #include<stdio.h>
  3. #include<iostream>
  4. #define MAX 102
  5. using namespace std;
  6. int v[MAX];
  7. char op[MAX];
  8. int n,minf,maxf;
  9. int m[MAX][MAX][];
  10. void minMax(int i,int s,int j)
  11. {
  12. int e[];
  13. int a=m[i][s][],
  14. b=m[i][s][],
  15. r=(i+s-)%n+,
  16. c=m[r][j-s][],
  17. d=m[r][j-s][];
  18. if(op[r]=='+')
  19. {
  20. minf=a+c;
  21. maxf=b+d;
  22. }
  23. else
  24. {
  25. e[]=a*c;
  26. e[]=a*d;
  27. e[]=b*c;
  28. e[]=b*d;
  29. minf=e[];
  30. maxf=e[];
  31. for(int k=; k<; k++)
  32. {
  33. if(minf>e[k])
  34. minf=e[k];
  35. if(maxf<e[k])
  36. maxf=e[k];
  37. }
  38. }
  39. }
  40. int polyMax(){
  41. for(int i=;i<=n;i++)
  42. for(int j=;j<=n;j++){
  43. m[i][j][]=;
  44. m[i][j][]=-;
  45. }
  46. for(int j=; j<=n; j++)
  47. for(int i=; i<=n; i++)
  48. for(int s=; s<j; s++)
  49. {
  50. minMax(i,s,j);
  51. if(m[i][j][]>minf)
  52. m[i][j][]=minf;
  53. if(m[i][j][]<maxf)
  54. m[i][j][]=maxf;
  55. }
  56. int temp=m[][n][];
  57. for(int i=; i<=n;i++)
  58. if(temp<m[i][n][]) temp=m[i][n][];
  59. return temp;
  60. }
  61. int main()
  62. {
  63. memset(m,,sizeof(m));
  64. cin >> n;
  65. getchar();
  66. for(int i=;i<=n;i++)
  67. {
  68. cin >> op[i] >> v[i];
  69. getchar();
  70. m[i][][]=m[i][][]=v[i];
  71. }
  72. cout << polyMax() <<endl;
  73. return ;
  74. }

多边形游戏(DP)的更多相关文章

  1. 1233: 传球游戏 [DP]

    1233: 传球游戏 [DP] 时间限制: 1 Sec 内存限制: 128 MB 提交: 4 解决: 3 统计 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做 ...

  2. python实现算法: 多边形游戏 数塔问题 0-1背包问题 快速排序

    去年的算法课挂了,本学期要重考,最近要在这方面下点功夫啦! 1.多边形游戏-动态规划 问题描述: 多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形.每个顶点被赋予一个整数值, 每条边被 ...

  3. 游戏 DP

    游戏 DP [题意描述] 小喵喵喜欢玩 RPG 游戏.在这款游戏中,玩家有两个属性,攻击和防御,现在小喵喵的攻击和防御都是 1,接下来小喵喵会依次遇到 n 个事件.事件有两种. 1.小喵喵经过修炼,角 ...

  4. [LuoguP1005]矩阵取数游戏 (DP+高精度)

    题面 传送门:https://www.luogu.org/problemnew/show/P1005 Solution 我们可以先考虑贪心 我们每一次都选左右两边尽可能小的数,方便大的放在后面 听起来 ...

  5. 多边形游戏——区间dp

    题目描述 多边形(Polygon)游戏是单人玩的游戏,开始的时候给定一个由N个顶点构成的多边形(图1所示的例子中,N=4),每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘 ...

  6. 算法设计与分析——多边形游戏(DP)

    1.问题描述:   给定N个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且N条边按照顺时针依次编号为1~N.下图给出了一个N=4个顶点的多边形. 游戏规则 :(1) 首先 ...

  7. 多边形游戏 /// 区间DP oj1903

    题目大意: ... Input 输入的第一行是单独一个整数n( 3 ≤ n ≤ 18 ),表示多边形的顶点数(同时也是边数). 接下来第n行,每行包含一个运算符("+"或" ...

  8. Hzoi 2018.2.11多边形 区间DP

    给定一个由N个顶点构成的多边形,每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘法运算),所有边依次用整数1到N标识. 一个多边形的图形表示 首次移动,允许将某条边删除: ...

  9. BZOJ 3875: [Ahoi2014]骑士游戏 dp+spfa

    题目链接: 题目 3875: [Ahoi2014]骑士游戏 Time Limit: 30 Sec Memory Limit: 256 MB 问题描述 [故事背景] 长期的宅男生活中,JYY又挖掘出了一 ...

随机推荐

  1. Message Loop 原理及应用

    此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Message loop,即消息循环,在不同系统或者机制下叫法也不尽相同,有被叫做event loop,也有 ...

  2. 【12c OCP】最新CUUG OCP-071考试题库(49题)

    49.(11-1) choose the best answer Examine the structure of the SHIPMENTS table: You want to generate ...

  3. “全栈2019”Java异常第一章:什么是异常?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  4. robot framework学习笔记之十一--第三方库requests详解

    一.安装 Requests 通过pip安装 pip install requests 或者,下载代码后安装: $ git clone git://github.com/kennethreitz/req ...

  5. NEST - How can i do multiple nested aggregation?

    question: How can I do multiple nested aggregation? I have tried something like this: Aggregations(x ...

  6. springboot 配置webservice接口

    导入依赖的jar <!-- webservice cxf --> <dependency> <groupId>org.apache.cxf</groupId& ...

  7. Nginx+SpringBoot搭建负载均衡

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  8. 代码 | 自适应大邻域搜索系列之(2) - ALNS算法主逻辑结构解析

    00 前言 在上一篇推文中,教大家利用了ALNS的lib库求解了一个TSP问题作为实例.不知道你萌把代码跑起来了没有.那么,今天咱们再接再厉.跑完代码以后,小编再给大家深入讲解具体的代码内容.大家快去 ...

  9. AFNetworking 3.1.0 使用中某些知识点讲解

    # POST / GET  请求 /*! 首先要知道,POST请求不能被缓存,只有 GET 请求能被缓存.因为从数学的角度来讲,GET 的结果是 幂等 的,就好像字典里的 key 与 value 就是 ...

  10. Python【每日一问】16

    问: [基础题]TCP/UDP/HTTP协议区别 [提高题]在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...