|Tyvj|NOI1995|动态规划|P1055 沙子合并
2016-08-05 15:29
253 查看
http://tyvj.cn/p/1055
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 1000 + 5;
int f[maxn][maxn];
//设f[i][j]为合并[i..j]的最小费用
//f[i][j] = min{f[i][j], f[i][k]+f[k+1][j]+a[j]-a[i-1] | i<=k<j}
int a[maxn];
int main ()
{
int n;
scanf("%d", &n);
int tot = 0;
for (int i=1;i<=n;i++)
{
int aa;
scanf("%d", &aa);
tot += aa;
a[i] = tot;
}
memset(f,20,sizeof(f));
for (int i=1;i<=n;i++) f[i][i] = 0;
for (int i=n-1;i>0;i--)
{
for (int j=i+1;j<=n;j++)
{
for (int k=i;k<=j-1;k++)
{
f[i][j] = min(f[i][j], f[i][k]+f[k+1][j]+a[j]-a[i-1]);
}
}
}
printf("%d\n", f[1]
);
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 1000 + 5;
int f[maxn][maxn];
//设f[i][j]为合并[i..j]的最小费用
//f[i][j] = min{f[i][j], f[i][k]+f[k+1][j]+a[j]-a[i-1] | i<=k<j}
int a[maxn];
int main ()
{
int n;
scanf("%d", &n);
int tot = 0;
for (int i=1;i<=n;i++)
{
int aa;
scanf("%d", &aa);
tot += aa;
a[i] = tot;
}
memset(f,20,sizeof(f));
for (int i=1;i<=n;i++) f[i][i] = 0;
for (int i=n-1;i>0;i--)
{
for (int j=i+1;j<=n;j++)
{
for (int k=i;k<=j-1;k++)
{
f[i][j] = min(f[i][j], f[i][k]+f[k+1][j]+a[j]-a[i-1]);
}
}
}
printf("%d\n", f[1]
);
return 0;
}
相关文章推荐
- 创建maven项目时报错
- Spring注解@Component、@Repository、@Service、@Controller区别
- 前端AJAX FORMDATA 提交文件,服务端读取文件和文件名
- 防止用户误操作返回键导致程序退出,监听back键的状态做统一处理
- centos 下安装svn
- Scrapy爬虫-大数据爬取时内存过大的解决办法(转)
- 数据结构之栈的链式表示及其实现
- NEFU 358 埃及分数(迭代加深,数学)
- POJ 3628 Bookshelf 2(简单背包)
- ios 2016微信支付及支付宝开发
- React-native Android环境安装(Windows10)
- 设计模式之状态模式---State Pattern
- POJ 3026 Borg Maze BFS+最小生成树
- Android Retrofit RxJava实现缓存
- jQuery 提供多个与 AJAX 有关的方法。
- HDU 5793 A Boring Question
- 企业自研扫描器之路:信息收集模块
- kafka环境搭建及librdkafka测试
- kmp 算法演示
- Monkey测试简介[附示例]