POJ 2430 Lazy Cows

防火墙断网后Adobe软件还弹窗“THIS APP HAS BEEN DISABLED”?原来是科学上网导致的问题!用这个简单方法一键解决! 很多小伙伴在使用上网工具的时候时,突然遇到Adobe弹出“THIS APP HAS BEEN DISABLED”的烦人提示,这个非正版弹窗真的让人头疼!即使你之前尝试过,有时也不奏效,究其原因,原来是因为你使用了代理网络,这时Adobe的流量并不是走本地,而是走代理,导致防火墙的拦截无效。不用慌!今天我来教大家如何通过上网工具,轻松禁用Adobe验证的联网流量,彻底解决这个问题! 阅读详情

Lazy Cows
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 1897 Accepted: 718

Description

Farmer John regrets having applied high-grade fertilizer to his pastures since the grass now grows so quickly that his cows no longer need to move around when they graze. As a result, the cows have grown quite large and lazy... and winter is approaching. 

Farmer John wants to build a set of barns to provide shelter for his immobile cows and believes that he needs to build his barns around the cows based on their current locations since they won't walk to a barn, no matter how close or comfortable. 

The cows' grazing pasture is represented by a 2 x B (1 <= B <= 15,000,000) array of cells, some of which contain a cow and some of which are empty. N (1 <= N <= 1000) cows occupy the cells in this pasture: 
-------------------------------------------------------

|     | cow |     |     |     | cow | cow | cow | cow |

-------------------------------------------------------

|     | cow | cow | cow |     |     |     |     |     |

-------------------------------------------------------

Ever the frugal agrarian, Farmer John would like to build a set of just K (1 <= K <= N) rectangular barns (oriented with walls parallel to the pasture's edges) whose total area covers the minimum possible number of cells. Each barn covers a rectangular group of cells in their entirety, and no two barns may overlap. Of course, the barns must cover all of the cells containing cows. 

By way of example, in the picture above if K=2 then the optimal solution contains a 2x3 barn and a 1x4 barn and covers a total of 10 units of area.

Input

* Line 1: Three space-separated integers, N, K, and B. 

* Lines 2..N+1: Two space-separated integers in the range (1,1) to (2,B) giving the coordinates of the cell containing each cow. No cell contains more than one cow.

Output

* Line 1: The minimum area required by the K barns in order to cover all of the cows.

Sample Input

8 2 9
1 2
1 6
1 7
1 8
1 9
2 2
2 3
2 4

Sample Output

10

Source


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;

struct LCow{
	int x, y;
}cow[1010];

int f[1010][1010][4];
int N, K, M;

int cmp(LCow a, LCow b){
	return a.x < b.x;
}

int min4(int a, int b, int c, int d){
	if (a > b) a = b;
	if (a > c) a = c;
	if (a > d) a = d;
	return a;
}

int main(){
	int i, j, k, t;
	while(scanf("%d%d%d", &N, &K, &M) != EOF){
		for (i = 1; i <= N; i++)
			scanf("%d%d", &cow[i].y, &cow[i].x);
		sort(cow + 1, cow + 1 + N, cmp);
		memset(f, 0x0f, sizeof(f));
		cow[0].x = 0;
		if (2 <= N && cow[1].x == cow[2].x){
			f[1][1][0] = f[2][1][0] = 2;
			f[1][2][3] = f[2][2][3] = 2;
		}else{
			f[1][1][0] = f[1][2][3] = 2;
			f[1][1][cow[1].y] = 1;
		}
		for (k = 1; k <= K; k++){
			for (i = 1; i <= N; i++){
				if (k - 2 < 0) j = 0x0f0f0f0f;
				else{
					j = min4(
						f[i - 1][k - 2][0], 
						f[i - 1][k - 2][1], 
						f[i - 1][k - 2][2], 
						f[i - 1][k - 2][3]);
				}
				t = min4(
					f[i - 1][k - 1][3], 
					f[i - 1][k - 1][0], 
					f[i - 1][k - 1][1],
					f[i - 1][k - 1][2]);
				f[i][k][0] = min(f[i][k][0], min(
					f[i - 1][k][0] + 2 * (cow[i].x - cow[i - 1].x), 
					t + 2));
				f[i][k][3] = min(f[i][k][3], min4(
					f[i - 1][k][3] + 2 * (cow[i].x - cow[i - 1].x), 
					f[i - 1][k - 1][1] + cow[i].x - cow[i - 1].x + 1, 
					f[i - 1][k - 1][2] + cow[i].x - cow[i - 1].x + 1, 
					j + 2));
				if (i + 1 <= N && cow[i].x == cow[i + 1].x){
					f[i + 1][k][0] = f[i][k][0];
					f[i + 1][k][3] = f[i][k][3];
					i++;
				}else if (cow[i].y == 1){
					f[i][k][1] = min(f[i][k][1], min4(
						f[i - 1][k][1] + cow[i].x - cow[i - 1].x, 
						t + 1,
						f[i - 1][k][3] + cow[i].x - cow[i - 1].x,
						0x0f0f0f0f));
				}else{
					f[i][k][2] = min(f[i][k][2], min4(
					f[i - 1][k][2] + cow[i].x - cow[i - 1].x, 
					t + 1, 
					f[i - 1][k][3] + cow[i].x - cow[i - 1].x, 
					0x0f0f0f0f));
				}
//				printf("f[%d][%d] = %d, %d, %d, %d\n", k, i, f[i][k][1], f[i][k][2], f[i][k][0], f[i][k][3]);
			}
		}
		t = min4(f[N][K][0], f[N][K][1], f[N][K][2], f[N][K][3]);
		printf("%d\n", t);
	}
	return 0;
}
/*
f[i][j][1] 前i只牛,放到j个barn中, j是上行
f[i][j][2] 前i只牛,放到j个barn中, j是下行
f[i][j][3] 前i只牛,放到j个barn中, j是双行
f[i][j][4] 前i只牛,放到j个barn中,j是单行但双barn

如果i和i+1在同一列
	f[i+1][j][1] = f[i+1][j][2] = INF;
	f[i+1][j][0] = min(
		f[i-1][j][0]+2*(cow[i].x-cow[i-1].x), 
		f[i-1][j-1][0..3]+2)
	f[i+1][j][3] = min(
		f[i-1][j][3]+2*(cow[i].x-cow[i-1].x), 
		f[i-1][j-1][1]+cow[i].x-cow[i-1].x +1, 
		f[i-1][j-1][2]+cow[i].x-cow[i-1].x +1,
		f[i-1][j-2][0..3]+2)
如果i在上行
    f[i][j][1] = min(
		f[i-1][j][1]+cow[i].x-cow[i-1].x, 
		f[i-1][j][3]+cow[i].x-cow[i-1].x +1,
		f[i-1][j-1][0..3]+1)
	f[i][j][2] = INF
	f[i][j][0] 同上
	f[i][j][3] 同上
如果i在下行
    f[i][j][2] = min(
		f[i-1][j][2]+cow[i].x-cow[i-1].x, 
		f[i-1][j][3]+cow[i].x-cow[i-1].x +1,
		f[i-1][j-1][0..3]+1)
	f[i][j][1] = INF
	其他同上
	
初值赋的很暴力,先把所有设为无效
再枚举几种可能出现的初值做基础,没想到的反正也无效的...
其实状态1,2可以何为一个
http://hi.baidu.com/creamxcream/blog/item/d1288a8e93f5cdf7513d9237.html
这个跑的很快32MS
*/


华为交换机实战:如何用ACL+流分类精准限制特定IP的网速(附完整命令) 本文详细介绍了华为交换机如何通过ACL+流分类技术实现精准IP限速,包括ACL规则配置、流分类关联、流行为定义及流策略应用等完整步骤。文章提供了实战命令和配置验证方法,帮助网络管理员有效管理带宽资源,解决特定IP占用过多带宽的问题。 阅读详情

相关推荐

别再只用CANape测数据了!手把手教你用ASAP2 Studio编辑A2L文件(附MAP文件更新避坑指南)

本文深入探讨ASAP2 Studio在ECU开发中的高阶应用,特别是如何利用其编辑A2L文件并同步更新MAP文件,提升测量标定效率。文章详细解析了ASAP2 Studio的双向同步能力、MAP文件更新全流程及变量管理技巧,帮助工程师避免常见错误,优化工作流程。

weixin_26833939的博客 507

BZOJ 1746: [Usaco2005 open]Lazy Cows

1746 一道思维复杂度不高...代码细节很多的dp题 这题突破口显然就在于只有2行 那么我们考虑第i列的状态 共有五种: 1. 没有纸片覆盖 2.上边被覆盖 3.下边被覆盖 4.被同一纸片覆盖 5.被不同的纸片覆盖 离散后,显然不存在第一种状态 那么我们用dp[i][t]表示第i个有宝藏的列  状态为t的最小面积 于是就可以转移了 实现细节见代码……

来自Fop_zz的辣鸡题解或教程 525

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

hunteritself的博客 2万+

POJ 2430 Lazy Cows 状压DP

状压DP

NeighThorn的博客 454

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

自动分割和测量混凝土钢筋的思路与原理

该文提出了一种基于PCL库的点云处理系统,用于自动测量混凝土结构中钢筋的几何参数。系统采用多阶段处理流程:首先通过RANSAC算法提取地面并旋转对齐;接着使用区域生长算法分割混凝土结构;然后采用RANSAC线检测识别钢筋,按方向分类;最后通过圆柱拟合和坐标差计算获得钢筋间距、直径和高度差等参数。文章详细介绍了各模块的核心算法,包括地面检测、坐标变换、钢筋识别和几何计算等关键步骤,并分析了主要参数的敏感性。系统通过分层处理和坐标变换确保测量精度,为混凝土结构的无损检测提供了自动化解决方案。

weixin_45196569的博客 679

POJ 2430 Lazy Cows 笔记

N头牛,建 K 个矩形牛舍,2*B 的牧场,给出每头牛的坐标。求牛舍的最小面积。

woniupengpeng的专栏 332

如何设计提示词来减少 AI 的幻觉问题?

如何设计提示词来减少 AI 的幻觉问题?

我哎GIS博客 2468

poj 2430 Lazy Cows 状压dp

这个题目还是比较容易想到用状态dp来解的,但是状态的转移比较麻烦,并且加上有离散化,比较容易出错。 dp[i][j][k]表示覆盖前i列,用了j个矩形,当前覆盖状态为k的最优解。 k==1:覆盖1号格子 k==2:覆盖2号格子 k==3:覆盖1,2号格子,并且为同一个矩形 k==4:覆盖1,2号格子,并且为不同矩形 那么转移的时候就需要考虑,新建矩形,或者直接把当前矩形边长延伸。转移种

yrleep的专栏 1450

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助!

杨秀璋的专栏 4121

数控系统(CNC)系列:Hurco VMX42SR_(3).控制系统硬件组成部分

控制箱是CNC系统的核心部分,负责处理所有的控制指令和数据。它通常包含主控板、电源模块、接口板等关键组件。伺服驱动器是CNC系统中的关键组件,负责将主控板发出的控制信号转换为电机所需的驱动电流。它通过闭环控制确保电机的精确运动。电机是CNC系统中的执行机构,负责实现主控板发出的运动指令。常见的电机类型包括步进电机和伺服电机。传感器是CNC系统中的重要组件,用于检测和反馈机床的运行状态。常见的传感器类型包括位置传感器、速度传感器、温度传感器等。电源供应系统为CNC系统的所有组件提供电力。主电源。

2401_87715305的博客 1279

poj2430 状态压缩DP

很早之前就看了这题,觉得写起来比较麻烦,放了一段时间今天还是忍不住又看了一遍,调了一下午感觉不会再AC了,吃了晚饭回来听歌小情歌,改了初始化然后就过了。。。过了,有点受宠若惊。 ACcode: #include #include #include using namespace std; const int NS=1100; const int INF=1<<30; struct n

丿Smilē 丶晨星灬 786

大数据平台符合信创(CDH国产化代替)详细方案(企业内部不外传方案)

信创旨在实现信息技术产业的自主可控,减少对外部技术的依赖,从而提升国家信息安全和经济发展的自主性。在此背景下,中国对信创提出了更高的要求,以期在激烈的市场竞争中占据有利地位。信创不仅关乎技术层面的创新,更涉及到产业链条的整合与优化。它要求从基础硬件、操作系统、数据库、中间件等各个层面实现国产替代,构建完整的信息技术生态体系。尤其是在做国企项目时,就有硬性要求使用符合信创(国产代替)。在信创背景下,符合要求的产品必须具备自主可控、安全可靠以及性能卓越等核心特点。

大模型大数据攻城狮的专栏 3510

poj 2430 Lazy Cows

poj 2430 Lazy Cows 分享个讲的很好的博客:http://blog.youkuaiyun.com/wings_of_liberty/article/details/7521178

态度决定高度 565

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Poj2430:Lazy Cows 解题思路&代码

这道题的大意是有一个2*B(1=<B<=15000000)的大矩阵,该矩阵中有N(N<=1000)头奶牛(即大矩阵中有指定的N个点)。现在想用K个小矩阵去覆盖这全部N个点,求在保证N个点被完全覆盖的情况下K个小矩阵的面积的最小值。 B很大,而N很小,离散化的处理方式是很自然的。然后用动规来做。具体的思路都写在代码注释里了。这里就直接贴代码了。

lygpkulxy的博客 471

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ2430 Lazy Cows【状压DP+离散化】

POJ - 2430传送门   题意:有n头牛在2*b的牧场上,只可以修建k(k的最小面积。 分析:用dp[i][j][l]表示前i列的牛都铺满,用去啦j个帐篷,状态为l,的最小面积。 l==0,表示没有铺 l==1,表示铺啦第一格 l==2,表示铺啦第二格 l==3,表示铺啦一二格,且不在一个矩形里。 l==4,表示铺啦一二格,且在一个矩形里。 ACcode

tystrwor的博客 325

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

POJ-2430:Lazy Cows

POJ-2430:Lazy CowsFarmer John regrets having applied high-grade fertilizer to his pastures since the grass now grows so quickly that his cows no longer need to move around when they graze. As a result, the cows have grown quite large and lazy... and winter

Mitsuha_的博客 648

poj-2430 Lazy Cows ****

1 //参见 http://hi.baidu.com/billdu/blog/item/6315841769e6905ff3de325e.html (有图有真相...) 2 //... 3 // 4 //dp[i][j][k]表示到达第i列,已经建设好了j个围栏,最后一列状态是k的情况下框住的最小面积 5 // 6 //另外, 我这个代码是 顺推(按黑书的分类),也就是基于当前状...

weixin_34185560的博客 162

poj2430 2010.7.31

Lazy Cows Time Limit: 1000MS  Memory Limit: 65536K Total Submissions: 1300  Accepted: 467   Description   Farmer John regrets having appliedhigh-grade fertilizer to his pastures since the gras

Batman_的博客 427

NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论-&gt;模线性方程有无解的判断)+(图论-&gt;DFS)  1090 Chain -&gt;格雷码和二进制码的转换  2182 Lost Cows -&gt;线段树/  2426 Remainder BFS  1872 A Dicey Problem BFS  1324 Holedox Moving ...

小萨摩的博客 2011

POJ 动态规划(dp)题目汇总

1037 A decorative fence1042 Gone Fishing1062 昂贵的聘礼1074 Parallel Expectations1093 Formatting Text1112 Team Them Up!1143 Number Game1160 Post Office1178 Camelot1179 Polygon1180 Batch Scheduling1187...

weixin_30256901的博客 136

状态压缩DP基础题解题报告

POJ 2411 铺砖块最基本的题。设DP[i][state]为贴到第i行,前一行的状态为state时的方法数,枚举两层的状态来转移,先判断转移是否合法(即保证上一层是贴满的)。

= = 1682

POJ 2430 状压DP

题意: 思路: 先预处理出所有格子的statement statement=1–>只有上边的格子被覆盖 statement=2–>只有下边的格子被覆盖 statement=3–>上下都被覆盖 f[i][j][k]表示状态为i时,前j个地方的奶牛,盖k座房子 最少盖住的格子 i有四种情况 i=1代表只有上边的格子被覆盖 i=2代...

weixin_34090562的博客 163

poj2430

【题意】 有n头牛在2*b的牧场上,只可以修建k(k的最小面积 【输入】 第一行n、k、b 【输出】 最小面积 状压dp 离散一下,用0~3表示这一列的状态 然后dp,f[i][j][k]表示第i列用了j个牛棚,状态为k的最小面积 k分为0~4,表示 0:什么也没有 1:上面一格被覆盖 2:下面一个被覆盖 3:两格被同一个矩形覆盖 4:两格被不同的矩形覆盖

weixinding的专栏 1079

poj2234 2010.3.5

poj2234 2010.3.5 Poj 2234 MatchesGame   【关键字】 数学博弈 【摘要】 有若干堆火柴,两个人轮流去取,每次调一堆取若干支,最后一个去完火柴的人获胜。 【正文】 1、题目描述 Matches Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3536  Acce

Batman_的博客 448

POJ 2430(状态设计类)

本题的二维状态是比较好想的吧, 直接定义d[ i ][ j ] 为当前位置为i还有j个栅栏可用时的最小代价。 首先按位置排序。 状态转移时需要从当前出发  若  k>=1 d[ i ][ j ]可以开一个宽为1栅栏 最多将从i开始到最后一个和 i在一排j放到一个栅栏中,或者开一个宽度为2的栅栏,可延伸到最后 若  k>=2 d[ i ][ j ]可同时 开两个栅栏。 但该算法时间达

playwfun的专栏 541
上一篇: POJ 1742 Coins
下一篇: POJ 1269 Intersecting Lines
cmonkey
博客等级 码龄17年 50粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值