题意:你和小 BB 准备玩 N(N100000)N(N\le 100000) 回合的石头剪刀布,你已经预测出小 BB 未来 NN 回合的手势,但你只愿意在过程中改变 K(K20)K(K\le 20) 次手势(最开始手势任意),请问你最多能赢多少场。

一道线性 DP。

我们设 fi,j,kf _{i,j,k} 表示前 ii 次改变了 jj 次手势,第 ii 局手势为 kk 能赢的最多局数(k=0k=0 为石头,k=1k=1 为剪刀,k=2k=2 为布)。

题意:你今天需要上 nn 节课,如果你在第 ii 堂课睡觉或不睡觉,减少和增加的疲劳度分别为 downi,upidown _{i},up _{i},你的初始疲劳值为 ss,你给自己定下一个规矩:如果在某主科的课上睡了觉,那么下堂这科课就不能睡觉。cic _{i} 代表第 ii 节课的课程,只有 ci=7c _{i}=7 时第 ii 节课才不为主科课。假设经过了这 nn 节课,你没有死,请问你对疲劳值的忍耐极限至少是多少(如果存在某节课后疲倦值)?

题意:一棵 nn 个节点的树,每条边权值为 11,现在每个叶子节点处都有一个人,在 ss 节点存在一个基地。现在你可以选择在任意没有基地的节点建造基地,满足 kk 秒之内每个人都能到达基地,每个人的移动速度都是 11 个单位每秒,请问建造最少的基地数是多少?

一道暴力贪心题目。

因为 ss 点已经存在一个基地,所以我们把 ss 点设为根节点进行深搜,统计出每个节点的深度和父亲节点。

题意:一个数列 sss1=am1modp,s2=am2modps _1= a ^{m _1}\bmod p,s _2= a ^{m _2}\bmod p,满足 si=si2α×si1βmodp(i3)s _{i}=s _{i-2} ^{\alpha}\times s _{i-1} ^{\beta}\bmod p(i\ge 3),现在已知 a,m1,m2,α,β,p(a<p5000,1α,β,i,m1,m21018)a,m _{1},m _{2},\alpha,\beta,p(a<p\le 5000,1\le \alpha,\beta,i,m _{1},m _{2}\le 10 ^{18}),求 sis _{i}K(K1000)K(K\le 1000) 个询问。

题意:有一个 n×mn\times m 的地图,地图的每一格为山地(用 HH 表示)或平原(用 PP 表示),在每一格平原地形上最多可布置一支炮兵部队(山地上不能部署),一支炮兵部队在地图上的攻击范围如下图所示(蓝色区域为炮兵部署位置,红色区域为可攻击范围):

P H P\color{red} P H P
P H H\color{red} H P H
P\color{red} P H\color{red} H P\color{blue} P H\color{red} H P\color{red} P
H H P\color{red} P H H
H P P\color{red} P H H

题意:一个一排 NN 个格子的纸,你要用一个宽度为 KK 个格子的图章和 MM 种不同的颜色在上面涂色。每次把纸上连续 KK 个格子染上同种颜色(会覆盖掉之前的颜色),那么最后纸上的颜色序列有多少种不同情况?

一道容斥 DP 题。

易知最后的纸上的颜色序列肯定会有至少连续 KK 个格子为相同颜色,要计算不同的方案数,我们采用正难则反的思想,先算出总方案数,再减去不管怎样都小于 KK 个格子为相同颜色的方案数即可。

题意:一棵 NN 个点的树,每条边都有一个权值,设任意两点的相关值为两点路径中最短边的权值。现在有 QQ 个询问,每次询问 k,vk,v,表示查询与节点 vv 相关值不小于 kk 的点的个数。

一道并查集加离线做法的题目。

我们先把所有边按权值从大到小排序,再将所有询问的 kk 从大到小排序,然后用两个指针 i,ji,j 分别维护询问和边,对每个询问,把比 kk 大的所有边都加入进来,把这些边的端点用并查集合并,同时用一个数组记录并查集中各个集合的元素数目,那么查询 vv 所在的集合的元素数目,减 11(除去自身)便是这个询问的答案。

题意:一个有 N(N100000)N(N\le 100000) 位数字的整数,如果有不小于 KK 个数位完全相同,那么这个数被认为是漂亮的。现在给你一个 NN 位数字的数,改变其中的一些数字使它变漂亮,改变一位数字的花费为改前和改后数字差的绝对值。现在求出改变的最小花费,同时给出字典序最小的修改方案。

一道贪心题。

题意nn 个任务排成一个序列在一台机器上等待完成(顺序不得改变),这 nn 个任务被分成若干批,每批包含相邻的若干任务。从零时刻开始,这些任务被分批加工,第 ii 个任务单独完成所需的时间为 tit_i。在每批任务开始前,机器需要启动时间 ss,而完成这批任务所需的时间是各个任务需要时间的总和(同一批任务将在同一时刻完成)。每个任务的费用是它的完成时刻乘以一个费用系数 fif_i。请确定一个分组方案,使得总费用最小。

题意:一个数列 aia _i,多次询问,每次询问一个区间 [l,r][l,r],求区间内相同的两个数的最近距离。

一道比较难的题。

这道题要用线段树来做,还是算贡献的思想。要求 llrr 的区间内两个相同的数的最近距离,我们可以建立两个结构体,一个存储数列中所有相同的两个数的编号,另一个则存储问题的区间。