摘要: 本篇文章将从状态压缩入门开始讲起。 什么是状态压缩 假设你面前有 \(n\) 盏灯,每盏灯的状态有:开、关。如何表示这个状态呢? 简单,用个 bool 数组,搞定! 那,如果 \(n\) 非常大,大到数组开不下怎么办呢? 其实很简单,我们把开的状态记为 \(1\),关着的状态记为 \(0\)。那么这 阅读全文
posted @ 2025-12-27 16:32 GeorgeDeng114514 阅读(3) 评论(0) 推荐(0)
摘要: 因为这道题我右边的高中生 tqc 没做出来,但是被我一番提醒之后做出来了,发篇题解纪念一下。 这道题的复杂之处在于处理转身的情况。如果我们暴力去模拟的话应该是能过的,因为数据范围极小。但是这道题有个特别简单的 \(O(n)\) 解法。如果我们把转身的两个人看成能互相穿过的会怎么样呢? 答案是可以这么 阅读全文
posted @ 2025-10-09 16:39 GeorgeDeng114514 阅读(6) 评论(0) 推荐(0)
摘要: 树的直径类模板题。 题目大意 给你一个森林,你可以连若干条边,但是连边之后整个图仍然是一个森林。问你连完后的最大直径。 题目中的“直径”意思是连接的点的个数。 解题思路 为了使得能连接的点的个数最多,我们肯定要把每棵树的直径连在一起,这样就能使得答案最大。 所以,我们只需要对于每棵树求一遍直径,然后 阅读全文
posted @ 2025-10-02 13:51 GeorgeDeng114514 阅读(22) 评论(0) 推荐(0)
摘要: 原题传送门。 显然,如果我们想要把一个字符串字典序尽量小,我们把这个字符串中的字符从小到大排序就行了;反过来就是把字符串中的字符从大到小排序就行了。 我们可以暴力地对于每个字符串排序,然后对于每一个字符串都判断一遍是不是最小的就行了。 代码: #include <iostream> #include 阅读全文
posted @ 2025-10-01 16:50 GeorgeDeng114514 阅读(11) 评论(0) 推荐(0)
摘要: 题目传送门。 显然,一个系统能够防御的导弹个数就是这个导弹高度的最长不升子序列。用 dp 就可以把这部分解决,可以得到 \(80\) 分。 第一问主体代码: c[len] = 5e4+7; for(int i = 1;i<=n;i++){ if(a[i]<=c[len]){//如果能加,就直接加 c 阅读全文
posted @ 2025-10-01 15:10 GeorgeDeng114514 阅读(20) 评论(0) 推荐(0)