【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题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
随机推荐
- js 编译原理
引擎:从头到尾负责整个javaScript 程序的编译过程和执行过程. 编译器: 负责语法分析以及代码的生成. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询, 并实施一套非常严格的 ...
- ROS源更改
ROS源更改 配置你的电脑使其能够安装来自 packages.ros.org 的软件,使用国内或者新加坡的镜像源,这样能够大大提高安装下载速度 sudo sh -c '. /etc/lsb-relea ...
- 执行"rm -rf /"之后世界安静了吗
对于Unix/Linux程序员来说,"rm -rf /"一直被认为是一个极度危险的操作,因为直接把根目录给删除了,整个操作系统也就崩溃了.但实际上会是这样的吗?呵呵,请看图: 啊哈 ...
- 基础知识---IEnumerable、ICollection、IList、IQueryable
一.定义 IEnumerable public interface IEnumerable<out T> : IEnumerable ICollection public interfac ...
- Kafka分区分配策略-RangeAssignor、RoundRobinAssignor、StickyAssignor
引言按照Kafka默认的消费逻辑设定,一个分区只能被同一个消费组(ConsumerGroup)内的一个消费者消费.假设目前某消费组内只有一个消费者C0,订阅了一个topic,这个topic包含7个分区 ...
- [個人紀錄] regular 搜集
判斷有理數 ^(0|[1-9]([0-9]{1,5})?)((\.(([0-9]{1,5})?[1-9])))?$
- SQL Server 2014查看服务器数据库字段报错 (Microsoft.SqlServer.Management.Sdk.Sfc)
报错信息 无法为该请求检索数据. (Microsoft.SqlServer.Management.Sdk.Sfc) 未知属性 IsMemoryOptimized (Microsoft.SqlServe ...
- centos7设置时间
1.查看时间时区 date 2.修改时区 timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海 3.安装ntp 联网校准时间 yum install n ...
- SVG跟随父级DIV自适应
后台返回过来的是这样的SVG标签 <svg width="100%" height="100%" version="1.1" xmln ...
- APS中生产计划排程模块的基本原理
高级计划系统(APS)作为ERP和MES的补充,用于协调物流.开发瓶颈资源和保证交货日期. APS包括需求和供应计划.运输和生产计划排程等各种供应链计划模块,本文主要介绍APS中生产计划排程模块的基本 ...