Prelude

为什么洛谷上的题解都是剪枝做的啊!就没有人写复杂度靠谱的算法吗!

传送到洛谷:( ̄、 ̄)

传送到BZOJ:( ´・・)ノ(._.`)

本篇博客地址:o(><;)oo


Solution

首先\(O(n^6)\),或者是\(O(n^4 \log^2 n)\)的模拟非常好想,枚举锤子的长宽,然后从左上角开始挨个砸就可以了。

枚举的复杂度是\(O(n^2)\)的,模拟一次的复杂度是\(O(n^4)\)的,也可以用BIT做到一次模拟\(O(n^2 \log^2 n)\)。

仔细想了想发现似乎没法合理枚举,那就只能发掘性质了。

直觉告诉我似乎是行列无关的。

具体来说,我们首先固定锤子的长为1,然后枚举锤子的宽,求出当长为1的时候最大可行的宽,叫做\(c\)。

然后再固定锤子的宽为1,枚举锤子的长,求出当宽为1的时候最大可行的长,叫做\(r\)。

上面两步可以用\(O(n^4)\)的暴力模拟来做,或者是用BIT做到\(O(n^3 \log n)\)。

那么这个\(r\)和\(c\)就是最终答案。

试着证明了一下,确实是这样的,具体证明我没有仔细想,大概感觉是从“每个格子被敲打的次数是行列无关的”这条入手?

然后就A掉了。

因为我比较懒,所以写的是\(O(n^4)\)的方法,毕竟这个模拟常数小嘛,\(O(n^4)\)过100肯定没问题啦。


Code

#include <cstring>
#include <algorithm>
#include <cstdio> using namespace std;
const int MAXN = 110;
int _w; int n, m, a[MAXN][MAXN], tot;
int r, c, b[MAXN][MAXN];
int t[MAXN][MAXN]; bool check( int x ) {
for( int i = 1; i <= r; ++i )
for( int j = 1; j <= c; ++j )
t[i][j] = b[i][j];
for( int i = 1; i <= r; ++i )
for( int j = 1; j <= c-x+1; ++j )
for( int k = j+x-1; k >= j; --k )
t[i][k] -= t[i][j];
for( int i = 1; i <= r; ++i )
for( int j = 1; j <= c; ++j )
if( t[i][j] ) return false;
return true;
} void solve() {
r = n, c = m;
for( int i = 1; i <= r; ++i )
for( int j = 1; j <= c; ++j )
b[i][j] = a[i][j];
for( int x = c; x >= 1; --x )
if( check(x) ) {
tot /= x;
break;
}
r = m, c = n;
for( int i = 1; i <= r; ++i )
for( int j = 1; j <= c; ++j )
b[i][j] = a[j][i];
for( int y = c; y >= 1; --y )
if( check(y) ) {
tot /= y;
break;
}
printf( "%d\n", tot );
} int main() {
_w = scanf( "%d%d", &n, &m );
tot = 0;
for( int i = 1; i <= n; ++i )
for( int j = 1; j <= m; ++j ) {
_w = scanf( "%d", &a[i][j] );
tot += a[i][j];
}
solve();
return 0;
}

【题解】打地鼠 SDOI2011 模拟 行列无关的更多相关文章

  1. BZOJ2241 [SDOI2011]打地鼠 【模拟】

    题目 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地 ...

  2. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  3. [题解+总结]NOIP2015模拟题2

    // 此博文为迁移而来,写于2015年7月22日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w72i.html 1.总 ...

  4. B2241 打地鼠 暴力模拟

    大水题!!!30分钟AC(算上思考时间),直接模拟就行,加一个判断约数的剪枝,再多加几个剪枝就可以过(数据巨水) 我也就会做暴力的题了. 题干: Description 打地鼠是这样的一个游戏:地面上 ...

  5. Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)

    猪国杀 - 可读版本 https://mubu.com/doc/2707815814591da4 题目可真长,读题都要一个小时. 这道题很多人都说不可做,耗时间,代码量大,于是,本着不做死就不会死的精 ...

  6. luogu题解P2486[SDOI2011]染色--树链剖分+trick

    题目链接 https://www.luogu.org/problemnew/show/P2486 分析 看上去又是一道强行把序列上问题搬运到树上的裸题,然而分析之后发现并不然... 首先我们考虑如何在 ...

  7. 3403. 题解【NOIP2013模拟】数列变换 (Standard IO)

    先看题目: Description 小X 看到堆成山的数列作业十分头疼,希望聪明的你来帮帮他.考虑数列A=[A1,A2,...,An],定义变换f(A,k)=[A2,A3,,,,.Ak,A1,Ak+2 ...

  8. 「题解」NOIP模拟测试题解乱写I(29-31)

    NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...

  9. 【题解】SDOI2011消耗战

    虚树模板题~洛谷P2495 第一次写虚树,感觉好厉害呀~首先,这道题目的树形dp是非常显然的,要控制一个点&其子树所有点,要么在子树内部割边,要么直接切点该点与父亲的连边.所以dp[u]表示控 ...

随机推荐

  1. jenkins展示report测试报告的配置

    HTML报告展示 1. 需要HTML Publisher plugin插件 2. 在workspace下的工程(构建)中的目录中存储测试报告 在Jenkins中新建一个job,进入配置项. 首先通过p ...

  2. iOS中使用RNCryptor对资源文件加密(先加密后拖进项目中)

    概述:IPA 在发布时,业务相关的敏感资源文件以明文的形式存储,由于没有加密保护,这些文件在应用发布后 可能被其他人获取,并结合其他漏洞和手段产生真实攻击.所以我们要 1.在设计.开发阶段,集合业务确 ...

  3. 软件工程-东北师大站-第十次作业(PSP)

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图

  4. 软工实践-Beta 冲刺 (5/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  5. POJ 3744 Scout YYF I 概率dp+矩阵快速幂

    题目链接: http://poj.org/problem?id=3744 Scout YYF I Time Limit: 1000MSMemory Limit: 65536K 问题描述 YYF is ...

  6. 0506-Scrum 项目 2.0视频

    一.团队项目要求 应用NABCD模型,分析你们初步选定的项目,充分说明你们选题的理由. 录制为演说视频,上传到视频网站,并把链接发到团队博客上. 二.NABCD模型 选题:约拍平台——家教平台 1) ...

  7. Few-Shot/One-Shot Learning

    Few-Shot/One-Shot Learning指的是小样本学习,目的是克服机器学习中训练模型需要海量数据的问题,期望通过少量数据即可获得足够的知识. Matching Networks for ...

  8. 6th Alpha阶段的postmortem报告

    组名:好好学习(代组长发布)  会议重要内容记录: 1.  尝试在beta阶段实现的功能,与alpha阶段相比的优势 (1)更改软件现有的bug: 1)软件的账目只能输入,但是一旦发生失误却无法更改和 ...

  9. WebDriver 工作原理

    WebDriver是W3C的一个标准,由Selenium主持. 具体的协议标准可以从http://code.google.com/p/selenium/wiki/JsonWireProtocol#Co ...

  10. Jquery 表单提交后3s禁用

    <form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" ...