断环然后裸DP就好了。。。

$f[i][j][k]$表示1号时间段没有被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值

$g[i][j][k]$表示1号时间段被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值,则$g$必须要选最后一个时间段

转移的时候直接枚举最后一个时间段又没有被算进答案就好了。。。方程看程序好了。。

 /**************************************************************
Problem: 1737
User: rausen
Language: C++
Result: Accepted
Time:92 ms
Memory:948 kb
****************************************************************/ #include <cstdio>
#include <algorithm> using namespace std;
const int N = 4e3 + ;
const int inf = 1e9; inline int read(); int n, m;
int v[N];
int f[][N][], g[][N][]; int main() {
int i, j, now, last;
n = read(), m = read();
for (i = ; i <= n; ++i) v[i] = read();
for (i = ; i <= m; ++i)
for (j = ; j < ; ++j) f[][i][j] = g[][i][j] = -inf;
f[][][] = f[][][] = g[][][] = ;
for (i = ; i <= n; ++i) {
now = i & , last = !now;
for (j = ; j <= m; ++j) {
f[now][j][] = max(f[last][j][], f[last][j][]);
g[now][j][] = max(g[last][j][], g[last][j][]);
if (j) {
f[now][j][] = max(f[last][j - ][], f[last][j - ][] + v[i]);
g[now][j][] = max(g[last][j - ][], g[last][j - ][] + v[i]);
} else
f[now][j][] = g[now][j][] = -inf;
}
}
printf("%d\n", max(f[n & ][m][], max(f[n & ][m][], g[n & ][m][] + v[])));
return ;
} inline int read() {
static int x;
static char ch;
x = , ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
}

BZOJ1737 [Usaco2005 jan]Naptime 午睡时间的更多相关文章

  1. 【bzoj1737】[Usaco2005 jan]Naptime 午睡时间 dp

    题目描述 Goneril is a very sleep-deprived cow. Her day is partitioned into N (3 <= N <= 3,830) equ ...

  2. BZOJ1679: [Usaco2005 Jan]Moo Volume 牛的呼声

    1679: [Usaco2005 Jan]Moo Volume 牛的呼声 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 723  Solved: 346[ ...

  3. BZOJ1677: [Usaco2005 Jan]Sumsets 求和

    1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 570  Solved: 310[Submi ...

  4. BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )

    完全背包.. --------------------------------------------------------------------------------------- #incl ...

  5. BZOJ 1679: [Usaco2005 Jan]Moo Volume 牛的呼声( )

    一开始直接 O( n² ) 暴力..结果就 A 了... USACO 数据是有多弱 = = 先sort , 然后自己再YY一下就能想出来...具体看code --------------------- ...

  6. BZOJ 1677: [Usaco2005 Jan]Sumsets 求和

    题目 1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 617  Solved: 344[Su ...

  7. 1677: [Usaco2005 Jan]Sumsets 求和

    1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 626  Solved: 348[Submi ...

  8. bzoj 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 最小点覆盖

    链接 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 思路 这就是个上一篇的稍微麻烦版(是变脸版,其实没麻烦) 用边长为1的模板覆盖地图上的没有长草的土地,不能覆盖草地 ...

  9. 43 We were Born to Nap 我们天生需要午睡

    We were Born to Nap 我们天生需要午睡 ①American society is not nap-friendly.In fact, says David Dinged, a sle ...

随机推荐

  1. 未能加载文件或程序集xxx或它的某一个依赖项 试图加载格式不正确的程序

    解决方案:IIS——应用程序池——高级设置——启用32位应用程序 :true.

  2. CSS笔记(十四)CSS3之动画

    参考:http://www.w3school.com.cn/css3/css3_animation.asp 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 Ja ...

  3. 不要温柔地走入promise

    第一步 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  4. Android 布局简要范例

    Android的布局决定着实际的UI界面呈现情况,正是这些UI界面的组合与千变万化,才呈现出了各式各样的风格. 而这些基础的布局框架结构很重要,需要玩的很熟悉.我将以前参考的部分代码示例,所做的相关实 ...

  5. select into from 和 insert into select 的区别和用法及 SQL SELECT INTO 中Undeclared variable错误解决办法

    今天试了一下数据表中的数据备份到另一个空的数据表,然后使用了SQL SELECT INTO语句,然后提示Undeclared variable......错误,现在在这里做下总结并给出解决办法. 应用 ...

  6. mysql概要(十四)索引(补充:外键级联操作)

    [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ][ ON UPDATE { NO ACTION | CASCADE | SE ...

  7. [转载] 深入 nginx 架构

    原文: http://www.cnbeta.com/articles/402709.htm 了解 nginx 架构帮助我们学习如何开发高性能 web 服务. 为了更好地理解设计,你需要了解NGINX是 ...

  8. Codeforces723E One-Way Reform【欧拉回路】

    题意:给你n点m边的图,然后让你确定每条边的方向,使得入度=出度的点最多 . 度数为偶数的点均能满足入度 = 出度. 证明:度数为奇数的点有偶数个,奇度点两两配对连无向边,则新图存在欧拉回路,则可使新 ...

  9. poj2420A Star not a Tree?(模拟退火)

    链接 求某一点到其它点距离和最小,求这个和,这个点 为费马点. 做法:模拟退火 #include <iostream> #include<cstdio> #include< ...

  10. 一些android系统参数的获取

    //获取网络类型 2G/3G/WIFI public String getNetworkType(){ String mNetWorkType = ""; Connectivity ...