【luogu】 P1880 石子合并
原题原题原题原题原题
先贴上错误代码。。。
↓错误代码↓
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[1100][1100],f2[1100][1100],st[1100],a[1100];
int main()
{
memset(f,127,sizeof(f));
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i+n]=a[i];
st[i]=st[i-1]+a[i];
}
for(int i=n+1;i<=2*n;i++)
st[i]=st[i-1]+a[i];
for(int i=1;i<=n+n;i++)
f[i][i]=0,f2[i][i]=0;
for(int l=1;l<=n;l++)
for(int i=1;l+i<=n+n;i++)
{
int j=i+1; //第N次把“l”(英文字母)和“1”(阿拉伯数字)搞混
for(int k=i;k<=j-1;k++)
{
f2[i][j]=max(f2[i][j],f2[i][k]+f2[k+1][j]+st[j]-st[i-1]);
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+st[j]-st[i-1]);
}
}
int maxn=f2[1][n];
int minn=f[1][n];
for(int i=1;i<=n;i++)
{
maxn=max(minn,f2[i][i+n-1]); //max函数里写minn,真的不知道怎么想的,我发誓再也不直接复制粘贴了
minn=min(minn,f[i][i+n-1]);
}
cout<<minn<<endl<<maxn;
return 0;
}
↑错误代码↑
错误原因已经注释了,40分
———————————————————分—————割—————线—————————————————————
经过一番检查,发现了这些智障错误,感到自己都惊呆了
↓正确代码↓
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[1100][1100],f2[1100][1100],st[1100],a[1100];
int main()
{
memset(f,127,sizeof(f));
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i+n]=a[i];
st[i]=st[i-1]+a[i];
}
for(int i=n+1;i<=2*n;i++)
st[i]=st[i-1]+a[i];
for(int i=1;i<=n+n;i++)
f[i][i]=0,f2[i][i]=0;
for(int l=1;l<=n;l++)
for(int i=1;l+i<=n+n;i++)
{
int j=i+l;
for(int k=i;k<=j-1;k++)
{
f2[i][j]=max(f2[i][j],f2[i][k]+f2[k+1][j]+st[j]-st[i-1]);
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+st[j]-st[i-1]);
}
}
int maxn=f2[1][n];
int minn=f[1][n];
for(int i=1;i<=n;i++)
{
maxn=max(maxn,f2[i][i+n-1]);
minn=min(minn,f[i][i+n-1]);
}
cout<<minn<<endl<<maxn;
return 0;
}
↑正确代码↑
满分
【luogu】 P1880 石子合并的更多相关文章
- luogu P1880 石子合并
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- P1880 石子合并
P1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计 ...
- 【洛谷】P1880 石子合并
P1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计 ...
- 经典DP 洛谷p1880 石子合并
https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...
- [luogu 1880]石子合并
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- 洛谷P1880 石子合并(环形石子合并 区间DP)
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- 洛谷P1880 石子合并(区间DP)(环形DP)
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1 ...
- luogu P1880石子归并
石子归并 luogu1880 传送门 noi1995 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得 ...
- 洛谷 P1880 石子合并
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
随机推荐
- 第一章 简单工厂模式 及 UML中类图的表示方法
写一个简单计算器程序时,可以写一个操作类,然后加.减.乘.除操作分别继承它,复写操作计算结果的方法.写一个简单工厂类,通过输入的操作符,使用操作类来new一个相应的操作类的子类对象.这样,工厂就实例化 ...
- Mac系统下开启和关闭隐藏文件的方法
在Mac下找到终端,输入以下命令(注意区分大小写): 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool tru ...
- 转:POI操作Excel导出
package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...
- Transaction (Process ID xxx) was deadlocked on lock
Transaction (Process ID 161) was deadlocked on lock | communication buffer resources with another pr ...
- MVC AjaxOptions 中的OnSuccess方法执行多次的问题
原因是单个页面嵌套多个部分视图,而多个视图中有多个表单提交但是Onsuccess方法的函数名是一样的. 例如主页面的Onsuccess方法叫success 点击部分视图后js文件又含有一个succes ...
- C++开始前篇,深入编译链接(补充2)
在开始链接之前,我们先了解几个概念: 一>符号的概念. 我们知道,链接的最重要的是"对符号的重定位",而且上面提到了符号表,那什么是符号呢,在链接中,我们将函数和变量统称为符 ...
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- Spring MVC 学习 -- 创建过程
Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...
- 对rxandroid的简单理解
最近发现这个rxandroid挺火的,我就研究了一下,还真的挺不错. 首先在说之前可能很多人会和我刚刚学习的时候一样有很多疑问,如: 1:rxandroid是什么东西? 2:rxandroid能干嘛? ...
- HTML5的 input:file上传类型控制
一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表. multiple:是否可以选择多个文 ...