【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题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
随机推荐
- C++:const
const const是C++提供的一个强大的关键字,const的用法非常多,但总的来说,const的作用只有一个:保证被修饰的内容不会被程序所修改. const基本用法 对一个类型的对象使用cons ...
- Failed to instantiate [org.elasticsearch.client.transport.TransportClient]
Springboot 集成 ElasticSearch,springboot报错如下: Error starting ApplicationContext. To display the auto-c ...
- C++初探
//string1.cpp #include <iostream> int main() { using namespace std; ]={'d','o','g'}//这是char数组, ...
- HTML5 下拉控件绑定数据
<select id="CommunityList" class="form-control" > <option>請選擇社團</ ...
- layui 动态表格设置单元格样式
col.push({ field: , templet: function (d) { ") { return '<span style="color:white;backg ...
- C# 调用打印机打印文件
C# 调用打印机打印文件,通常情况下,例如Word.Excel.PDF等可以使用一些对应的组件进行打印,另一个通用的方式是直接启用一个打印的进程进行打印.示例代码如下: using System.Di ...
- MySQL查询——select
SELECT select的完整语法: select col1, col2,... # 业务查询的字段 from table_name # 选取的哪张表 [where single_condition ...
- Web API接口安全了解
2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...
- Android viewPager+fragment实现滑页效果
先上图,手指在手机向左或者向右滑就可以实现相应的页面切换. 先看activity_main.xml文件,非常简单,主要是三个标题TextView和viewpager <?xml version= ...
- InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's
InvalidOperationException: Operations that change non-concurrent collections must have exclusive acc ...