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. php 计算2点之间的距离

    //获取该点周围的4个点 $distance = 1;//范围(单位千米) $lat = 113.873643; $lng = 22.573969; define('EARTH_RADIUS', 63 ...

  2. JNI-Thread中start方法的调用与run方法的回调分析

    前言 在java编程中,线程Thread是我们经常使用的类.那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索. 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程 ...

  3. 请介绍下你了解的ThreadLocal,它的底层原理!

    前言 业务开发中经常使用 ThreadLocal 来存储用户信息等线程私有对象... ThreadLocal 内部构造是什么样子的?为什么可以线程私有?常说的内存泄露又是怎么回事? 公众号:liuzh ...

  4. 「SHOI2015」超能粒子炮・改

    「SHOI2015」超能粒子炮・改 给你\(T\)组询问,每组询问给定参数\(n,k\),计算\(\sum\limits_{i=0}^k\dbinom{n}{i}\). \(T\leq10^5,n,k ...

  5. js 图片放大镜功能

    原理:放置两张相同的图片,一张作为主图片(图片1),另一张作为用来裁剪并放大的图片(图片2)          鼠标移动时,计算鼠标在图片1的位置(距离图片1左上角的x,y距离),以此决定在图片2开始 ...

  6. Thinkphp3.2 cms之分类管理

    四.分类管理 <?php namespace Admin\Controller; use Think\Controller; class CateController extends Contr ...

  7. 8、Python语法之流程控制

    一 引子 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(用到if判断).循环结构(用到while与for) 二 分支结 ...

  8. day86:luffy:前端发送请求生成订单&结算页面优惠劵的实现

    目录 1.前端发送请求生成订单 1.前端点击支付按钮生成订单 2.结算成功之后应该清除结算页面的数据 3.后端计算结算页面总原价格和总的真实价格并存到数据库订单表中 2.优惠劵 1.准备工作 2.前端 ...

  9. Python替换字符串中的空格

    这是来源剑指offer的第二题,直接调用replace函数进行空格替换即可. 当我又想试试挨个字符比较进行替换时程序报错了: 错误原因是在python中字符串是一个不可变的数据类型,如果进行替换字符可 ...

  10. 5. Spark调优

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第五部分是讲的是Spark调优相关的知识点. 一.并行度调优 二.序列化格式优化 三.内存管理优化 四.Spark SQL性能 ...