石子合并(区间DP经典例题)
题目链接:https://www.luogu.org/problemnew/show/P1880
- #include <cstdio>
- #include <cmath>
- #include <cstring>
- #include <string>
- #include <cstdlib>
- #include <sstream>
- #include <iostream>
- #include <queue>
- #include <stack>
- #include <set>
- #include <map>
- #include <algorithm>
- #include <functional>
- using namespace std;
- #define ll long long
- #define re register
- #define fi first
- #define se second
- #define mp make_pair
- #define pb push_back
- #define P pair<int,int>
- const int N=1e6+;
- const int mod=1e9+;
- void read(int &a)
- {
- a=;
- int d=;
- char ch;
- while(ch=getchar(),ch>''||ch<'')
- if(ch=='-')
- d=-;
- a=ch-'';
- while(ch=getchar(),ch>=''&&ch<='')
- a=a*+ch-'';
- a*=d;
- }
- void write(int x)
- {
- if(x<)
- putchar(),x=-x;
- if(x>)
- write(x/);
- putchar(x%+'');
- }
- int f1[][],f2[][],s[];
- int main()
- {
- int n;
- read(n);
- for(re int i=;i<=n;i++)
- {
- read(s[i]);
- s[i+n]=s[i];
- }
- for(re int i=;i<=*n;i++)
- s[i]=s[i-]+s[i];
- int j;
- for(re int k=;k<n;k++)
- {
- for(re int i=,j=i+k;j<*n&&i<*n;i++,j++)
- {
- f2[i][j]=0x3fffffff;
- for(re int t=i;t<j;t++)
- f1[i][j]=max(f1[i][j],f1[i][t]+f1[t+][j]+s[j]-s[i-]),f2[i][j]=min(f2[i][j],f2[i][t]+f2[t+][j]+s[j]-s[i-]);
- }
- }
- int ans1=0x3fffffff,ans2=;
- for(re int i=;i<=n;i++)
- ans1=min(ans1,f2[i][i+n-]),ans2=max(ans2,f1[i][i+n-]);
- write(ans1);
- putchar('\n');
- write(ans2);
- putchar('\n');
- return ;
- }
石子合并(区间DP经典例题)的更多相关文章
- 洛谷 P1880 [NOI1995] 石子合并(区间DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...
- 石子合并 区间dp模板
题意:中文题 Description 在操场上沿一直线排列着 n堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的两堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分.允许在第一次合 ...
- HDU4632 Poj2955 括号匹配 整数划分 P1880 [NOI1995]石子合并 区间DP总结
题意:给定一个字符串 输出回文子序列的个数 一个字符也算一个回文 很明显的区间dp 就是要往区间小的压缩! #include<bits/stdc++.h> using namesp ...
- 石子合并 区间DP模板题
题目链接:https://vjudge.net/problem/51Nod-1021 题意 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石 ...
- 洛谷 P1080 石子合并 ( 区间DP )
题意 : 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.试设计出1个算法,计算出将N堆石子合并成1堆 ...
- 石子合并——区间dp
石子合并(3种变形) <1> 题目: 有N堆石子排成一排(n<=100),现要将石子有次序地合并成一堆,规定每次只能选相邻的两堆合并成一堆,并将新的一堆的石子数,记为改次合并的得分, ...
- 洛谷P1880 石子合并(环形石子合并 区间DP)
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- P1880 [NOI1995]石子合并 区间dp+拆环成链
思路 :一道经典的区间dp 唯一不同的时候 终点和起点相连 所以要拆环成链 只需要把1-n的数组在n+1-2*n复制一遍就行了 #include<bits/stdc++.h> usi ...
- HRBUST - 1818 石子合并 区间dp入门
有点理解了进阶指南上说的”阶段,状态和决策“ /* 区间dp的基础题: 以区间长度[2,n]为阶段,枚举该长度的区间,状态dp[l][r]表示合并区间[l,r]的最小费用 状态转移方程dp[l][r] ...
- HDU 3506 (环形石子合并)区间dp+四边形优化
Monkey Party Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
随机推荐
- electron 主进程,和渲染进程的通信
ipcMain https://electronjs.org/docs/api/ipc-main 当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息, 当然也有可能从主进程向渲染进 ...
- 在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用XML返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- Oracle数据库版本10.2.0.1升级到10.2.0.3(转)
Oracle数据库版本10.2.0.1升级到10.2.0.3 1.停止OEM/isqlplus/监听/DB实例 $ emctl stop dbconsole $ isqlplusctl stop $ ...
- 洛谷P1182 数列分段【二分】【贪心】
题目:https://www.luogu.org/problemnew/show/P1182 题意: 有n个数,要分成连续的m段.将每段中的数相加,问之和的最大值的最小值是多少. 思路: 和P1316 ...
- Win10正式版U盘安装教程
1.首先我们需要登陆“微软中国下载中心”,从中下载一款名为“MediaCreationTool”的工具,利用该工具可以制作Win10安装U盘.直接通过以下地址快速进入“Windows下载中心”,根据自 ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 夺宝奇兵 - [简单思维题]
题目链接:https://zhixincode.com/contest/18/problem/A?problem_id=259 题目描述 wls正在玩一个寻宝游戏. 宝藏一共有 $n$ 种,都藏在一个 ...
- [No0000C8]英特尔快速存储IRST要不要装
IRST (英特尔快速存储技术)Intel Rapid Storage Technology(简称IRST)又称英特尔快速存储技术. Intel Rapid Start Technolog同样是简称( ...
- /etc/apt/sources.list" E212: Can't open file for writing解决方案
:w !sudo tee % > /dev/null 解决.
- centos7安装Apache
1.下载安装包wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.37.tar.gz 2.解压tar zxvf httpd-2.4.37.ta ...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
京东技术 https://mp.weixin.qq.com/s?src=11×tamp=1551342955&ver=1455&signature=0hYp8OsxY ...