暑假训练总结

日期
题目
题意 题解
0704T1 MooTube 给出一棵带权树,多个询问,问 \(v_i\) 连接的点的距离 \(\ge k_i\) 的边数 将边权和询问从大到小排序,并查集统计答案
0704T2 atlarge 给出一棵根节点为 \(k\) 的树,Bessie初始在根节点,Bessie和农民的移动速度相同,你需要在叶子节点上放置最少的农民,使得Bessie不能在不遇到农民的前提下走到叶子节点 先在每个叶子节点上放一只农民,让农民跟Bessie一起走,最后判断Bessie一共最先碰到几只农民(可以不用一步一步走,农民和Bessie相遇的位置即为路径长度的一半)
0704T3 Stamp Painting Bessie想拿 \(M\) 种颜色的长为 \(K\) 的图章涂一个长为 \(N\) 的画布,假设他选择涂一段区间,则这段区间长度必须为 \(K\),且涂完后该区间颜色全变成图章颜色。他可以随便涂,但是最后必须把画布画满。问能有多少种最终状态 首先这题不能直接算方案数,要将全部的方案数减去不合法的方案数,不合法的方案即为没有一个长度至少为 \(k\) 的相同颜色的块。设 \(dp_i\) 为到 \(i\) 的不合法方案数,则 \(dp_i=\begin{cases} dp_{i-1}\times m & i\le k \\ \sum_{j=i-k+1}^{i-1} dp_j\times (m-1) & k<i\le n\end{cases}\)。最后答案即为 \(m^n-dp_n\)
0705T0 Hello World 一行输出 hello world 史上最难题目
0705T1 牛宫 给出一个 \(n\times m\) 的数表,你要选出一块矩阵使得面积最大且数字和 \(> 0\) 预处理出二维前缀和,在暴力枚举矩形的左上角和右下角
0705T3 最小密度路径 给出一张加权有向无环图,有多个询问,每个询问要求算出从 \(X\)\(Y\) 的一条路径,使得路径上边的权值和除以边的数量最小 因为点的数量很少,所以参考 floyd 的思想处理出答案
0708T1 lala买面包 有多个询问,每个询问给出 \(a\),问能否表示为 \(x^p\) 暴力枚举 \(p\)(注意精度问题)
0708T3 lala修路 有一个 \(n\) 个点的空图,每秒会加入一条无向边,有多个询问,每个询问问第几秒能从点 \(x\)\(y\) 若两个点已经能互相到达,那么再加入边就没有意义了,所以最后这个图一定是森林。考虑把加入的时间当作边权,那么最少到达的时间就是路径上的最大边权,使用并查集和 lca 即可
0709T2 在秋叶市场爆街机 给出 \(n,m\),问有多少数对 \(a,b\) 满足 \(0<a\le n,0<b\le m,(\sqrt{a}+\sqrt{b})^2\in\mathbb{Z}\) 找到 \(a\times b=k^2\)\(a,b\) 即可
0709T3 在去玫瑰之明星的路上大战银镜兽 给出一棵树,树上有 \(m\) 条额外的连边构成一个图。问有多少种方案使得删除一条树上的边和一条额外的连边能将原图分成两个连通块 如果 \(a,b\) 之间存在一条附加边,那么将 \(a\)\(b\) 的路径上的边的覆盖数 \(+1\)。答案即为覆盖数为 \(0\) 的主要边数量 \(\times m+\) 覆盖数为 \(1\) 的主要边数量
0711T1 团子大家族 \(n\) 个数,每个数有 \(a_i\) 个,你需要用这些数构造一个长 \(\sum a_i\) 的序列,使得相邻的两个数不同 每次选择数量最多的数字和次多的数字加入序列
0711T2 主线剧情 给出一个无向图,你需要给每条边定向成为 DAG 且最长路最短 这题可以dfs暴力,因为数据过水,加上随机化后可以卡过,甚至比正解还快
0714T1 翻转木块 有疑问请自行找游戏游玩 BFS模板,但是很恶心。在这里我定义状态为坐标+方向(方向为0代表竖着,为1代表朝向上方,为2代表朝向左边)
0714T2 箱子统计 给出一个 \(n\times m\) 的数字矩阵,有多个操作,每个操作会询问你一个矩形的数字和或将一个位置减少 \(m\),另一个位置增加 \(m\) 二维树状数组/线段树模板题,在这不多解释
0715T1 磁力阵 给出一个如下图的方阵 ,且初始已经有一些边被移除,问最少移除多少边才可以使方阵不含正方形 今天的题目全是码力题,这题dfs枚举每条边是否删除并判断是否会出现正方形,但是会TLE。正解需要估价函数优化,但是我凭借着随机化又卡过了这题
0715T2 虫洞 有一条数轴,你的初始位置为 \(0\),你需要到达 \(w\),每次可以移动不超过 \(s\) 的距离,数轴上有一些虫洞,如果移动后在位置 \(B\),那么会被传送到 \(E\),问最少要多少时间才能到达目的地 将虫洞周围的点求出距离建出来一个图再跑 BFS
0715T3 电路维修 给出一个电路板,如图: 你可以旋转方块,问最少旋转多少方块能使电路连通 对正方形的对角线建边,若两个点连通,则边权为 \(0\),否则为 \(1\),再跑最短路,答案即为最短路长度
0725T1 能量球 有多个询问,每个询问给出一个正整数 \(N\),每次操作可以将 \(N\) 变为不为 \(N\) 的一个因子,问最多能执行多少操作以及最多操作的前提下有多少种方案 答案为 \(N\) 的质因子数量除以质因子指数之积
0725T2 编年史 问一个日期是星期几 xxs模拟题,不如CSPS的儒略日一根毛
0725T3 SRETAN 问第 \(k\) 大的只含有 \(4\)\(7\) 的数 二进制思想,将 \(4\) 看成 \(0\)\(7\) 看成 \(1\)
0726T1 原根 求模 \(m\) 的所有原根 数据范围很小,暴力即可
0726T2 道路覆盖 给出一个序列 \(a\),你可以花费 \(c_i\)\(i\)\(\min{(i+k+1,n)}\) 增加 \(e_i\),你的花费不能超过 \(m\),问 \(\min\{a_i\}\) 的最大值 最大值考虑二分,使用状压dp优化即可
0726T3 迷宫花园 给出一个迷宫,左右移动耗费 \(1\) 的时间,上下移动耗费 \(v\) 的时间,给出到终点的最短时间 \(t\),问 \(v\) 的值 直接bfs,\(v\) 的值即为 \(\frac{t-左右移动的步数}{上下移动的步数}\)
0727T2 Time 给出一个序列 \(a_i\),每次可以交换两个元素,问多少次操作可以使序列满足 \(a_1\le a_2\le ... \le a_k\ge a_{k+1}\ge ... \ge a_n\) 最小值一定在序列的开头或结尾,移动后的其他值同理,贪心移动每个值即可
0727T3 Cover 有一个 \([1,n]\) 的区间,你有 \(m\) 条线段,每条线段有 \(l,r,v\) 三个值,代表线段的位置和价值,且线段之间只有包含和不相交的关系,问当 \(k=1,2,...,m\) 时,一个位置最多被 \(k\) 条线段覆盖时最大线段价值之和 子区间之间只有相互包含和不交的关系,因此它们的包含关系会构成一棵树。\(f_{i,j}\) 表示在 \(i\) 为根的子树中点被覆盖的最多次数为 \(j\) 的最优答案,则 \(f_{i,j}=\max{(f_{i,j},f_{i,j-1}+a_i)}\)。可以构造差分表优化
0731T1 数据库 给出多次操作,每次操作加入一个字符串,若字符串出现过,则在字符串后面加入一个最小的正整数 map模板题
0731T2 社会服务 一条路左右有 \(n\) 个老人,你扶一个老人过马路的时间为 \(t\),你过马路的时间也是 \(t\),老人过马路后要休息 \(x\) 的时间,老人要过两次马路,问你最少要花的时间 分类讨论,扶完一轮后考虑过马路扶对面的老人或等这边的老人休息完再扶
0801T1 LJY的机器人 给出一个指令序列,使机器人执行最多次指令后停在原地 贪心地使执行上下指令和左右指令次数相同且最多
0801T2 LJY调代码 给出一个由ABC组成的字符串,每次操作可以将为ABC的子串替换成BCA,问最少操作次数使得字符串不含为ABC的子串 考虑一段A...ABC的子串,易得经过 \(k\) 次操作后(\(k\)A个数),该子串会变成BCA...A,时间复杂度 \(O(n)\) 可以通过
0801T3 LJY与铜制人偶 对于一个序列 \(a\),你需要插入三个数使得 \(a\) 的加和等于两倍异或和 先插入原序列的 异或和 使得异或和等于 \(0\),再插入原序列的 异或和+加和,最后插入 \(0\)
0801T4 LJY的任务计划 给出长度为 \(n+1\) 的值域为 \([1,n]\) 的序列 \(a\),且每个数至少出现一次,问对于从 \(1\)\(n+1\)\(k\) 有多少个长度为 \(k\) 的本质不同的子序列 记重复的数第一次出现在 \(l\),第二次出现在 \(r\),则 \(ans_k=C_{n+1}^k-C_{n+l-r}^{k-1}\)
0801T8 Good Multiset 给出一个序列使得不论删去哪个数都可以将剩下的数划分成两个集合使得长度相等且序列和相等 满足条件需要使得 \(n\) 为奇数且原序列元素都相同
0802T1 Strong Password 给出一个由小写字母组成的字符串,定义字符串 \(s\) 的贡献 \(= \sum_{i=0}^{s.length()-1} \begin{cases}2&i=1\lor s_i\neq s_{i-1}\\1&s_i=s_{i-1}\end{cases}\)。你需要插入一个字符使得贡献最大 在相同的两个字符之间插入一个字符(如果有)
0802T2 Make Three Regions 对于一个 \(2\times n\) 的连通网格,每格为空气或墙。问有多少种方案使得堵住一个位置后变为 \(3\) 个连通区域 只有 两种可能会增加一种方案
0802T3 Even Positions 给出一个只有偶数位置有括号的残缺括号序列,定义一个 RBS 的贡献为括号对之间的距离之和,问补全后的最小的贡献 (\(+3\))\(+1\)
0802T4 Maximize the Root 给出一棵根为 \(1\) 的有根点带权树,你可以进行任意次操作,每次将 \(a_v+1\),且使 \(v\) 的子树上的点 \(a_u-1\),每次操作后权值不能为负,问根节点的最大权值 dfs。若子树的最小权值比该节点权值大,则平均分配权值大小
0802T5 Level Up 初始等级为 \(1\) 的小M依次与 \(n\) 个怪物战斗。若小M的等级大于该怪物的等级则怪物会逃跑,小M打 \(k\) 个怪就会升一级。有多次询问问若小M等级为 \(l\),是否会与第 \(x\) 个怪物战斗 树状数组预处理出每个怪物逃跑时小M的最低等级
0803T1 制造零件 有两台机器,第一台机器需要 \(a\) 分钟启动,接下来每分钟会制造 \(x\) 个零件,第二台机器需要 \(b\) 分钟启动,接下来每分钟会制造 \(y\) 个零件,两个机器不能同时位于启动过程中。共有 \(k\) 分钟,问最多能制造多少个零件。 考虑先启动第一台还是第二台
0803T2 Alice Game Alice和Bob在玩游戏,Alice将首先进行操作,每次可以消灭一个连续的大小不超过 \(K\) 的怪物序列或选择连续的 \(K\) 个怪物进行消灭将原序列分为两个非空序列 \(n=0\lor(n\bmod(4\times k+2))=k+1\) 时Bob获胜,否则Alice获胜
0803T3 Binary Number 给一个二进制数,每次可以反转一个区间(不是翻转),问 \(k\) 次操作后的二进制数的最大值 特判 \(len=1,k=1\),再正常贪心
0803T4 拆分表格 给出一个 \(n\times m\) 的数表,你需要切一刀使两部分的每部分之和最小 数学题,对于每行每列快速算出每部分之和(顺便一提这题是tmd 普及-
0804T1 A-B 给出 \(a\) 数列 和 \(c\),问 \(a\) 中有多少对数使得它们的差 \(=c\) 用 map 存一下 \(a_i\) ,再统计 \(a_i+c\) 的数量(要特判 \(n=0\)
0804T2 吉波那契数列 定义 \(G_0=1,G_1=t,G_n=G_{n-1}+G_{n-2}\),有多个询问,给出 \(i,G_i,j\),求 \(G_j\) \(G_i=F_{i-1}t+F_{i-2}\)\(F\) 为斐波那契数列)
0804T3 魔塔 https://www.luogu.com.cn/paste/ht2bgynu 这题有点问题,但是可以dfs+随机化过掉
0804T4 对战 给出序列 \(a\),若 \(\min(a_i,a_k)\le a_j \le\max(a_i,a_k)\)\(a_i<a_j<a_k\),则算一种方案,问有多少不同的方案 离散化后树状数组统计答案
0804T6 City Upgrading 给出一棵树,覆盖节点 \(u\)\(u\) 的子节点 \(v\) 需要花费 \(a_u\),问覆盖整棵树的最小花费 树形dp,定义 \(dp_{i,0}\) 表示 \(i\) 未被选,\(dp_{i,1}\) 表示 \(i\) 被其他节点覆盖,\(dp_{i,2}\) 表示选了 \(i\)
0805T1 平方差 找到两个自然数 \(x,y\) 使 \(x^2-y^2=n\) 判断无解,在暴力枚举可过,也可套公式
0805T2 超速 二分
0805T3 业绩评比 给出序列 \(a\),定义 \(S_i\) 为连续 \(d\) 个不同的 \(a_i\) 数量之和,求 \(S_{1\sim n}\) 若不考虑不同,\(S_i=i\times (n-i+1)\),若有两个相同的数,则 \(S_{(pos_r-pos_l+1)}\sim S_n\) 会减少,使用二维差分可过
0806T1 美术展览 给出序列 \(a,b\),你需要选出 \(k\) 个数使 \(\sum_{i=1}^k b_i - (a_{max}-a_{min})\) 最大 按照 \(a\) 的大小排序,对 \(b\) 取前缀和,倒序枚举 \(i\),则mx=max(mx,a[i].b-a[i].a),ans=max(ans,mx+(a[i].a-a[i-1].b));
0806T2 团子制作 给出一个由 R G W 组成的表格,问你能取出多少串 RGW dp
0806T3 Card Game \(n\) 个堆,第一个堆有 \(k\) 张递减的纸牌,每次可以选择一个非空堆的顶部纸牌并将其移动到另一个堆的顶部且堆叠的纸牌从底部到顶部依次递减和连续,给出 \(n\),问最大的 \(k\) 找规律得 \(k=2^{n-1}-1\)
0806T4 String Problem 给一个字符串 \(S\),选出 \(k\) 个相同字母子串 \(s_i\),问 \(\sum_{i=1}^k len(s_i) -k\) 最大是多少 原题题面很长,但是看懂了就是沙比提
0807T1 math 给出 \(A,B\),求满足 \(\begin{cases}x^2+y^2=A\\xy=B\end{cases}\) 的整数 \(x,y\) \((x+y)^2=A+2B,(x-y)^2=A-2B\)
0807T2 Bracket 给出一个偶数长度的括号序列 \(s\),你每次可以修改一个位置,问至少修改多少个位置才能使得该括号序列成为一个合法的括号序列。 顺序枚举,当括号序列不合法时将 ) 改为 (,最后再将多余的 ( 改成 )
0807T3 Bitmask 给出序列 \(x\),求 \(\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n (x_i \land x_j)\times(x_j \lor x_k)\) 枚举 \(j\) 求出对应的 \((x_i \land x_j)\)\((x_j \lor x_k)\),最后乘起来
0807T4 Sequence 给出序列 \(a\),每次可以选择一段区间,将该区间整体加一,问操作完后最长不下降子序列的长度 \(dp_{i,j}\) 表示进行了 \(j\) 次操作,每次操作选择的区间左端点最小为 \(i\),则 \(dp_{i,j}=\max(dp_{x,y}+1) \ (x\le i,y\le j,a_x+y \le a_i+j)\),再使用树状数组优化
0808T1 冲浪 模拟,分类讨论
0808T2 三角 给出序列 \(a\),问能选出多少对长度为 \(3\) 的子序列使 \(x<y<z,a_x\times k=a_y,a_y\times k=a_z\) 枚举 \(y\) 求出满足条件的 \(x,z\),再把数量相乘起来统计答案
0808T3 不等式 给出 \(g,l\)\(n\) 为完全平方数,满足 \(g\times l=n\) ,且 \(a,b\) 都是 \(g\) 的倍数,问 \((a+b)_{min}\)\((a-b)_{max}\) \((a+b)_{min}=2\times\sqrt{g\times l},(a-b)_{max}=g+l\)
0809T1 (不是)强连通分量 \(n\)S\(m\)c ,并且一个 S 也可以由 \(2\)c 组成,求一共能组成多少个 Scc 先组成最多的 Scc,在把 c 组合成 S 合成 Scc
0809T2 吃牌者 有一堆牌,每张牌上有一个数字。每次可以取出其中 \(3\) 张,丢掉数字最大的和数字最小的牌,把中间那张再放回牌堆。 要求最后所有剩余牌上的数字互不相同,求最多能剩几张牌。 模拟题,模拟即可
0809T3 序列 有一个由 \({1,2,...,n}\) 组成的无限长序列,且第 \(n\) 个及以后的数字和 \(i\) 后面的 \(a_i\) 个数字相同,问不同序列的数量 \(dp_i=dp_{i-1}+\sum_{j=1}^{i-3} dp_j+n\times (n-1)+3-i\)
0809T4 选数 给一个序列 \(a\) 从中选最多的数满足任意两个数之积不是完全立方数 首先每个数的质因数指数可以 \(\bmod 3\),然后运用暴力思想,枚举 \(i\)\(i\times i\)(冲突的数),再特判 \(1\)稍微卡一卡可以过
0809T7 hby喜欢玩硬币 找到两个数 \(x,y \ (x,y\le 2,x\times y=n^2+1)\),使得 \(\lvert x-y\rvert\) 最大 运用埃式筛思想对于每个 \(n\) 求出对应的答案
0815T1 造花(简单版) 给一棵树,你要删除这棵树上的一个点和连向这个点的所有边使得剩下两个菊花图 删去的点度数一定为 \(2\),再检查删掉这个点后是否为两个菊花图
0815T3 飞车狂飙 给出一段修建铁路的指令,问你修建出来的铁路是否重叠或成环 模拟题
0815T4 不醒人室 \(n\) 节课,\(m\) 个小憩时间段。每次小憩可以保持接下来二倍时间不困,但超过时间就会困,问会不会在某节课睡觉或困 模拟题,对于上课时间动态枚举休息时间并判断
0815T5 交通管控 \(k\) 个路口,\(n\) 个操作杆。操作杆只有使用和不使用两种状态。使用一个操作杆,可以对所有路口的红绿灯产生影响。目前所有路口都是绿灯,问对于所有路口红绿灯的情况,有多少种使用操作杆的方法能达成这样的状态 枚举每个操作杆考虑会增加多少方案,(若现有的方案为 AAA 1ABB 2,在使用 +0- 后变为 AAA 1ABB 2BAC 1BBA 2
0816T1 解方程! 找到两个正整数 \(x,y\) 使 \(x^2-y^2=n\) 同 0805T1,多特判几种情况即可
0816T2 毕业相册 给出序列 \(a\),每次可以选一个长度不超过 \(3\) 的区间,且 \(\max\{a_j\}-\min\{a_j\}\le 40-len\times 10\),问有多少种不同的方案 \(dp[i]=max(dp[i-1],dp[i-2]\text{(满足条件时)},dp[i-3]\text{(满足条件时)})+1\)
0816T3 DQY的礼物 给出长度为 \(a,b,c,d\) 的四根棍子,你可以拆分棍子,使得用完整的棍子组成的矩形面积最大 分类讨论。1.通过打断一根棍子获得所有四个侧面。2.每一面都从一根棍子获得。3.从一根棍子获得两个侧面,从第二根棍子获得两个侧面。4.从一根棍子获得三面,从第二根棍子获得一面。5.一根棍棒可得到两个侧面,另外两个棍棒可得到另外两个侧面。
0816T4 DQY的探险 给出一个 \(n\)\(m\) 列的数字矩阵,你要堵住一个数字,使得从左上角到右下角的路径获得的最大价值价值最小 计算左上角到右下角的价值和右下角到左上角的价值,再斜线 dp
0818T1 DQY的纪念碑 有一个用 \(1\times k\) 的地砖铺成的广场,且以某个地砖的左下角 \((0,0)\) 为原点。给出一个所有角都是 \(90°\)\(270°\) 的凸多边形,你需要把它放置在广场上,并拆除所有覆盖的地砖,问最少拆除的地砖数量 很恶心的模拟题,先计算出不移动时的数量,在对于每一行考虑向右移动多少格会多拆除一个或少拆除一个
0818T2 Divisors 给出 \(m\) 个不同的正整数 \(a_i\),对 \(0\sim m\) 的每个 \(k\) 计算在区间 \([1,n]\) 中有多少正整数是 \(a\) 中恰好 \(k\) 个数的约数 只有 \(a_i\) 的约数才会对 \(a_i\) 产生贡献,所以预处理出每个 \(a_i\) 的约数再统一计算答案,\(k=0\) 时即为 \(n-\sum ans_i\)
0819T1 买汽水 \(n\) 个物品,每个物品 \(a_i\) 元,你有 \(m\) 元钱,问最多能花掉多少钱 背包问题模板,但是因为 \(n\) 很小,\(m,a_i\) 很大,所以不能直接套用,vector 模拟即可
0819T2 奶牛编号 问第 \(n\) 大且有且仅有 \(k\)\(1\) 的二进制数 正解为 dp,但是dfs+亿点点剪枝可以过
0819T3 宠物之战 给出一棵树,求出所有至少一个端点为叶节点的有向路径的权值和的和 可以计算每条边被走过的次数,则对于每条边被计算的次数是这条边分开的两棵子树中左边的节点数乘右边的叶子数加上右边的节点数乘左边的叶子数
0819T4 独木桥 在数轴上有 \(n\) 个点 \(k_i\),每个点每秒会朝正方向或负方向移动 \(1\) 步,当两个点相遇时会改变方向,有多次询问,问 \(t_i\) 秒后 \(k_i\) 的位置 首先每个人位置的排名总是固定的,所以可以二分答案。注意到同向点之间位置关系不会变,因此初始排名为在两个方向点集中的初始排名之和
0820T1 纸盒子 给定一个盒子的体积 \(V\),且长宽高均为正整数,问盒子的最小表面积 暴力枚举长宽,计算表面积
0820T2 Chmax Rush! 给定一个全为 \(0\) 的序列,有 \(q\) 次操作,每次操作可以从 \(p_i\) 向左或向右将所有的位置更改成 \(v_i\),但是该位置原来的数字不能比更改的数字大,问操作的方案数或无解 考虑任意两次操作之间是否会冲突或固定,最后的答案即为 \(2^{(\text{不固定的操作数量})}\)
0820T3 \(\lfloor(\frac{A_i}{2^k})\rfloor\) 你需要构造一个长度为 \(n\) 的序列 \(a_i\),使得 \(\lfloor(\frac{A_i}{2^k})\rfloor\) 构成的不同整数的个数最多 该操作本质上是将二进制数右移,所以在构造时我们要尽量让该数的二进制前几位不同(例如 10000,11000,10100,11100,10010
0821T1 乘积最大 将一个序列分成俩个部分使得两部分的和之积最大 前缀和暴力枚举
0821T2 规划区域 考虑暴力枚举 \(a,b,c\),再判断方案是否可行
0821T3 最大价值 给出序列 \(a\)(元素可能为负),你要从中选出长度不超过 \(l\) 的两段子序列使得和最大 先正序,倒序预处理出最大子序列和,枚举分界点 \(i\),答案即为前 \(i\) 个数的最大子序列和加后 \(n-i\) 个数的最大子序列和
posted @ 2024-08-22 15:36  WuMin4  阅读(55)  评论(1编辑  收藏  举报