首页 > 其他分享 >【五一省选集训day4】Grid Game

【五一省选集训day4】Grid Game

时间:2024-09-10 21:52:15浏览次数:1  
标签:边长 省选 day4 白点 len 合法 正方形 Game 哈希

【五一省选集训day4】Grid Game

首先发现 \(n,m\le 2000\),可以考虑枚举正方形左上端点 \((x_0,y_0)\)。

对于一个边长为 \(len\) 的合法的正方形,如果 \(len=k\) 这个正方形全黑,需要特判,否则它至少有一个白点。

我们惊奇地发现,对于这样的其中一个白点,它所在的那一列一定存在恰好 \(k\) 个黑点,且这 \(k\) 个黑点所在的行是黑的。它所在的那一行一定存在恰好 \(k\) 个黑点,且这 \(k\) 个黑点所在的列是黑的。因此,我们注意到,确定一个白点之后,我们就可以确定 \(k\) 行 \(k\) 列染色的位置了。

注意到另一个性质:对于固定左上端点,如果 \(len=l,len=r\) 都合法,那么 \(len\in [l,r]\) 都是合法的,因此我们只需求出最小的合法边长和最大合法边长。

求最小合法边长,我们可以找一个离左端点最近的白点 \((x_1,y_1)\)。这里最近是指切比雪夫距离最小,就是 \(\max\{|x_1-x_0|,|y_1-y_0|\}\) 最小。

求这个白点可以二维 DP 一下。我绝对不会写《DP 即可》。\(dp_{x_0,y_0}\) 有三种转移的可能。可能由 \(dp_{x_0+1,y_0+1}\) 转移,也可能由它正右方和正下方的最近的白点转移,取一个最近的点就好。

设这个最小距离是 \(d\),那么 \(len\ge d\) 的正方形一定包含这个白点,可以确定出染色的 \(k\) 行 \(k\) 列。要判断包含这 \(k\) 行 \(k\) 列的最小正方形是否合法,如果不合法,那么更大的正方形也不可能合法。(前提是特判掉 \(len=k\) 的情,因为即使 \(len=k\) 不合法,\(len=k+1\) 也有可能合法)

然后我们要接近 \(O(1)\) 判断边长为 \(len\) 的正方形是否合法。考虑哈希。

每个点 \((i,j)\) 的哈希值我们设为 \(a_ib_jc_{i,j}\),这样设方便后续使用乘法分配律。最好使用双模数,这样哈希冲突率是 \(\frac{n^2}{p_1p_2}\),冲突率很小。

用二维前缀和计算出正方形的哈希值的和。然后再计算出我们希望的哈希值,比较它们是否相等。我们希望只有那 \(k\) 行 \(k\) 列的 \(c_{i,j}=1\),其余 \(=0\)。因此我们希望的哈希值就是每一列是 \(b_{j_0}\sum_{i=x_0}^{x_0+len-1} a_i\),一共 \(k\) 列是 \(\sum_{i=x_0}^{x_0+len-1} a_i \sum_{c_{x_1,j}=1} b_j\)。行的同理。然后减去行和列相交的被重复计算的点,即 \(\sum_{c_{i,y_1}=1} a_i \sum_{c_{x_1,j}=1} b_j\)。如果正方形合法,它的哈希值就等于这个了。

这样我们就找到了最小的边长,找最大的边长可以二分,判断是否合法,缩小范围。据说有不带 \(\log\) 的双指针方法还是什么方法,但是本题貌似不卡 \(\log\)。主要是我不会啊

讲完了,感觉不好写,会有很多细节吗?

真是要充分发扬人类智慧才能做出来的题,可惜我没有智慧

虽然我不想打,但是我相信今天不打我明天也不会打的,所以还是今天打吧。结果是今天没打,一直颓

标签:边长,省选,day4,白点,len,合法,正方形,Game,哈希
From: https://www.cnblogs.com/liyixin0514/p/18407300

相关文章

  • HTML/CSS/JS学习笔记 Day4(HTML--C3 表格)
    跟着该视频学习,记录笔记:【黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程】https://www.bilibili.com/video/BV14J4114768?p=12&vd_source=04ee94ad3f2168d7d5252c857a2bf358Day4 内容梳理:目录HTML3.0表格3.1表格标签(1)语法基本标签......
  • 【五一省选集训day4】Permutation
    【五一省选集训day4】Permutation每次操作把数分成两组,每组内的顺序不变,把第\(0\)组放到第\(1\)组前面。发现这很像基于二进制的基数排序。假设我们进行\(k\)次这样的操作,就相当于给每个数赋一个值\((x,y)\),其中\(0\lex\le2^k-1,y=\texttt{数的下标}\)。然后对第一维......
  • 代码随想录训练营day41|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股
    121.买卖股票的最佳时机这题和贪心中的买股票很想,但这里不用考虑局部问题,因为只用买一张卖一张。我想可以用一个数组dp来记录买入价格和卖出价格。然后遍历数组草我感觉我写的想贪心。动态规划dp[i][0]表示第i天不持股的最大收益,dp[i][1]表示第i天持股的最大收益。dp......
  • 【五一省选集训day4】Mansion
    【五一省选集训day4】Mansion注意,本题要求输出最大值,不要把最大值看成编号……srds好像只有我看错了。这个东西一看就很能用莫队做。用莫队按\(l\)分块,再按\(r\)排序。维护一棵线段树,每次移动对线段树进行单点修改和区间求\(\max\),一共\(n\sqrt{n}\)次移动,总时间复杂度......
  • 24暑假算法刷题 | Day41 | 动态规划 IX | LeetCode 188. 买卖股票的最佳时机 IV,309.
    目录188.买卖股票的最佳时机IV题目描述题解309.买卖股票的最佳时机含冷冻期题目描述题解714.买卖股票的最佳时机含手续费题目描述题解188.买卖股票的最佳时机IV点此跳转题目链接题目描述给你一个整数数组prices和一个整数k,其中prices[i]是某支给定......
  • CF1991E Coloring Game 题解
    Description有一个由\(n\)个顶点和\(m\)条边组成的无向图。每个顶点可以用三种颜色之一着色:\(1\)、\(2\)或\(3\)。初始时,所有顶点都未着色。Alice和Bob正在玩一个包含\(n\)轮的游戏。在每一轮中,都会发生以下两个步骤:Alice选择两种不同的颜色。Bob选择一个未......
  • GAMES101(0~1作业)
    搭建虚拟机环境安装OracleVMVirtualBox虚拟机,安装虚拟硬盘,配置Linux Ubuntu-64bit系统,启动虚拟机,发生冲突错误:将Vmware虚拟设备取消挂起状态,关机确保Hyper-V完全关闭:bcdedit/sethypervisorlaunchtypeoff重启计算机安装增强功能,未找到iso错误:ISO下载地址:Indexof......
  • HDU 1729 Stone Game
    https://ac.nowcoder.com/acm/contest/34655/C有\(n\)个箱子,第\(i\)个箱子最多放\(s_i\)个石子,当前箱子里的石子数为\(c_i\)。两个人轮流往箱子里放石子,而且每一次放的数量都有限制:不能超过当前箱子内石子数的平方。例如箱子里有\(3\)颗石子,那么下一个人就可以放\(1-9\)......
  • 关于ybc_game库的用法(第一期)
    大家好,我是于翱睿,今天我给大家更新一期如何正确的使用ybc_game库,避免踩坑。首先,需要说的是:所有的图片必须放在images文件夹里,在代码中不用写“images/”同样,要想保存音频,所有的音频必须放在sounds文件夹中,在代码中不用写“sounds/”所有说明我都放到注释里了,注意仔细观察那......
  • 【转载】《扩散模型是实时游戏引擎(Diffusion Models Are Real-Time Game Engines)》的
    地址:https://www.youtube.com/watch?v=VniPJII6ak08月29号,谷歌DeepMind发布了一篇名为《扩散模型是实时游戏引擎(DiffusionModelsAreReal-TimeGameEngines)》的论文,向我们展示了世界上第一个完全由神经模型驱动的游戏引擎,GameNGen。这也是历史上首次,AI能在不借助其他......