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场考试 大 杂 烩 (前篇)的更多相关文章

  1. [整理]qbxt集训10场考试 大 杂 烩 (后篇)

    前篇 Contest 6 A 两个数,第 \(i\) 轮从较大数(如果相等就是第一个)里减去 \(i\) ,问操作不能进行时两数分别为多少. 首先把大数减到和小数差不多,然后我们会发现接下来两数会轮流 ...

  2. 你跟上技术趋势了么? 来看看这10场2017热门it技术会议!

    2016年各类大会让人应接不暇,技术圈儿最不缺的就是各种大会小会,有的纯干货,有的纯广告.作为一名技术开发者,参加了几场大会,你是不是也开始思忖:究竟哪些会议才值得参加?下面活动家为你推荐几场2017 ...

  3. 2016 10 28考试 dp 乱搞 树状数组

    2016 10 28 考试 时间 7:50 AM to 11:15 AM 下载链接: 试题 考试包 这次考试对自己的表现非常不满意!! T1看出来是dp题目,但是在考试过程中并没有推出转移方程,考虑了 ...

  4. 我的 2020:出书、办签售会、发展 VS Code 中文社区、成为开源先锋、全网 10 万粉丝、10 场演讲、内推 21 人、955.WLB 发扬光大

    感觉写 2019 年终总结还是在不久之前.转眼间,2020 已经接近尾声了.是时候来写写 2020 年的年终总结了. 出书 今年最高兴的事情之一,就是出了全球首本 VS Code 中文书 -- < ...

  5. zw·10倍速大数据与全内存计算

    zw·10倍速大数据与全内存计算 zw全内存10倍速计算blog,早就在博客园机器视觉栏目发过,大数据版的一直挂着,今天抽空补上. 在<零起点,python大数据与量化交易>目录中 htt ...

  6. JAVA Apache POI 之sax 解析10万级大数量数据

    第一步让我们来看看我们的大量数据的excel 文件 好的下面第二步看一下代码: package com.chinait.utils; /** * 写这个东西主要是最近做了一个联通的数据迁移工作,他们就 ...

  7. 2019年终总结:10场演讲、内推20人、公众号2万粉丝、Code Runner 1000万下载

    2019年是值得记录的一年,成长许多,也收获许多. 做了 10 场大会的技术演讲,成功内推 20 人拿到微软 Offer,知乎 Live 2000 听众,公众号 2 万粉丝,GitHub 2万 sta ...

  8. Unity3D大风暴之入门篇(海量教学视频版)

    智画互动开发团队 编   ISBN 978-7-121-22242-9 2014年2月出版 定价:79.00元 328页 16开 编辑推荐 长达800分钟的高清教学视频,手把手教会初学者 数个开发案例 ...

  9. 阶乘之和 输入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 ...

随机推荐

  1. ASP.NET Core Authentication系列(三)Cookie选项

    前言 在本系列第一篇文章介绍了ASP.NET时代如何认证,并且介绍了如何通过web.config文件来配置Auth Cookie的选项. 第二篇文章介绍了如何使用Cookie认证,本文介绍几个常见的C ...

  2. MySQL中没有FULL OUTER JOIN的处理

    FULL OUTER JOIN:SELECT column_name(s)FROM table1FULL OUTER JOIN table2ON table1.column_name=table2.c ...

  3. Flink的DataSource三部曲之一:直接API

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Windows Server 2012 R2 辅助域控制器搭建

    Windows Server 2012 R2 辅助域控制器搭建 以下操作都是基于主域已搭建成功的基础上,全程操作过程都是在辅域上操作完成. 地址 主域:10.228.81.207 辅域:10.228. ...

  5. uniapp微信小程序分享

    触发代码 如: <button open-type="share">分享</button> 在JS中 分享进入页面传参,和微信小程序路由传参的思路是一样的. ...

  6. 凝思磐石安全系统V6.0.8版本(debian)增加多于4个串口方法

    在网上找了好多方法,大家基本上都用ubuntu系统做实现演示,里面的有些文件我在凝思系统上根本找不到,最终通过摸索已解决,记录下操作过程(整个过程都需要在root用户下进行): 判断系统目前能识别的串 ...

  7. 在windows下安装node-sass失败,提示\node-sass: Command failed,解决方案

    执行命令 yarn add node-sass@4.7.2 --dev --registry=https://registry.npm.taobao.org :报错 出现这个问题的原因一般是网络问题, ...

  8. fork 子进程,父进程对于变量的共享

    经过代码的练习发现: fork创建的子进程会完全复制父进程的代码包括变量,既复制fork之前创建的变量. 但是在创建子进程后,子进程与父进程对同一个变量的改变将相互不受影响,即使获取同一变量的地址是一 ...

  9. PyQt5信号与槽关联的两种方式

    目录 通过QtDesigner 手动关联的方式 通过QtDesigner 单击菜单栏切换到信号槽编辑模式 单击控件并拖动鼠标到信号的接收对象上,一般为对话框自己,松开鼠标弹出信号和槽选择框 选中cli ...

  10. 编译一个Centos6.4下可用的内核rpm升级包-3.8.13内核rpm包

    在Centos6.4下进行内核升级,采用内核源码的升级方式比较简单,但是需要升级的机器多的情况下进行内核升级就比较麻烦,并且编译内核的速度依赖于机器的性能,一般需要20分钟,而通过rpm内核包的方式进 ...