摘要: ## 思路 我们已经得知每盏灯的初始状态和哪两个开关控制它。 首先分类讨论: 如果最开始这盏灯是开着的,那么这两个开关应该做出同样的操作,即要么全按,要么全不按。 如果最开始这盏灯是关着的,那么这两个开关应该做出不同的操作,即一个按一个不按。 转化一个思路,就变成了有 $m$ 个数,其中有 $n$ 阅读全文
posted @ 2023-08-22 21:32 One_JuRuo 阅读(16) 评论(0) 推荐(1) 编辑
摘要: ## 思路 定义一个数组能分为若干份,每一份都是 $4,8,15,16,23,42$ 的前缀的数组是 **半优秀** 的。 容易发现只有满足以下性质的数组才是 **半优秀**: 令 $j$ 在数组的 $[1,i]$ 中出现的次数为 $num_{i,j}$,对于每一个 $i(1\leq i\leq n 阅读全文
posted @ 2023-08-22 20:15 One_JuRuo 阅读(8) 评论(0) 推荐(0) 编辑
摘要: # 洛谷 P9391 红草莓 ## 写在前面 有超详细证明qwq! 这道题其实不难,你的感觉多半是正确的,但是证明有点麻烦,所以这篇题解,我就准备好好证明一下一些结论,所以有点长(也很基础)。 ## 核心思想:模拟 对于一个 $n$,每个 $a$ 可以模拟其会染色的珠子编号,即 $0,a,2a,3a 阅读全文
posted @ 2023-08-22 20:01 One_JuRuo 阅读(37) 评论(0) 推荐(0) 编辑
摘要: ## 思路 这道题可以改序列的 $k$ 个数,问有多少个数字可以变成众数。 那么我们可以检查每个数字,来判断这个数字是否可以在序列被更改后作为众数。 从最优的思路出发,我们每次肯定是把数量最多的一个数字变成想要的数字,这样才能保证进行的操作最少,但是需要考虑的是原序列出现最多次数的数字可能不止一个, 阅读全文
posted @ 2023-08-22 20:00 One_JuRuo 阅读(15) 评论(0) 推荐(0) 编辑
摘要: # 题目大意 在元素互不相同的数列 $a$ 中选出一个长度为 $m$ 的元素互不相邻的子列,使得子列的极差最小。 # 思路 爆搜、$dp$ 肯定是过不了的,所以我们考虑固定某个值,赛时想到了固定最大或者最小值,然后找到另一个值,但是除了 $dp$ 没想到好做法,比赛结束了才知道正解居然是同时固定最大 阅读全文
posted @ 2023-08-22 19:58 One_JuRuo 阅读(18) 评论(0) 推荐(0) 编辑
摘要: ## 思路 首先想到暴力建边跑最小生成树,但是显然会 TLE。 所以思考有没有时间复杂度更低的做法,考虑到最小生成树是每次取最短的边,所以我们也可以先考虑较短的边。 首先最短的边一定是某一列或者某一行(或者若干列和行),所以我们取边,也应该是一行一行或者一列一列的取。 但是有些时候这样取,或构成环, 阅读全文
posted @ 2023-08-22 19:35 One_JuRuo 阅读(9) 评论(0) 推荐(0) 编辑
摘要: ## 思路 考试的时候打死没想出来,一直在想暴力和质因数分解,我实在是太弱了,比赛后看了官方题解才恍然大悟,于是来~~蹭~~写篇题解。 首先是一些特殊点: 1. 当 $n$ 是偶数时,显然 $x$ 可以取 $1$,这样 $\gcd$ 就都是 $1$,然后随便平分就好了。恭喜你,你获得了 $2$ 分。 阅读全文
posted @ 2023-08-22 19:34 One_JuRuo 阅读(41) 评论(0) 推荐(0) 编辑
摘要: ## 思路 这道题最开始没发现数列必须是 $1,2,3,\cdots,n$,然后直接交了个输出 $n$ 遍 $p$ 的代码。~~我真的好蠢啊~~ 后面才发现这一点,于是开始思考,首先从 $p$ 比较小的情况。 如果 $p$ 是 $1$ 的话,那显然直接输出 $1,2,3,\cdots,n$ 就好了。 阅读全文
posted @ 2023-08-22 19:34 One_JuRuo 阅读(52) 评论(0) 推荐(0) 编辑
摘要: ## 思路 首先分析一下操作 $2,3$。 对于操作 $2$,容易发现如果 $k$ 相等,就只可能是平行或者重合,显然不满足,那么答案就是总剩余直线数减去 $k$ 相同的直线数。 对于操作 $3$,发现只有平行的直线不会被删去,也就是只有 $k$ 相同而 $b$ 不同的直线不会被删去。 如此一来,这 阅读全文
posted @ 2023-08-22 19:33 One_JuRuo 阅读(22) 评论(0) 推荐(0) 编辑
摘要: ## 思路 首先我们可以肯定的是,无论如何变化,答案最多比原序列的连续 $T$ 的个数多 $2$。 理由很简单,对于 $...BT...TB...$,最好的可能就是前后两个 $B$ 可以变成 $T$,因为只可能是 $BTTB$ 变成 $TBBT$,所以变了以后再外面就一定是 $B$ 了,且无法再变。 阅读全文
posted @ 2023-08-22 19:33 One_JuRuo 阅读(14) 评论(0) 推荐(0) 编辑
摘要: ## 思路 ### Step0.骗分 显然,题目中的 $c_1,c_2$ 就是为了送分,如果比赛中没有思路,倒是可以直接输出两个 $0$ 先得到 $2$ 分,聊胜于无。 ### Step1.暴力不出奇迹 显然第一个想到的是暴力,枚举 $k$,容易观察得出,若一次增加 $k$ 而 LCS 不变,则再增 阅读全文
posted @ 2023-08-22 19:32 One_JuRuo 阅读(12) 评论(0) 推荐(1) 编辑
摘要: ## 思路 刚看到还被吓了一跳,以为又是什么神仙题目,细想了一下觉得有做头。 ### Step1.不算很好的解法 首先想到左下一个右上一个,就可以套一圈,然后就可以先套一个正方形出来,这个正方形可以尽可能的大,如下图的红色框。 ![](https://cdn.luogu.com.cn/upload/ 阅读全文
posted @ 2023-08-22 19:31 One_JuRuo 阅读(94) 评论(0) 推荐(0) 编辑
摘要: ## 思路 易发现,如果 $i$ 和 $j$ 可以连边,$j$ 和 $k$ 可以连边,那 $i$ 和 $k$ 也可以连边,如果 $x$ 不能和 $i$ 连边,那 $x$ 同样不能和 $j,k$ 连边。所以我们可以考虑把所有可以连边的放在一起,这样就把所有点分成了若干部分,并且每个部分不可能连边,必然 阅读全文
posted @ 2023-08-22 19:31 One_JuRuo 阅读(33) 评论(0) 推荐(0) 编辑
摘要: ## 思路 首先发现应该优先除,理由很简单,如果先乘以 $k$ 再加上一个不超过 $k$ 的值,那么除以 $k$ 后,就除回去了,没有发生任何变化。 所以我们可以先枚举除以多少次 $k$,得到除以这么多次 $k$ 后的 $n$。我们再进行若干次乘法,计算 $n$ 的取值范围 $[l,r]$,那么只要 阅读全文
posted @ 2023-08-22 19:31 One_JuRuo 阅读(121) 评论(0) 推荐(0) 编辑
摘要: ## 思路 大概是这场比赛最水的题目? 一共只有三个骰子,每个骰子有 $6$ 面,所以总共是 $6^3=216$ 种情况,不用多说,直接暴力。 就是判断是红色还是黑色有点麻烦,可以数组存,写出来代码稍微好看些。 ## AC 代码 ```cpp #include using namespace std 阅读全文
posted @ 2023-08-22 19:31 One_JuRuo 阅读(24) 评论(0) 推荐(0) 编辑
摘要: ## 思路 如果 $k$ 和每个订单都是固定的,那所有的生产和剩余的货物都是固定的,那直接模拟就好。 可以提前对订单按照天数排序,对于排序后第 $i$ 个订单,可以提前累加前面所有订单所需的货物,再与天数乘以 $k$ 判断能否完成。 ## AC 代码 ```cpp #include using na 阅读全文
posted @ 2023-08-22 19:30 One_JuRuo 阅读(20) 评论(0) 推荐(0) 编辑
摘要: ## 思路 直接做比较难,考虑二分答案,所以我们需要想出一种时间复杂度还行的方法检查答案是否合格。 假设目前二分的答案是 $x$,那么速度低于 $x$ 必然需要别人背。 那么,自然而然地想到将所有人分成两部分,那么速度低于 $x$ 中的所有人应当优先满足较重的,如果优先满足较轻的,就可能导致较重的无 阅读全文
posted @ 2023-08-22 19:30 One_JuRuo 阅读(103) 评论(0) 推荐(0) 编辑
摘要: ## 思路 ### 暴力 比赛的时候想过树链剖分,然后想不出来怎么处理区间合并,再加上树链剖分代码量比较大,我又比较懒,就随手写了个暴力拿了40pts。 思路就是暴力求得 $u$ 到 $v$ 的简单路径,然后暴力枚举模拟一遍。 ### 40pts 代码 ```cpp #include using n 阅读全文
posted @ 2023-08-22 19:29 One_JuRuo 阅读(161) 评论(0) 推荐(0) 编辑
摘要: ## 思路与分析 这道题乍一看还挺难的,但是如果把这个序列拆成两半就会容易一些。 首先,讨论一下序列长度 $n$,如果 $n$ 为偶数,就可以对半分开;如果是 $n$ 奇数,就把中间那位单独拿出来,然后再对半分开。 ![](https://cdn.luogu.com.cn/upload/image_ 阅读全文
posted @ 2023-08-22 19:29 One_JuRuo 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 这道题直接模拟就很容易过。 因为如果单词的首次学习时间被推迟,那么会影响后续的复习计划,所以可以先把每个单词的首次学习时间算出来,再拿个数组存一下就好。 ``` /*vis[i]代表第i天是否为特殊情况,d[i]同题意,stu[i]代表在第i天首次学习的单词数量*/ for(int i=1;i us 阅读全文
posted @ 2023-08-22 19:29 One_JuRuo 阅读(18) 评论(0) 推荐(0) 编辑