GCJ

#include <bits/stdc++.h>

using namespace std;
#define maxn 105
#define INF 0x7ffffff

int dp[maxn][maxn];
int Q[maxn];
int p, q;

int main()
{
    while(~scanf("%d%d", &p, &q))
    {
        for(int i=1; i<=q; i++)
            cin>>Q[i];
        Q[0] = 0;
        Q[q+1] = p+1;
        for(int i=0; i<=q; i++)
            dp[i][i+1] = 0;

        for(int l=2; l<=q+1; l++)//根据j-i递增的顺序来递推
            for(int i=0; i+l<=q+1; i++)
        {
            int j = i + l;
            dp[i][j] = INF;
            for(int k=i+1; k<j; k++)
                dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j]+Q[j]-Q[i]-2);
        }
        cout<<dp[0][q+1]<<endl;
    }
    return 0;
}

时间: 2024-10-07 05:35:41

GCJ的相关文章

使用GCJ编译Java程序供Matlab调用Java对象方法实践

1 引言 以Matlab作为开发平台,进行数值计算,具有直接.高效的特点. 然而,在面向对象程序设计方面,现有的Matlab支持特性在开发和运行效率上并不高. 将Java语言面向对象及其平台特性引入Matlab,能够拓展其模型表达能力与手段.此外,Java本身的特性,也决定了其具有良好的开发性能. 与C语言编写mex动态链接库的开发目的不同(mex主要以速度见长),基于Java的matlab扩展能为matlab带来更大的灵活性.甚至于,Java平台下更多的类库,能够丰富matlab平台功能. 2

GCJ Qualification Round 2016 D题

这题就是找规律.小数据还是挺容易想的.大数据得再深入分析一下. 题意挺绕的. 其实就是字符串转换.字符串只能有两种字母,L或G.给定K和C,就能通过规则生成目标字符串. 那么,如果知道了K和C,以及目标字符串,那么是能够倒推出原字符串的. 现在问题是,目标字符串也不全给你看,限定你最多看s个.但是呢,也不要求你完全倒推出原字符串,而是只需要知道原字符串里是不是至少有一个G字符即可. 小数据极其简单,为什么呢,因为S=K,而看S个目标串字符完全可以倒推出原字符串啊. 因为原串的第1个字符,会在目标

GCJ 2015 Round 1C B. Typewriter Monkey

用最多需要的香蕉数减去目标串出现的概率就行啦.... 如何求出现的概率? 每个字符出现的概率乘起来--再乘以目标串能摆的位置个数-- Problem Your publishing house has decided to use monkeys randomly typing at keyboards to write great works of literature. You are the supervisor for one monkey with a keyboard contain

GCJ 2015 Round 1C C. Less Money, More Problems

如果现在能够组成1...x 的面值,加上一种 x+1 面值的纸币,就能组成 1 ... x + C * (x + 1)的面值. 因为如果面值是 k < (C+1)*(x + 1),我们可以用 k / (x + 1) 张 x+1 面值的纸币,并用原来的纸币组成 k % (x + 1),就得到了 k . 每次添加不能被表示的最小面值的纸币是最优的. Problem Up until today, the nation you live in has used D different positive

GCJ Qualification Round 2016 C题

题意是给定了一个叫“jamcoin”的定义,让你生成足够数量满足条件的jamcoin. jamcoin其实就可以理解成一个二进制整数,题目要求的要么长度为16位,要么为32位,一头一尾两个位必须是1,然后就是这个数字串在各种进制下表示的数都不能是质数. 我的做法很简单,因为大致口算了一下,满足条件的jamcoin应该挺多的,随便找50个或500个就好了.就从最小的串开始检查,找到一个就输出一个,直到找到要求的个数为止. 检查的方法也很简单,就是把这个串表示的数用素数表去除,能找到整数这个数的,就

GCJ Round 1C 2016 题解

ASenate Evacuation B Slides C Fashion Police A.Senate Evacuation #include<bits/stdc++.h> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define For

GCJ 2015R2(Bilingual-最小割)

Problem C. Bilingual Problem Elliot's parents speak French and English to him at home. He has heard a lot of words, but it isn't always clear to him which word comes from which language! Elliot knows one sentence that he's sure is English and one sen

GCJ 2008 Round 1A A 排序贪心

题意:给你两个维数相同的向量,它们之中的元素可以任意交换位置,求它们内积的最大值. 思路:乍一看此题摸不着什么头脑,只是凭借直觉感觉一个升序一个降序求内积即可.这样的感觉有时是对的,有时是错的,如果实现复杂的话比赛中就不该冒这个险.最好简单的证明一下. 证明:先讨论二维向量的情况对于按升序排列的(x1,x2)按升序排列的(y1,y2),显然恰与思路想法相反,其内积减去思路想法的内积有: x1y1+x2y2?x1y2?x2y1=x1(y1?y2)+x2(y2?y1) 显然y1?y2≤0又x1?x2

GCJ 2015R1B(Noisy Neighbors-分类讨论)

Problem You are a landlord who owns a building that is an R x C grid of apartments; each apartment is a unit square cell with four walls. You want to rent out N of these apartments to tenants, with exactly one tenant per apartment, and leave the othe