[BZOJ 2241][SDOI2011]打地鼠(枚举+预处理)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2241

分析:

鉴于R,C的取值很小,于是可以人为枚举R和C的大小,然后判定这个规格的锤子是否可以锤满棋盘并求出最少的次数

假设R*C的锤子可以锤满棋盘,那么便有了锤的方案:{A1,A2,……,An},易得任意交换这个锤的方案的顺序并没有影响,那么我们不妨把锤棋盘左上角的方案放在第一位(肯定有这个方案),然后把左上角的数字全部锤掉。接着就锤第一行第二列……以此类推

即:按行列顺序遍历整个棋盘,以当前格子作为锤子的左上角,把当前格子对应的数字全部锤掉,同时棋盘上对应的区域也要减掉相应值。累加答案。如果在这个过程中出现了某个格子的值<0,那么就说明当前的R和C是不可以锤满整个棋盘的。

那么如何快速的实现呢?

最容易想到的是二维bit,但复杂度高达O(n^4*logn),不够优

可以换个角度想想:看看每个格子会受它的上方和左方哪些格子的影响,很显然,当以这个格子左上方R*C区域内的格子为锤子的左上角锤的话,当前格子会受到影响,减去的值也就是这个R*C区域的值!故可以预处理出矩阵和,然后通过O(1)来查询每个R*C矩阵的值。总的复杂度O(n^4)。

时间: 2024-10-10 21:02:56

[BZOJ 2241][SDOI2011]打地鼠(枚举+预处理)的相关文章

bzoj 2241: [SDOI2011]打地鼠(暴搜+减枝)

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1098  Solved: 691 [Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方

bzoj 2241: [SDOI2011]打地鼠 暴力

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 749  Solved: 488[Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉

bzoj 2241 [SDOI2011]打地鼠

Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠.你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可以击打一片区域.如果我们把地面看做M*N的方阵,其每个元素都代表一个地鼠洞,那么锤子可以覆盖R*C区域内的所有地鼠洞.但是改装后的

BZOJ 2241 SDOI2011 打地鼠 线性筛+二阶差分

首先声明:此题不满足二分条件,一切写二分的题解均为误解 请注意辨明! 题目大意:给定一个m*n的洞穴矩阵,每个洞穴里面有若干地鼠,我们需要选定一个r*c的锤子进行击打,每次击打必须保证r*c的范围内所有洞穴均有地鼠,且每次击打只会打掉每个洞穴恰好一只地鼠,求最小击打次数 m,n<=100 考虑一个1*8的洞穴,当我们把锤子设作1*4时可以完成击打,而1*3不能 故不满足单调性,二分不正确 但是一个性质是确定的:假设我们选定一个3*4的锤子可以完成击打,那么我们选定一个3*2的锤子也一定能完成击打

【枚举】【SDOI 2011】【bzoj 2241】打地鼠

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 877 Solved: 557 Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠.你认为这锤子太没用了,所以你改装了锤子,

BZOJ-2241: [SDOI2011]打地鼠 (模拟+枚举)

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1434  Solved: 909[Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打

SDOI2011打地鼠

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 654  Solved: 431[Submit][Status] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠.你认为

【bzoj2241】[SDOI2011]打地鼠  暴力+乱搞

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1069 Solved: 679 [Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打

BZOJ 2243: [SDOI2011]染色 树链剖分

2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1886  Solved: 752[Submit][Status] Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”.“222”和“1”. 请你写一个程序依次完成这m个操作. In