HRBUST 1819

石子合并问题--圆形版
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 61(27 users) Total Accepted: 26(22 users) Rating:  Special Judge: No
Description
在圆形操场上摆放着一行共n堆的石子。现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请编辑计算出将n堆石子合并成一堆的最小得分和将n堆石子合并成一堆的最大得分。
Input
输入有多组测试数据。

每组第一行为n(n<=100),表示有n堆石子,。

二行为n个用空格隔开的整数,依次表示这n堆石子的石子数量ai(0<ai<=100)

Output
每组测试数据输出有一行。输出将n堆石子合并成一堆的最小得分和将n堆石子合并成一堆的最大得分。 中间用空格分开。
Sample Input
3

1 2 3

Sample Output
9 11

代码:

//前一个题的变形,直线变环,把石子接成2*n堆,再进行dp就行了,始终控制区间的最大长度是n。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
int n,a[210],dp1[210][210],dp2[210][210],sum[210];
int main()
{
    while(scanf("%d",&n)==1){
        sum[0]=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            a[n+i]=a[i];
        }
        memset(dp1,inf,sizeof(dp1));
        memset(dp2,0,sizeof(dp2));
        for(int i=1;i<=2*n;i++){
            sum[i]=sum[i-1]+a[i];
            dp1[i][i]=dp2[i][i]=0;
        }
        for(int i=2;i<=2*n;i++){
            for(int j=i-1;j>=(i<=n?1:i-n+1);j--){
                for(int k=j;k<i;k++){
                    dp1[j][i]=min(dp1[j][i],dp1[j][k]+dp1[k+1][i]+sum[i]-sum[j-1]);
                    dp2[j][i]=max(dp2[j][i],dp2[j][k]+dp2[k+1][i]+sum[i]-sum[j-1]);
                }
            }
        }
        int ans1=inf,ans2=0;
        for(int i=1;i<=n;i++){
            ans1=min(ans1,dp1[i][i+n-1]);
            ans2=max(ans2,dp2[i][i+n-1]);
        }
        printf("%d %d\n",ans1,ans2);
    }
    return 0;
}
时间: 2024-08-04 00:29:59

HRBUST 1819的相关文章

1819: [JSOI]Word Query电子字典

1819: [JSOI]Word Query电子字典 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 729  Solved: 238[Submit][Status] Description 人们在英文字典中查找某个单词的时候可能不知道该单词的完整拼法,而只知道该单词的一个错误的近似拼法,这时人们可能陷入困境,为了查找一个单词而浪费大量的时间.带有模糊查询功能的电子字典能够从一定程度上解决这一问题:用户只要输入一个字符串,电子字典就返回与该单词编辑距

HRBUST 1214 方格取数

方格取数 Time Limit: 1000ms Memory Limit: 65535KB This problem will be judged on HRBUST. Original ID: 121464-bit integer IO format: %lld      Java class name: Main 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放人数字0.如下图所示(见样例 ,黄色和蓝色分别为两次走的路线,其中绿色的格子为黄色和蓝色共同走

HRBUST 1161 树状数组区间更新求和

Leyni Time Limit: 3000 MS Memory Limit: 65536 K Total Submit: 267(64 users) Total Accepted: 82(57 users) Rating: Special Judge: No Description Leyni被人掳走,身在水深火热之中... 小奈叶为了拯救Leyni,独自一人前往森林深处从静竹手中夺回昏迷中的Leyni. 历经千辛万苦,小奈叶救出了Leyni,但是静竹为此极为恼怒,决定对他们发起最强烈的进攻.

2015年12月18-19日,杨学明老师《产品测试管理》深圳公开课成功举办!

2015年12月18-19日,在风景秀丽的深圳华侨城鸿波酒店,研发资深顾问.资深讲师杨学明先生<产品测试管理>公开课成功举办!来自电气.软件.电子.空调.医疗.机器人等企业的研发负责人和测试部门经理等参加了此次培训,此次培训由著名研发管理专家杨学明主讲,本次课程采用全程案例分析讲解,让学员从一开始就融入到产品测试的场景中去,根据测试中所遇问题进行针对性讲解和讨论:每一个知识点的讲解都有相应的工具和模板支撑,从而使学员所学的知识在工作中能真正使用起来,也解决了培训不能落地的难题:培训结束后许多企

hrbust 1840 (树状数组第k大) 删点使用

小橙子 Time Limit: 2000 MS Memory Limit: 32768 K Total Submit: 2(2 users) Total Accepted: 1(1 users) Rating:  Special Judge: No Description 玻璃小屋里曾经住着一个小橙子.小橙子小小的,性格很直.直性子的小橙子傻乎乎的,还很爱看火影.海贼王什么的.他收藏了很多动画片的光碟,光碟太多了,他打算整理一下. 他口中念念有词:“这个,插入第三个光碟前面,这个,插入第五个光碟

HRBUST 1818 石子合并问题--直线版

石子合并问题--直线版 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ID: 1818 64-bit integer IO format: %lld      Java class name: Main 一条直线上摆放着一行共n堆的石子.现要将石子有序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分.请编辑计算出将n堆石子合

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log. 一般可通过log_error设置 mysql> select @@log_error; +---------------------+ | @@log_error | +---------------------+ | /var/log/mysqld.log | +---------------------

HRBUST 1328 相等的最小公倍数

SOl:将原题改为枚举N的每一对因子,计算其是否互素即可. #include <cstdio> #include <cstring> #include <cmath> using namespace std; inline int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int n,T,i,j; scanf("%d",&T); while(T--) { bool

hrbust/哈理工oj 1617 回家【BFS+BFS】

回家 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 35(9 users) Total Accepted: 10(8 users) Rating: Special Judge: No Description 寒假里,大家经常会遇上同学聚会,ikki也不例外. ikki所在的城市可以看成是一个正方形的布局,分为n*n个小方格区域.ikki每次聚会的场所都在城市的西北角,即方格 (1,1)表示的位置,而家位于城市的东南角,即(n,n)