区间DP……但是细节处理比较多,代码要一些技巧……算水题吧

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <vector>
using namespace std;#define LL long long
void nextInt(int &x)
{scanf("%d", &x);
}
void nextInt(int &x, int &y)
{scanf("%d%d", &x, &y);
}const LL maxn = 500;
int n;
int p;
int a[maxn];
int f[maxn][maxn];void init()
{nextInt(n, p);for (int i = 1; i <= p; ++ i)nextInt(a[i]);a[0] = 0;a[p + 1] = n + 1;sort(a, a + 2 + p);//for (int i = 0; i <= p + 1; ++ i) cout<<a[i]<<endl;memset(f, 0, sizeof(f));for (int w = 2; w <= p + 1; ++ w)//长度for (int i = 0; w + i <= p + 1; ++ i)//开始位置{//(i, i + w)区间, 实际可用区间为[i + 1, i + w - 1]f[i][i + w] = a[w + i] - a[i] - 2;int tmp = 0x7fffffff;for (int k = i + 1; k <= i + w - 1; ++ k){tmp = min(tmp, f[i][k] +  f[k][i + w]);}f[i][i + w] += tmp;}printf("%d\n", f[0][p + 1]);
}int main()
{freopen("a.in","r",stdin);freopen("a.txt","w",stdout);LL sb;scanf("%lld", &sb);for (int i = 1; i <= sb; ++ i){printf("Case #%d: ", i);init();}return 0;
}

GCJ 2009 Bribe the Prisoners相关推荐

  1. [dp]GCJ 2009 Bribe the Prisoners

    原文 原作者 lizo_is_me 问题描述: 一个监狱里有P个并排着的牢房,从左往右一次编号为1,2,-,P.最初所有牢房里面都住着一个囚犯.现在要释放一些囚犯.如果释放某个牢房里的囚犯,必须要贿赂 ...

  2. Bribe the Prisoners 菜鸟的记录

    Bribe the Prisoners 题目大意 有一个监狱里有一排牢房1-P,其中住着一些囚犯.现在要释放一些囚犯Q, 当释放一个囚犯的时候,要给两边所有的囚犯每人一枚金币, 直到遇到空牢房或者尽头 ...

  3. Bribe the Prisoners SPOJ - GCJ1C09C

    滴答滴答---题目链接 贿赂囚犯 Bribe the prisoners ( 动态规划+剪枝) Problem In a kingdom there are prison cells (numbere ...

  4. [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]

    Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...

  5. GCJ 2009 Round1C C Bribe the Prisoners

    /*这题终于对了,真是感激涕零,痛苦流涕,这个故事告诉我们:前人的经验果然是有道理的,INF就不要乱设置了,就设0x3f3f3f3f就好当然,还有一个问题就是,不要随便设置long long型,因为每 ...

  6. Bribe the Prisoners——GCJ 2009 Round1C C(区间dp)

    题目:P个并排的牢房(1,2,3....P).每个牢房一个囚犯.现在要释放其中的Q个囚犯.每释放一个囚犯,就得向左给每一个相邻囚犯一枚金币,直到遇到空牢房.向右也是如此.问以什么样的顺序释放所花费的金 ...

  7. Bribe the Prisoners(GCJ 2009 Round 1C C)(dp)

    题意: 一个监狱里有P个并排着的牢房.从左至右依次编号为1,2,...,P.最初所有的牢房里都住着一个囚犯.相邻的两个牢房之间可以互通信息. 现在要释放一些囚犯.如果释放某个牢房里的囚犯,其相邻的牢房 ...

  8. 刷题: bribe the prisoners(2009 Round 1C C)

    题目描述 In a kingdom there are prison cells (numbered 1 to P) built to form a straight line segment. Ce ...

  9. 挑战2.7.3 Round 1C 2009 C. Bribe the Prisoners 区间dp

    题目链接: https://code.google.com/codejam/contest/189252/dashboard#s=p2 题意: 题解: 区间dp dp[i][j] 表示释放a[i]~a ...

最新文章

  1. 免费直播:1小时带你体验Python车牌识别实战
  2. python数据挖掘主要特点_【Python数据挖掘】第六篇--特征工程
  3. Wireshark运算符!=无法正常工作
  4. php xml写入数据库中,PHP读取xml并写入数据库示例
  5. 号外号外!自动化测试工具AutoRunner V4.2 新版本升级预告!
  6. 录制视频显示的视频角度和拍摄角度保持一致
  7. JAVA入门: Annotation
  8. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 C序列变换...
  9. Unix——fprintf与stderr、stdout的使用
  10. S2-MLPV2:目前最强的视觉MLP架构,空降榜一,达到83.6% Top-1准确率
  11. java stringbuilder清空_Java中StringBuilder的清空方法比较
  12. Nonebot部署机器人常见问题
  13. 个人笔记1:display与visibility用法
  14. 测试的目的、时期、分类
  15. 计算机软件丛书,开天辟地学电脑丛书——办公软件篇
  16. DaZeng:雪碧图(精灵图)的使用
  17. 阿里云MaxComputer SQL学习之内置函数
  18. 正确使用 CDN 让你更好规避安全风险
  19. 手机智能汽车钥匙来了, 汽车远程启动在手机上就能完成
  20. dingding告警

热门文章

  1. 直播机--绿幕抠图SDK
  2. element标签弹窗_Tag 标签_组件_Element UI_参考手册_非常教程
  3. 一级建造师2月底公布成绩?官方回复:假的!
  4. WebStorm下载安装
  5. [转载]Radmin的命令行参数
  6. 一串数字,从第一个开始走,第一步可以走1到length/2步长,后面每一步步长就是对应的数值,如果能走到最后一个数,就输出走的步数,否则输出-1
  7. 使用VMware Workstation安装Windows10虚拟机(超详细,每一步都有)
  8. 公司给期权了,要不要?
  9. Unreal Open Day游记
  10. json串与各种类型对象互转