【meet in the mid】【qbxt2019csp刷题班day1C】birthday
Description
给定一个长度为 \(n\) 序列,值域为 \([1, v]\),每次选择一段区间,要求在这个区间上选择一些元素加入到两个集合中,每个元素要么不选要么只能加入一个集合,要求两个集合非空且元素和相等,问能否实现。
同时要求区间修改元素为自身的立方对 \(v\) 取模的结果。
Limatations
\(1 \leq n \leq 10^5\),\(1 \leq v \leq 1000\)
Solution
考虑一段长度为 \(len\) 的区间,考虑每个点有选入集合和不选入集合两种可能,所以所有选择的种数一共有 \(2^{len}\) 种。考虑由于值域为 \(v\),所以可能出现的权值和一共有 \(len \times v\) 种。考虑当 \(2^{len} > len \times v\) 时,一定至少有两个不同的选择得到了相同的权值。考虑这两个选择可能会选择相同的元素,那么直接将这些相同的元素都去掉,由于去掉的元素相同,最终得到的权值和依然是相同的,并且两个集合无交。因此这种情况一定能实现。
解方程
\[2^{len} > len \times v\]
两侧同时取 \(\log\),整理得
\[len - \log len > \log v\]
显然 \(v\) 取最大值时,左侧取最大值,因此有
\[len - \log len > 10\]
显然当 \(len\) 充分大时,左侧的值与 \(len\) 正相关,枚举 \(len\) 得到
\[len > 13\]
因此当 \(len \geq 14\) 时,可以直接输出 \(Yes\),下面考虑 \(len \leq 13\) 的情况。
考虑最简单的方法是爆搜,枚举每个元素不选还是选入集合 \(A\) 还是选入集合 \(B\),时间复杂度 \(O(3^{len})\),由于一共有 \(m\) 次查询,时间复杂度超标。
考虑进行 meet in the middle,先搜索区间前 \(6\) 个元素的所有情况,记录所有可能的 \(A\) \(B\) 两集合元素和之差,再搜索区间后 \(7\) 个元素的情况,同样记录所有可能的元素和之差。一旦有一个差在两侧都有出现,那么只需要一个集合左边选较大的右边选较小的;另一个集合左边选较小的右边选较大的,即可得到两个合法的集合,反之则不能得到。
因此这这样的复杂度为 \(O(2^{len / 2})\),由于有 \(m\) 次操作,实际运算量与 \(2^7 \times m\) 同阶,可以通过本题。
考虑区间修改操作,只需要分块或者线段树即可快速维护。
Summary
zxy 天下第一
【meet in the mid】【qbxt2019csp刷题班day1C】birthday的更多相关文章
- 【套题】qbxt国庆刷题班D2
D2 今天的题感觉还是好妙的 T1 传送门 Description 现在有一张\(n\)个节点\(m\)条边的无向连通图\(G=(V,E)\),满足这张图中不存在长度大于等于3的环且图中没有重边和自环 ...
- 【套题】qbxt国庆刷题班D1
Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十 ...
- 10.24afternoon清北学堂刷题班
/* 这是什么题... */ #include<iostream> #include<cstdio> #include<cstring> #include<q ...
- 清北刷题班day3 morning
P99zhx: 竞赛时间:???? 年?? 月?? 日??:??-??:??题目名称 a b c名称 a b c输入 a.in b.in c.in输出 a.out b.out c.out每个测试点时限 ...
- 提高组刷题班 DAY 1 上午
低仿机器人(robo,1s,64M) 题解 大模拟 代码 #include <cstdio> #include <cstring> #include <iostream& ...
- 10.27night清北刷题班
/* 枚举每个部分的总和,利用前缀和进行检验. 如果能分成4部分就一定能分成2部分,就筛了一边素数优化.清空数组!!! */ #include<bits/stdc++.h> #define ...
- 【BZOJ-4590】自动刷题机 二分 + 判定
4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 156 Solved: 63[Submit][Status ...
- NOI题库分治算法刷题记录
今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...
- BZOJ4590 自动刷题机
Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
随机推荐
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
- 明解C语言 入门篇 第五章答案
练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...
- 使用arcpy添加grb2数据到镶嵌数据集中
#!coding: utf-8 import numpy as np import arcpy def addGRB2ToMosaic(grb2name): print "start add ...
- 【生活现场】从打牌到map-reduce工作原理解析(转)
原文:http://www.sohu.com/a/287135829_818692 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 对小史面试 ...
- Web应急:网站被植入Webshell
网站被植入webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入webshell接管网站的控制权.为了得到权限 ,常规的手段如:前后台任意文件上传,远程命令执行,Sql注入 ...
- 错误:error: failed to push some refs to 'https://github.com/pzq7025/KG.git'的解决办法
一.问题在进行[git push orgin master]的时候出现如下错误 ! [rejected] master -> master (non-fast-forward) error: f ...
- 使用 Docker 和 Jenkins 持续交付(新书免费获取!)
今天没有长篇大论,给大家推荐一本新书,书名:Continuous Delivery with Docker and Jenkins.封面如图所示: 以下内容纯属凑字数 本书结合了 Jenkins 和 ...
- Java学习:JDK8的新特性
Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...
- 关于宝塔面板windows版6.2的一些使用心得
关于宝塔面板windows版6.2的一些使用心得 第一次使用windows版本的 给客户搭建 asp+mssql的需求 心得1 安装 server2012 基于python开发的,所以安装的 ...
- Java-Iterator遍历集合
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...