Description

[misolovke]
给定一个 N*N 的网格.
每个格子里至少会有一个捕鼠器, 并且已知每个格子里的捕鼠器个数.现在需要在 每一行 中选取恰好 K 个连续的格子, 把里面的捕鼠器全部拿走, 并且需要满足

老鼠不能 从网格最左边到网格最右边
 也不能 从网格最上面到网格最下面
 老鼠行走的方向是 上下左右 4个方向
 老鼠只能经过没有捕鼠器的格子
求拿走捕鼠器个数的最大值

Input

第1行: 2 个整数 N, K (2 <= N <= 250, 1 <= K <= N/2)
    第2..N+1行: 每行 N 个整数. 表示网格中每个格子里的捕鼠器个数.

Output

第1行: 仅一个整数, 表示拿走捕鼠器个数的最大值

dp,f[i][j][S]表示考虑了前i行,第i行决策为[j-k+1,j],当前决策和左,右,上边界是否联通,捕鼠器的最大个数,转移的时候去掉不合法状态(同时与左右联通或最后一行与上边界联通)

#include<cstdio>
int n,k,v[];
int f[][][];
int _(){
int x=,c=getchar();
while(c<)c=getchar();
while(c>)x=x*+c-,c=getchar();
return x;
}
void maxs(int&a,int b){if(a<b)a=b;}
bool chk(int x){return (x&)!=;}
int main(){
n=_();k=_();
for(int i=;i<=n;++i){
for(int j=;j<=n;++j)v[j]=_()+v[j-];
for(int j=k;j<=n;++j){
int s=v[j]-v[j-k];
for(int d=;d<;++d)f[i][j][d]=-0x7fffffff;
int w=;
if(j==k)w|=;
if(j==n)w|=;
if(i==)w|=;
for(int a=k;a<=n;++a){
if(j>a-k&&j<a+k){
for(int d=;d<;++d)if(chk(d|w))maxs(f[i][j][d|w],f[i-][a][d]+s);
}else{
if(chk(w))for(int d=;d<;++d)maxs(f[i][j][w],f[i-][a][d]+s);
}
}
}
}
int ans=-0x7fffffff;
for(int i=k;i<=n;++i)for(int d=;d<;++d)maxs(ans,f[n][i][d]);
printf("%d",ans);
return ;
}

bzoj3087: Coci2009 misolovke的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. [COCI2009]Dvapravca 计算几何

    [COCI2009]Dvapravca LG传送门 先给出考场上的\(O(n^3)\)乱搞方法:枚举一个蓝点和一个红点,找出过着两个点的直线,再枚举蓝点找出这条直线最多能往两边扩展多宽,最后枚举红点计 ...

  3. BZOJ 3090: Coci2009 [podjela]

    3090: Coci2009 [podjela] Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 23  Solved: 17[Submit][Statu ...

  4. BZOJ 3090: Coci2009 [podjela] (树形背包)

    3090: Coci2009 [podjela] Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 31[Submit][Statu ...

  5. bzoj3086: Coci2009 dvapravca

    Description 给定平面上的 N 个点, 其中有一些是红的, 其他是蓝的.现在让你找两条平行的直线, 使得在保证    不存在一个蓝色的点 被夹在两条平行线之间,不经过任何一个点, 不管是蓝色 ...

  6. luogu P4385 [COCI2009]Dvapravca

    传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况 ...

  7. P4385 [COCI2009]Dvapravca

    首先特判掉蓝点数量\(<2\)的情况.没有蓝点答案就是\(n\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...

  8. BZOJ2223:[Coci2009]PATULJCI——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2223 Description Sample Input 10 3 1 2 1 2 1 2 3 2 3 ...

  9. bzoj3090: Coci2009 [podjela]

    这个范围明显树包的 然而值并不滋磁 想了一会发现可以带一维当前子树用了多少边,搞定当前向上还能送多少 然后发现会有搞不定的情况,要向上传负数 每次都要重新初始化,负数强制要要 #include< ...

随机推荐

  1. sentinel搭建redis集群经验总结

    一.protected-mode默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和se ...

  2. SPSS数据分析—卡方检验

    t检验和方差分析主要针对于连续变量,秩和检验主要针对有序分类变量,而卡方检验主要针对无序分类变量(也可以用于连续变量,但需要做离散化处理),用途同样非常广泛,基于卡方统计量也衍生出来很多统计方法. 卡 ...

  3. C#日常知识

    常量: 定义常量:const; 条件运算符: 表达式1?表达式2:表达式3[如果正确则执行表达式2,不正确执行表达式3] (例如:int result; result = 5>4?100:200 ...

  4. python的类和对象——类成员番外篇

    学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...

  5. JavaWeb基础: ServletConfig

    基本概念 ServletConfig用于配置Servlet的参数:在Servlet的配置文件中,可以使用一个或者是多个<init-param> 标签为Servlet配置一些初始化参数.当有 ...

  6. UVA 1349(二分图匹配)

    1349 - Optimal Bus Route Design Time limit: 3.000 seconds A big city wants to improve its bus transp ...

  7. 配置rc.local开机自启动文件的疑问

    有时我们自己在/etc/rc.d/rc.local里面增加的随机器启动的脚本和指令总是不能自动加载和启动,,机器启动后手动执行脚本又能成功,经常被搞得晕头转向的.最近我经过1天的辛苦测试和查找资料,终 ...

  8. 在 Ubuntu 14.04 中配置 PXE 服务器

    PXE(预启动执行环境Preboot Execution Environment)服务器允许用户从网络中启动 Linux 发行版并且可以不需要 Linux ISO 镜像就能同时在数百台 PC 中安装. ...

  9. 【C语言学习】-08 指针

    指针

  10. IOC-AOP

    IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如 ...