博客广场

题解、比赛复盘与学习记录

文章 潘政勋 2026-8-17 16:20:10

8.17 日总

1 Grouping increases{ 1. 题意:有一组数组,规定一个数组中的惩罚值为数组中任意两个构成整个数组的子序列的正序下标:bi<bi+1.求整个数组惩罚值的最小值 2. 思路:对于正序下标的求解我们可以初始化两个最大值,以便于求解剩余的正序对有多少个,如果当前的值小于当前最小值,那么将其赋值,如果不是最小值那么说明我们找到了一对正序下标,an

17 0 0
文章 潘政勋 2026-8-16 15:56:15

8.16 日总

今天的题目主要涉及到最短路,区间DP,字符串哈希等多种算法 1 Hyperset{ 1. 题意:有n个卡牌,每个卡牌对应的信息有k种,其中包含”S”,””T”,”E”三种信息。我们规定,如果每三种卡牌中的信息都不相同或全都相同,那么这三张卡牌组成的集合为好集合,求最多有多少个好集合 2. 思路:Meta-set的解法与这题类似。我们可以枚举好集合中的任意两张

17 0 0
比赛总结 zhuyqi 2026-8-16 15:11:05

8.16总结

8.16总结 今天心情愉悦,又是AK的一天。 考试题目 T1 : Hyperset 这题本质是 SET 卡牌合法三元组计数。 给定 n 张互不相同的卡片,每张有 k 个位置,每个位置是 S/E/T。三张卡合法的条件是:对每一位来说,三个字符要么全相同,要么刚好是 S/E/T 各一个。 核心思路: 任意确定两张卡 a 和 b,如果它们想和第三张卡组成合法集合,

29 1 1
文章 潘政勋 2026-8-15 13:05:48

8.15 日总

今天的题目有一多半7月份都是做过的 1 Accidental Victory{ 1. 题意:有一组拳击手参加锦标赛,每个人之间都有对应的编号和筹码,筹码越大的人越能打败对手,而筹码相同的人有概率能赢。打赢对手能获得对方的筹码。求最终获胜概率不为0的选手编号 2. 思路:这题首先要先搞清楚什么时候获胜的概率为0.我们都知道如果一个人的筹码值最小,那么他永远不可

12 0 0
比赛总结 zhuyqi 2026-8-15 12:23:41

8.15 日总

T1 题目分析 n名选手各有若干筹码,进行n-1场比赛。每场随机选两人,筹码多的赢(相同则随机),赢家获得输家所有筹码。求哪些选手有非零概率夺冠。 核心观察 一个选手能否夺冠,取决于他能否(通过合理的比赛顺序安排)"吃掉"所有其他选手。由于比赛对手是随机选择的,只要存在一种可行的比赛顺序让该选手最终赢,他就有非零概率夺冠。 关键结论:筹码较小的选手们如果能联

20 1 0
文章 潘政勋 2026-8-14 21:37:23

8.14 大模拟

蒟蒻一句心里话,大模拟题真恶心 1 急诊就诊{ 1. 题意:有一个门诊,其中包含m个医生和k组操作: 1 A t id p k: 操作A,表示时刻t时有编号为id的病人约诊,优先级为p,治疗时间为k 2 C t id: 操作C,表示时刻t时有编号为id的病人请求取消预约,同时只有仍在等待的病人才可取消预约 3 Q t:操作Q, 表示当进行完时刻t以前的所有操

16 1 0
比赛总结 StArWaLk 2026-8-12 19:40:09

Day10

A Asya And Kittens:每次合并两个集合时新建一个父节点,左右儿子分别指向两个集合的根,并查集维护。最后得到一棵二叉树,DFS先左后右输出叶子编号,就是还原的原始序列。 code #include <bits/stdc++.h> using namespace std; const int N = 1.5e5 + 5; int n, head[

12 0 0
文章 潘政勋 2026-8-12 17:16:21

8.12 字符串综合

今天的题目主要涉及到的字符串的综合运用,以及双链表的用法,这里简单回顾一下 双链表:{ 概念: 可以兼顾前后的链表 //双链表的初始化 head = 0,tail=N-1;//头尾节点 r[head] = tail;//后一个的下标,俗称后继 l[tail] = head;//前一个的下标,俗称前继 idx = 1; //添加 e[idx]=x;//存入当前

15 0 0
比赛总结 zhuyqi 2026-8-12 15:29:03

8.12总结

8.12总结 T1 Asya and Kittens 题意 有 n 只小猫,编号 1 到 n,分别放在一排 n 个格子中(每个格子一只)。相邻格子之间有隔板,共 n-1 块。每天 Asya 观察到相邻格子里的两只小猫 x_i 和 y_i 想一起玩,于是拆掉它们之间的隔板,把两个格子合并成一个。 给出 n-1 天里每天的 (x_i, y_i),求一个合法的初始

14 0 0
文章 潘政勋 2026-8-11 20:17:12

8.11 基础算法综合

有本事就学死我(被后面两题气的直冒汗) 1 Alyone and spreadsheet{ 1. 题意:有一个二维的表格,现有q次询问,包含l和r,表示只保留表格中的第l行到第r行,请你判断区间中是否有至少一列满足元素不递减排列,如果有,输出YES,否则输出NO 2. 思路:因为我们只要求判断是否有一列满足即可,因此我们可以先将每一列的最长不递减子序列的长度

15 0 0
比赛总结 zhuyqi 2026-8-11 17:33:21

8.11总结

8.11 今天主要是把几个算法融合在一起考,有两道题在考场上没想到~~(感觉自己变唐了)~~ T1 Alyona and Spreadsheet 题意 给定一个 n 行 m 列的整数矩阵(1 ≤ n·m ≤ 100000,1 ≤ a[i][j] ≤ 10^9)。 定义第 j 列是非递减的,当且仅当 a[i][j] ≤ a[i+1][j] 对所有 i 成立。

14 0 0
比赛总结 陈俊霖 2026-8-10 21:01:32

8月Day8(未完成)

A.Longest k-Good Segment 核心思路 采用滑动窗口(双指针)维护一个合法区间,保证区间内不同元素个数不超过 kk。枚举右端点,若加入新元素后不同元素个数超过 kk,则移动左指针缩小区间,直到合法。在每次合法时更新最长区间的左右端点。 具体步骤 读入 n,kn,k 和数组 aa(下标从 0 开始)。 初始化左指针 left = 0,不同元

15 0 0
文章 潘政勋 2026-8-10 20:29:22

8.10 区间覆盖问题

1 Longest K-good Segment{ 1. 题意:我们规定,如果一个数组中的某一个区间内满足不同的数的个数超过k个,则称这个区间为K-good区间。请你求出最长的k-good区间,并保证区间内不同个数的数字不超过m个 2. 思路:我们需要定义两个指针来维护最大区间长度。定义一个cnt数组,如果出现不同数字,则cnt[num[i]]++,如果一开

14 0 0
比赛总结 zhuyqi 2026-8-10 17:16:01

8.10总结

8.10总结 T1 Longest k-Good Segment 链接:Longest k-Good Segment - 题目详情 - QY code 题意 给定一个长度为 n 的整数数组 a,定义连续子段(segment)为数组中一个或多个连续的元素。如果一个连续子段中包含的不同元素个数不超过 k 个,则称这个子段为 k-good 子段。 请你找出任意一个

14 0 0
比赛总结 zhuyqi 2026-8-10 0:56:16

8.9 Codeforces Div.2 A-D 总结

8.9 Codeforces Div.2 A-D 总结 怎么说呢,今天我没打后面两题的原因是做不出来了(总之就是太菜了)。 A. Three Numbers on the Blackboard 题目:给定三个非负整数 a,b,c,每次可任选一个数替换为另外两数之和。求任意次操作后三元组的最小极差(最大值 − 最小值)。 结论:排序为 x ≤ y ≤ z,答案

14 0 0
比赛总结 StArWaLk 2026-8-9 17:49:28

Day7

t1 Move Brackets:遍历括号串,遇到左括号计数器加1,遇到右括号时若有未匹配的左括号则匹配掉(计数器减1),否则这个右括号无法匹配,答案加1。最终答案就是需要移动的右括号数量。 #include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false)

17 0 0