洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入格式 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入 #1复制 4 4…
纪中21日T3 2118. 最大公约数 (File IO): input:gcd.in output:gcd.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto ProblemSet 题目描述 给出两个正整数A,B,求它们的最大公约数. 输入 第一行一个正整数A.第二行一个正整数B. 输出 在第一行输出一个整数,表示A,B的最大公约数. 样例输入 1824  样例输出 6  数据范围限制 在40%的数据中,1 ≤ A,B ≤ 10^6在60%的数据中,1…
P1880 [NOI1995]石子合并 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入格式 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入 #1 4 4 5 9 4 输出 #1 43 5…
区间DP模板题 区间DP模板Code: ;len<=n;len++) { ;i<=*n-;i++) //区间左端点 { ; //区间右端点 for(int k=i;k<j;k++) //断点位置 { f[i][j] = min(f[i][j],f[i][k] + f[k + ][j] + s[j] - s[i - ]); } } } 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.…
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合并问题是一排,而此问题是一个圈,也就意味着最后一堆石子可已选择第一堆石子,那这要怎么做呢? 其实方法很简单,在n堆石子后额外增加(n-1)堆石子,这(n-1)堆石子不是随意造的,其个数与前(n-1)堆石子一一对应. 然后,就是经典的石子合并问题了. 对于 1 到 2*n-1堆石子,进行区间最优解的查…
题目传送门 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 复制 4 4 5 9 4 分析:显然是用DP.…
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 4 4 5 9 4 输出样例#1: 43 54解题思路:一…
AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL 题解传送 T1 1575. 二叉树 T2 2117. 台风 T3 2118. 最大公约数 T4 2119. 环状石子归并…
嗯... 题目链接:https://www.luogu.org/problem/P1880 这道题特点在于石子是一个环,所以让a[i+n] = a[i](两倍长度)即可解决环的问题,然后注意求区间最小值的时候dp要初始化为一个很大的数... AC代码: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; ][], dp2[…
1575. 二叉树 (File IO): input:tree.in output:tree.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto ProblemSet 题目描述 在众多的数据结构中,二叉树是一种特殊而重要的结构,有着广泛的应用.二叉树或者是一个节点,或者有且仅有一个节点位二叉树的根,其余节点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集.每个子集又是一个二叉树. 遍历一棵二叉树就是按某条搜索路径巡访其中每个节点,使得每个节点…
2117. 台风 (File IO): input:storm.in output:storm.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto ProblemSet 题目描述 天气预报频道每天从卫星上接受卫星云图.图片被看作是一个矩阵,每个位置上要么是”#”,要么”.”,”#”表示该位置没有云,”.”表示有云,地图上每个位置有多达8个相邻位置,分别是,左上.上.右上.左.右.左下.下.右下8个方向,一块云是由连续的”.”组成. 给你一幅卫星云图和形成台…
codevs1048: 题目大意:有n堆石子排成一列,每次可合并相邻两堆,代价为两堆的重量之和,求把他们合并成一堆的最小代价. 解题思路:经典区间dp.设$f[i][j]$表示合并i~j的石子需要的最小代价.则有$f[i][j]=min(f[i][k]+f[k+1][j]+\sum\limits _{l=i}^{j}a[l])$,时间复杂度$O(n^3)$. C++ Code: #include<cstdio> #include<cstring> using namespace s…
纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto ProblemSet 题目描述 输入 输出 样例输入 样例输出 数据范围限制 提示 吐槽 这些图片太模糊了吧…… 还有那吓人的 mod 998244353 都使得我们对这道题的恐惧感叠加了998244353层…… 没想到……只有三种答案!(三进制呵呵哒) Solution (约定:用line[i]表…
纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms  空间限制: 524288 KB  具体限制   Goto ProblemSet 题目描述 沙雕游戏……反正我没玩过…… 输入 输出 样例输入 数据范围限制 Solution 考试时想的是对的 为什么就是没有分呢? 首先看看仙人掌有几种情况 situation1 两个比较分开的仙人掌…… 小恐龙按照这样走(跳),并没有什么特殊操作.这时…
石子合并 fmax[l][r]表示合并区间[l,r]的最大分值, fmin[l][r]表示合并区间[l,r]的最小分值 for(k l~r-1) fmax[l][r]=max(fmax[l][r],fmax[l][k]+f[k+1][r]+sum[l][r]); sum[l][r]可以提到外面 最小值同理 处理环形就把环搞成一个2倍长度的链,最后枚举长度为n的区间最大得分和最小得分 #include<iostream> #include<cstdio> using namespac…
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 4 4 5 9 4 输出样…
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 复制 4 4 5 9 4 输出样例#1: 复制 43 54…
https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得…
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式: 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入样例#1: 4 4 5 9 4 输出样例#1: 43 54     区…
[区间dp让人头痛……还是要多写些题目练手,抽空写篇博客总结一下] 这题区间dp入门题,理解区间dp或者练手都很妙 ——题目链接—— (或者直接看下面) 题面 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 范围:1≤N≤100 分析 这个范围……感受到快乐了吗? 一般这种范围复杂度都超高哦~ 这题是区间DP,我想看标题就知道了,…
纪中2159. max 洛谷P1249 最大乘积 说明:这两题基本完全相同,故放在一起写题解 纪中2159. max (File IO): input:max.in output:max.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto ProblemSet 题目描述 一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,….现在你的任务是将指定的正整数n分解成m个(m>=1)互不相同的自然数的…
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto ProblemSet 题目描述 经过刘邦的严密缉查,项羽的位置也就水落石出了.刘邦便趁机集合军队,进行对项羽的围攻.为了增加胜率,张良研究出一种全新的战法,目的就是一举打败难缠的项羽.  这种军队共有N个单位,一个接着一个排成一排,每个单位可以是士兵,或者是战车,这样的组合可以爆发出意想不到的强大战斗力:但…
经典水题....... 断环为链长度乘二,求前缀和区间DP. #include <cstdio> #include <cstring> #include <algorithm> #define int long long ; int f[N][N], sum[N]; main() { int n; scanf("%lld", &n); ; i <= n; i++) { scanf("%lld", &sum[i…
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 合并果子题目传送门:https://www.luogu.org/problemnew/show/P1090 瑞瑞的木板题目传送门:https://www.luogu.org/problemnew/show/P1334 瑞瑞的木板把题目转化成每次合并两块木板变成块就跟合并果子一样了. 显然,对于权值越大的数字我希望它的合并次数越少越好,所以我们每次选当前有的数字里两个最小的拿出来合并,这个可以用小根…
题目 第一类区间DP模板题. 所谓第一类区间DP,是指合并型区间DP,状态转移方程一般形如 \(f_{i,j}=\max{f_{i,k}+f_{k+1,j}+cost_{i,j}}\) ,时间复杂度一般是 \(O(n^3)\). 这道题因为在环上,不能直接套板子,我们考虑: 断环成链,时间复杂度 \(O(n^4)\) .如果加火车头之类的东西的话勉强能卡过去. 倍长原环,做完DP以后在长度为 \(n\) 的 \(n\) 个区间内找最优解.时间复杂度 \(O(n^3)\),可以通过本题. 就本题而…
题目链接 直接暴力搞是\(n\)方的复杂度.\(n^2\)个数选\(n\)个最小的,容易想到堆. 我们堆里记录两个信息:到\(A\)数组哪个位置了,到\(B\)数组哪个位置了, 我直接把这两个信息存在一个\(int\)里了. 然后按\(A[i]\)+\(B[j]\)建立小根堆,每次取出堆顶并输出,然后弹出,在把这个堆顶的\(B\)数组的指针右移,加入堆,重复\(n\)次就好了. 为了降低常数,我手写了堆. #include <cstdio> #include <cstring> #…
T1 2121. 简单游戏 (File IO): input:easy.in output:easy.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto ProblemSet 题目描述       Charles和sunny在玩一个简单的游戏.若给出1~n的一个排列A,则将A1.A2相加,A2.A3相加……An-1.An相加,则得到一组n-1个元素的数列B:再将B1.B2相加,B2.B3相加,Bn-2.Bn-1相加,则得到一组n-2个元素的数列……如此往复…
T2 GMOJ2127. 电子表格 (File IO): input:excel.in output:excel.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   Goto ProblemSet 题目描述 也许你用过Microsoft Excel之类的电子制表软件,这类软件最令人称道的就是强大的公式计算功能.现在希望你也来实现一个具有最基本功能的电子制表软件.表格共有m列(0 < m • 26),从左到右依次用A到Z的大写英文字母表示:有n行(0 < n &…
1564. 旅游 题目描述 输入N个数,从中选择一些出来计算出总和,问有多少种选法使得和为质数. 输入 第一行一个整数N. 第二行N个整数,表示这N个数的值. 输出 一个整数,表示方案数. 样例输入 4 1 1 2 7 样例输出 5 提示 [样例解释] 一共有12种选法:(1,1,2,7),(1,2,7),(2,7),(1,1,7),(1,7),(7),(1,1,2),(1,2),(2),(1,1),(1)和(),其中(1,1,2,7),(7),(1,2),(1,1),(2)为5种正确选法. […
2296. 神殿 (File IO): input:temple.in output:temple.out 时间限制: 1500 ms  空间限制: 524288 KB  具体限制 Goto ProblemSet 题目描述 输入 输出 样例输入 样例输入1 2 2 +* *U 1 1 2 2 样例输入2 2 3 <>< ><> 1 1 2 1 样例输出 样例输出1 -1 样例输出2 4 数据范围限制 提示 题目标中的特殊符号:<>^v+*|- Solutio…