【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 ...
随机推荐
- MD5加密
public string Second_MD5(string str) { MD5 md5 = MD5.Create();//创建MD5实例 byte[] strbyte = Encoding.UT ...
- AndroidStudio使用过程中遇到的bug
Ref:http://www.cnblogs.com/jingmo0319/p/5781878.html 1. Error:Execution failed for task ':app:transf ...
- 【转】Java面试宝典2015版(绝对值得收藏超长版)(一)
(转自:http://mp.weixin.qq.com/s?__biz=MjM5MTM0NjQ2MQ==&mid=206619070&idx=1&sn=fcb21001d442 ...
- Lintcode 166. 链表倒数第n个节点
----------------------------------- 最开始的想法是先计算出链表的长度length,然后再从头走 length-n 步即是需要的位置了. AC代码: /** * De ...
- Java 8中一些常用的全新的函数式接口
这一篇属于菜鸟级博客,只是介绍了一些在Java 8中新出现的一些很有用的接口,通过一些简单的例子加以说明,没有深入地阐述. 函数式接口 什么是函数式接口? 函数式接口,@FunctionalInter ...
- Toad for Oracle
# 设置schema browser 多标签
- .NET Attribute 入门【笔记】
闲谈:没有系统的学过,偶尔看看,看的也不是很清楚. 却一直不明白,本来也不难,自己动手写了个示例.结果一目了然…… Attribute —— 标记 可以对方法.类等事务进行附着.增加属性. 下面以我见 ...
- C++ Tips and Tricks
整理了下在C++工程代码中遇到的技巧与建议. 0x00 巧用宏定义. 经常看见程序员用 enum 值,打印调试信息的时候又想打印数字对应的字符意思.见过有人写这样的代码 if(today == MON ...
- 优化Linux内核参数
转自:http://www.centoscn.com/CentOS/config/2013/0804/992.html vim /etc/sysctl.conf 1.net.ipv4.tcp_max_ ...
- IIS设置默认主页无效
服务器系统:Windows server 2008 R2 IIS版本:7.5 IIS中部署一个dotnet framework 3.5的网站应用程序,设置"默认文档"为:index ...