[整理]qbxt集训10场考试 大 杂 烩 (前篇)
Contest 1
A
计算 \(n!\mod 2^{32}\) 。发现数一大答案就为 \(0\) ,直接输出即可。
B
一个 \(n\times m\) 的网格,网格中的数都在 \([1,nm]\) 之间且满足 \(A_{i,j}<A{i+1,j},A_{i,j}<A_{i,j+1}\) ,求对于任意 \(k\) ,有多少个格子可能填入 \(k\) 。
可以预处理出每个格子可填数的范围,然后差分。
C
对于一个排列有三种操作:花费 \(a\) 交换相邻两个数,花费 \(b\) 翻转整个排列,花费 \(c\) 打乱整个排列。问将其排好序的期望花费。
先通过状压处理出每个逆序对数量对应多少种排列,然后求一下每种排列不用打乱操作的花费,这时我们发现,如果使用打乱操作,一定是遇到了某个比较大的后缀,求出答案的前缀与后缀即可遍历找出最小值。
D
有 \(k\) 棵树,对于每对点 \(i,j\) 求出有多少个 \(x\) 在所有树中 \(i\) 到 \(j\) 的路径上。
先考虑一棵树,发现满足条件的点 \(x\) 满足 \(dis_{i,x}+dis_{x,j}=dis_{i,j}\) ,然后通过一番%^#@!%!#*%发现这个式子可以推广到多棵树上,于是就可以预处理距离数组 \(O(1)\) 判定了。
Contest 2
A
\(n\) 个元素划分成若干段,求每段异或和的加和的最值。根据异或的性质得出最小值是全异或起来,最大值是全加起来。
B
在约瑟夫游戏中,指针指到的人出局条件改为 \(p\) 的概率出局,求指针期望移动多少下。
可以设 \(f_n\) 表示 \(n\) 个人期望走几步,易得转移方程 \(f_i=pf_{i-1}+1+(1-p)f_i\) ,即 \(f_n=\frac 1p+f_{n-1}\) ,加起来可得答案 \(\frac np\) 。
C
实现区间加、区间整除、区间查询最大值和区间恢复初值四个操作。
树里可以存 \(\lfloor\frac{x+a}{b}\rfloor+c\) 三个标记,下传的时候可以优化一下整除,然后,正常线段树。
D
\(2n\) 个数平均分给 \(n\) 个人,求使得两数之和最大值唯一的方案数。
直接做不好求,考虑每个数作为最大值的贡献。
例如,在数列 \(\{1,2,3,4,5,6,7,8,9\}\) 中,假设最大值为 \(12=6\times2=5+7\) ,那么我们发现此时右边的只能和左边匹配(例如 \(9\) 能配 \(1,2\) , \(8\) 只能配 \(1,2,3\) 并且其中一个还被 \(9\) 占去了),这样下去直到右边匹配完,方案数是某个常数的幂。选完后左边剩下偶数个数,方案数其实是一个双阶乘。
Contest 3
A
每个物品有重量和价值,总重量为所有重量或起来的和,有一个容量为 \(k\) 的背包,求最大价值。
从最高位分类讨论即可。
B
求最长相邻按位与非零子序列。
直接dp不方便,可以按位dp。参见洛谷P4310 绝世好题。
C
有一些位数相同的十进制数,有些位置被抹去,求把空格填完后所有数单调递增的方案数(原题为数字和)。
可以dp来做:设 \(f_{i,l,r}\) 表示对于 \([l,r]\) 里的数字,第 \(i\) 列以后的方案数。这个状态不太好转移,于是再往里面套一个dp辅助计算,用 \(g_{j,k}\) 表示对于状态 \(i,l,r\) ,考虑完了前 \(j\) 行,当前最大填 \(k\) 的方案数。对于求数字和也是差不多的套路。
D
有一堆石子,每次从石子里取出一些形成另一堆(总共不超过 \(m\) 个),求最小分裂次数。
不好维护,考虑每个石子的状态。每次分裂可以看成给分出来的石子分配1的标号,反之为0,这样每个石子的状态就是一个01串,我们需要使它们不同。接下来发现答案满足单调性,于是二分一个 \(mid\) ,转化成判定是否合法。由题意得,如果合法,则 \(mid\times m\) 能够使得所有串两两不同且1的个数不超过 \(mid\times m\) 。如何证明它也是充分的呢?我们可以通过贪心构造来说明:每次把1往个数少的地方放,最终会变成从 \([1,n]\) 里取若干 \(m\) 元子集使得每个数被取的次数之间的极差 \(\le1\) 。如果不满足条件,则选一个出现太多的 \(i\) ,一个出现太少的 \(j\) ,发现一定有串能满足可以交换这两位,于是完事了。
Contest 4
A
模拟题。
B
有一些字符串,选择一个字符串并任意排序,然后重新定义字典序,使得其余所有字符串排序后都比自己的大,问有多少种选择。
首先可以枚举选择的字符串,然后枚举字典序,使得每个字符在这个字符串里出现均为最多,依次筛掉不合法的即可。
C
求所有逆序对不少于 \(K\) 个的区间交集大小之和。
我们先考虑如何求出这些区间。求出一个刚好满足要求的右端点,然后发现左端点右移,右端点一定右移,于是可以使用树状数组维护个数。答案不好求,按照惯例转化成求贡献,此时答案与覆盖某点的区间有关。经过一顿分析可以发现最终是要求区间加等差数列,用毒瘤数据结构维护。
D
有一棵树,你要从给定的两点进去,挨个节点炸掉它,炸掉的点不能通过,求炸掉所有点的方案数。
对于两点相同的情况,可以直接进行树形dp:设 \(f_i\) 为方案数,则 \(f_u=f_u\times f_{son}\times C_{size_u+size_{son}}^{size_{son}}\) 。若两点不同,则可以把树分成两点之间的部分和这两点的子树。发现两点中间的部分一定是从中间向两端删一个区间,于是可以区间dp,每扩展一个点就把它的子树乘进贡献。
Contest 5
A
有四种颜色的球,要求放成一列且相邻的球颜色不相同,求方案数。(前两种颜色球的数量远小于后两种)
可以把前两种和后两种分开考虑,先dp求出放完前两种之后相邻颜色一样的个数为 \(i\) 的方案数(记作 $f_i)。接下来枚举后两种颜色的放法以及形如343、434、34的数量,最后用排列组合计算出答案。
B
参见洛谷P2123 皇后游戏。
C
请你区间加、区间乘、区间赋值、查询所有区间平均数的和。
前三种操作好说,关键是最后一种。可以拆成每个点对答案的贡献来计算。
D
你可以在一棵树的叶子节点上放毒气,毒气以每秒一单位的速度蔓延,问有多少种不同的使毒气蔓延到整棵树的时间(时间是连续的,例如毒气可以在一条边的中间汇合)。
考虑两个叶子结点之间的时间,发现要么是从一个蔓延到另一个,要么是从两端同时蔓延。于是对于两种情况,分别求出放毒后没有影响的点,同时进行SPFA,看最终结果是否满足条件。
[整理]qbxt集训10场考试 大 杂 烩 (前篇)的更多相关文章
- [整理]qbxt集训10场考试 大 杂 烩 (后篇)
前篇 Contest 6 A 两个数,第 \(i\) 轮从较大数(如果相等就是第一个)里减去 \(i\) ,问操作不能进行时两数分别为多少. 首先把大数减到和小数差不多,然后我们会发现接下来两数会轮流 ...
- 你跟上技术趋势了么? 来看看这10场2017热门it技术会议!
2016年各类大会让人应接不暇,技术圈儿最不缺的就是各种大会小会,有的纯干货,有的纯广告.作为一名技术开发者,参加了几场大会,你是不是也开始思忖:究竟哪些会议才值得参加?下面活动家为你推荐几场2017 ...
- 2016 10 28考试 dp 乱搞 树状数组
2016 10 28 考试 时间 7:50 AM to 11:15 AM 下载链接: 试题 考试包 这次考试对自己的表现非常不满意!! T1看出来是dp题目,但是在考试过程中并没有推出转移方程,考虑了 ...
- 我的 2020:出书、办签售会、发展 VS Code 中文社区、成为开源先锋、全网 10 万粉丝、10 场演讲、内推 21 人、955.WLB 发扬光大
感觉写 2019 年终总结还是在不久之前.转眼间,2020 已经接近尾声了.是时候来写写 2020 年的年终总结了. 出书 今年最高兴的事情之一,就是出了全球首本 VS Code 中文书 -- < ...
- zw·10倍速大数据与全内存计算
zw·10倍速大数据与全内存计算 zw全内存10倍速计算blog,早就在博客园机器视觉栏目发过,大数据版的一直挂着,今天抽空补上. 在<零起点,python大数据与量化交易>目录中 htt ...
- JAVA Apache POI 之sax 解析10万级大数量数据
第一步让我们来看看我们的大量数据的excel 文件 好的下面第二步看一下代码: package com.chinait.utils; /** * 写这个东西主要是最近做了一个联通的数据迁移工作,他们就 ...
- 2019年终总结:10场演讲、内推20人、公众号2万粉丝、Code Runner 1000万下载
2019年是值得记录的一年,成长许多,也收获许多. 做了 10 场大会的技术演讲,成功内推 20 人拿到微软 Offer,知乎 Live 2000 听众,公众号 2 万粉丝,GitHub 2万 sta ...
- Unity3D大风暴之入门篇(海量教学视频版)
智画互动开发团队 编 ISBN 978-7-121-22242-9 2014年2月出版 定价:79.00元 328页 16开 编辑推荐 长达800分钟的高清教学视频,手把手教会初学者 数个开发案例 ...
- 阶乘之和 输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤10 6 ,n!表示 前n个正整数之积。
阶乘之和输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0).n≤10 6 ,n!表示前n个正整数之积.样例输入:10样例输出: package demo; import java.uti ...
随机推荐
- DES 实现
原理 加密 置换: IP逆置换: 迭代: PC-1置换: PC-2置换: 子秘钥的生成: 加密函数f: 解密 代码 // C语言实现 #include<stdio.h> #include& ...
- P3065 [USACO12DEC]First! G
题意描述 [USACO12DEC]First! G 不错的一道题. 给你 \(N\) 个字符串,要求你求出可能的字典序最小的字符串. 对于 可能的最小的字符串,你可以任意排列 \(26\) 个字母,使 ...
- CF1444A (1445C)Division 题解
题意:求最大的正整数 \(x\) ,使 \(x \mid p且q \nmid x\) . 首先,当 \(q \nmid p\) ,显然取 \(x=p\) 是最优解. 现在,我们考虑 \(q \mid ...
- SpringBoot中的classpath
一句话总结:classpath 等价于 main/java + main/resources + 第三方jar包的根目录.下面详细解释. 首先,classpath顾名思义,是编译之后项目的路径,而不是 ...
- 【Java】类的结构
类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍. 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象:强调具备了功能的对象,以类/对象为 ...
- tensorflow-gpu2.1.0报错 so returning NUMA node zero解决办法
>>> print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))2020-06-06 10:14:08.92 ...
- Jmeter-全局变量跨线程组使用
一.前言 前面讲了如何使用正则表达式提取值,一般提取的值在同一个线程里,随意哪个请求都是可以引用的,那如果别的线程组也想引用怎么办呢?这时就涉及到一个全局变量的知识点了,话不多说,直接实例走起. 二. ...
- 聊一聊sockmap 以及ebpf
之前聊过tcpdump 抓包原理,tcpdump使用packet 抓包,使用packet_map 完成零拷贝.但是这个零拷贝也有点假,何为假呢?从网卡到内存走的dma,哪能不能直接从dma拷贝到用户空 ...
- 多项目部署在同一个GitHub Pages
由于GitHub 的约定,一个账户只能拥有一个GitHub Pages,那么,如果你有多个想部署的静态网站(博客和文档等),它们是互相隔离的,如何用同一个GitHub账户进行部署呢? 从之前如何搭建G ...
- TypeError: Cannot read property 'Component' of undefined
继续跟着阮一峰的教程走,下面写到PropTypes的getDefaultProps时,又出现了问题,基于上一个createClass的报错换成了Component写法 错误描述: 解决方法:引入rea ...