CF 494E Sharti


题意:一个\(n \times n\)的棋盘,共有m个矩形中的格子为白色。两个人需要博弈,每次操作选择一个边长不超过k的正方形并翻转颜色,每次翻转需要正方形的右下角为白色,轮流操作,不能操作者输。

题解:
这个题显然是满足翻硬币游戏的定理,只是将一维改成了二维。
\(sg_{i,j}= \min\{ lowbit(i),lowbit(j),maxbit(k) \}\)。
lowbit(x)是把x看成2进制数的最低位,maxbit(x)时最高位。
接下来证明这个结论。

接下来给出几个引理。

定义
\(pre_x = \bigoplus_{i=1}^{x} \text{lowbit(i)}\)
\(f(l,r)= \bigoplus_{i=l}^{r} \text{lowbit(i)}\)

引理1: \(\forall k \geq 1\),\(pre_{2^k} = 2^{k-1}\)

证明:考虑各位的贡献易证。

引理2: \(\forall k \geq 1\),令集合\(S_k=\{ pre_x | x\in [0,2^k-1] \}\) ,可以证明\(S_k=[0,2^k-1]\)

证明:归纳,k=1时显然成立,当k>1时,\[S_k=\{ pre_x | x\in [0,2^{k-1}-1] \} \bigcup \\
\{ (2^{k-1} + 2^{k-2}) pre_x | x\in [0,2^{k-1}-1] \}
\\
=[0,2^{k}-1]\]

引理3:\(\forall x \neq y,pre_x \neq pre_y\)
证明:由引理2可知。

先讨论\(k=n\)的情况,即翻转的正方形没有长度限制。

我们考虑归纳证明。
首先对于\(i \leq 1\)或\(j \leq 1\)的情况,显然\(sg_{i,j}=1\)。
接下来对于\(i \leq x , j \leq y , (i,j) \neq (a,b)\)的情况都满足结论,我们需要证明\(sg_{a,b}=\min\{lowbit(a),lowbit(b)\}\)
不妨设\(lowbit(a) \leq lowbit(b)\),\(k=lowbit(a)\)
对于小于2^k的数必定都在S中,因为显然对于\(i < 2^k, lowbit(a-i)=lowbit(b-i)=lowbit(i)\),
于是对于\(x < 2^k,pre_x \in S\)。
只需证明\(2^k \notin S\)
我们要找\(2^k\),不妨放弱一点条件,我们只要找值在\([2^k,2^{k+1}-1]\)的即可。
令\(t=a-2^k\),\(k'=lowbit(t)\)
如果\(a-2^k\)或\(b-2^k\)为0,那么一定找不到。
\(lowbit(a)<lowbit(b)\)时,在矩阵的\((a-2^k,b)\)这个位置有一个 \(2^{k'}\)
\(lowbit(a)=lowbit(b)\)时,在矩阵的\((a-2^k,b-2^k)\)这个位置有一个 \(2^{k'}\)
并且显然,以\(2^k\)为边长的正方形只有一个值为\(2^{k'}\)
把这个位置记为\((a',b')\),不管在哪,我们都得把这个\(2^{k'}\)给消掉
那么新的问题是要在(a',b')为右下角,找到一个值为\([2^{k'},2^{k'+1}-1]\)的正方形。
(为什么是正方形呢,因为多出来的右边那一部分或者是上面一部分的值域一定在\([0,2^{k'}-1]\)),所以不会影响答案。
不难发现这个问题跟原来是一样的,而且做有限次之后a,b一定有一个会变为0,所以\(2^k \notin S\),\(\text{mex}\{S\}=2^k\)

这样我们就解决了\(k=n\)的问题,当\(k < n\)时,显然,k只会对\(\min\{lowbit(a),lowbit(b)\} > maxbit(k)\)的\(sg_{a,b}\)造成影响,
设\(t=2^{maxbit(k)}\)
不难发现,在边长k以内,以(a,b)为右下角和以(2t,2t)为右下角的值是一样的。
\(S=\{f(x,2t-1)|x\in[2t-k+1,2t]\}\)
又\(2t>x,lowbit(x)=lowbit(2t-x)\)
所以\(S= \{pre_x | x\in[0,k-1]\}\)
而\(pre_{2^{k+1}-1}=2^{k}\),由引理3可知\(2^k \notin S\)

既然知道了sg函数,我们直接扫描线+线段树,由于lowbit的种数很少,枚举每个lowbit进行维护即可。

CF 494E Sharti的更多相关文章

  1. Codeforces 494E. Sharti

    Description 有一个 \(n*n\) 的矩形,给出 \(m\) 个子矩形,这些矩形内部的点都是白色的,其余的点都是黑色,每一次你可以选择一个变长不超过 \(k\) 的正方形,满足这个正方形的 ...

  2. CF数据结构练习

    1. CF 438D The Child and Sequence 大意: n元素序列, m个操作: 1,询问区间和. 2,区间对m取模. 3,单点修改 维护最大值, 取模时暴力对所有>m的数取 ...

  3. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  6. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  7. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  8. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  9. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

随机推荐

  1. 对于 FFmpeg.NET 开源项目,我的更改

    项目地址:https://github.com/cmxl/FFmpeg.NET 官方介绍 .NET wrapper for common ffmpeg tasks FFmpeg.NET provide ...

  2. 『You Are Given a Tree 整体分治 树形dp』

    You Are Given a Tree Description A tree is an undirected graph with exactly one simple path between ...

  3. php 获取一张图片所有点的颜色值,感觉不错转载学习

    片段一 //similar_text($numStr, $val, $pre); //计算两个字符串的相似度 //print_r($pre); $imgPath = 'time.jpg'; $size ...

  4. .NET CORE 控制台应用程序配置log4net日志文件

    使用文件格式记录日志 1.新建一个.NET CORE控制台应用程序,添加log4net.dll引用,打开工具->NuGet包管理器->管理解决方案的NuGet程序包. 2.在NuGet-解 ...

  5. flex:1和flex:auto详解

    flex:1和flex:auto详解 首先明确一点是, flex 是 flex-grow.flex-shrink.flex-basis的缩写. flex-grow属性定义项目的放大比例,默认为0,即如 ...

  6. 一个很简单的SpringCloud项目,集成Feign、Hystrix

    Feign的功能:这是个消费者,根据服务注册在Eureka的ID去找到该服务,并调用接口Hystrix的功能:熔断器,假如A服务需要调用B服务的/cities接口获取数据,那就在A服务的control ...

  7. 设计模式:单例(Sigleton)模式

    题目:设计一个类,我们只能生成该类的一个实例. 只能生成一个实例的类是实现了Singleton(单例)模式的类型. 相关知识: 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象 ...

  8. Hyper-v,装XP的时候没有驱动上不了网,装这个集成服务(vmguest.iso )就可以了

    Win10自带的Hyper-v,装XP的时候没有驱动上不了网,装这个集成服务(vmguest.iso )就可以了 安装后无法识别显卡及网卡设备,不能与虚拟网络通讯,设备管理器中显示三个未知设备. 在X ...

  9. MS Sql 优化步骤及优化not in一例

    今天接到客户投诉说系统卡死了,经过一翻努力,终于解决了.现将解决步骤记录一下,以便下次参考: 因为客户系统集中在阿里云上面,使用的是ms sql2008数据库,上面有N个客户,一下子无法知道是哪个客户 ...

  10. pip install报错:RuntimeError: Python version >= 3.5 required

    由于pip官方的不作为,现如今python2(以及某些低版本python3)配套的pip,已经没法正常的安装pypi包了. 例如需要用到的一套PyCaffe的代码,是基于Python2的,于是用min ...