2023 年脱颖而出的 7 个鲜为人知的 Linux 发行版 2023 年脱颖而出的 7 个鲜为人知的 Linux 发行版 本文翻译自 https://news.itsfoss.com/lesser-known-distros-2023/ 每年,总有一些令人兴奋的新发行版试图以不同的方式呈现,或提供某些有意义的功能,而不仅仅是“又一个发行版”。 同样,在 2023 年,也有一些发行版吸引了所有人的注意,尽管它们可能没有某些最佳 Linux 发行版那么受欢 2024-11-23 翻译 > ITSFOSS #Linux #发行版
5 个 Linux 初学者必须学会的命令 5 个 Linux 初学者必须学会的命令 本文翻译自 https://www.zdnet.com/article/the-first-5-linux-commands-every-new-user-should-learn/ 5 只企鹅 我记得自己在上世纪 90 年代末开始使用 Linux 的时候。当时,使用命令行是必选项。如果你使用这个开源操作系统,就得花时间在终端中,而不是华丽的图形 2024-11-19 翻译 > ZDNET #Linux
2024 年的 6 个关于 Linux 和开源软件的预测 2024 年的 6 个关于 Linux 和开源软件的预测 本文翻译自 https://news.itsfoss.com/predictions-linux-open-source-2024/ 2024 年已经到来(翻译此文是快要结束),是时候展望将塑造这一年的趋势了。 我们不是占卜师,因此无法准确预测未来会发生什么。然而,我们可以根据目前所见的情况做出一些预测。 以下是我们对 Linux 和开 2024-11-14 翻译 > ITSFOSS #Linux #预测 #2024
Thunderbird 中轻松管理邮件的几个小技巧 Thunderbird 中轻松管理邮件的几个小技巧 本文翻译自 https://itsfoss.com/thunderbird-threading/ 从版本 102 开始,Thunderbird 提供了 消息话题 作为解决此问题的功能。 在消息话题中,单独的对话将以树状结构排列。因此,对于特定的发件人,你可以在一个大的对话话题下查看消息和回复。 以下是消息话题视图的一些功能: 组织对话。 轻 2024-11-11 翻译 > ITSFOSS #Thunderbird #技巧 #邮件
VSCode 太无聊?快试试全新的 Kate! VSCode 太无聊?快试试全新的 Kate! 本文翻译自 https://news.itsfoss.com/kate-editor/ 如果你已经熟悉了像 Visual Studio Code 这样的常见选择。不如你不想尝试一些不同的、但功能相似的编辑器吗?如果如此,那么 KDE 开发的免费开源程序 Kate 编辑器绝对是你要尝试的一个选择。 Kate:一个出色的代码编辑器 kate 的屏 2024-11-10 翻译 > ITSFOSS #VSCode #文本编辑器 #KATE
使用 Tiling Shell 插件为 GNOME 添加超能生产力 使用 Tiling Shell 插件为 GNOME 添加超能生产力 本文翻译自 https://news.itsfoss.com/tiling-shell-gnome-extension/ 能达到 100% 的生产力是一个 神话,但这并不意味着我们不应该努力在生活中变得更加有条理,不管是个人生活还是工作。 许多人使用像番茄钟这样的工具来安排他们的日常任务,按照设定的时间间隔工作,然后进行短暂的 2024-11-09 翻译 > ITSFOSS #GNOME 插件 #生产力
没有 GUI?只用命令行(CLI)管理密码! 没有 GUI?只用命令行(CLI)管理密码! 本文翻译自 https://www.zdnet.com/article/need-to-manage-linux-passwords-on-the-command-line-no-gui-no-problem/ Guake 在 Ubuntu Budgie 上打开。 我绝对不会告诉你有多少次我不得不在没有 GUI 程序的情况下管理 Linux 2024-11-07 翻译 > ZDNET #Linux #Password #CLI
包管理器太多太复杂?试试用 APP 管理你的包 包管理器太多太复杂?试试用 APP 管理你的包 本文翻译自 https://itsfoss.com/app-package-manager/ 管理 Linux 发行版中的软件包根据发行版的不同而有所不同。所有基于 Debian 的发行版都使用 APT 作为包管理工具。而 Fedora 使用 DNF,openSUSE 则依赖 Zypper 包管理器。 最近,跨发行版的包管理器(如 Snap、Fl 2024-11-06 翻译 > ITSFOSS #包管理器 #APP
Linux 成为 Python 开发者的首选平台! Linux 成为 Python 开发者的首选平台! 本文翻译自 https://debugpointnews.com/python-software-foundation-survey-2024/ 最近的一项调查显示,55% 的 Python 开发者选择 Linux 作为他们的首选开发平台。 Python 软件基金会发布了其年度调查的结果,提供了 Python 开发者社区的全面概况。今年的调查 2024-11-04 翻译 > DEBUGPOINTNEWS #Linux #Python
20 年!PREEMPT_RT 最终合并入 Linux 内核 20 年!PREEMPT_RT 最终合并入 Linux 内核 本文翻译自 https://www.zdnet.com/article/20-years-later-real-time-linux-makes-it-to-the-kernel-really/ Linux 实时系统开发者 Steven Rostedt 和 Steven Vaughan-Nichols 在维也纳的 Linux 欧 2024-11-03 翻译 > ZDNET #Linux #kernel #RTOS
在 Linux 中使用几个工具轻松查看 NVME 盘的温度 在 Linux 中使用几个工具轻松查看 NVME 盘的温度 本文翻译自 https://itsfoss.com/ssd-temperature-linux/,选作课文时有删改。 近几年,NVMe(非易失性内存快速接口)驱动器已成为现代桌面系统的首选存储选项。与传统硬盘不同,NVMe 驱动器速度更快,能够加快启动时间、提高文件传输速度并提升整体性能。 和其他设备一样,NVMe 设备在使用时也会发 2024-11-02 翻译 > ITSFOSS #硬件 #NVME #硬盘
2023 年的 8 个 Linux 决定性瞬间 2023 年的 8 个 Linux 决定性瞬间 本文翻译自 https://news.itsfoss.com/best-open-source-linux-stories-2023/,选作课文时有删改。 每年,Linux 和开源世界都会带来一些惊喜和震撼。 可能会有某个 Linux 发行版改变了它的基础,某个独立项目被大型科技公司接管,或者发生其他各种事情。在 2023 年,我们尽最大努力为你 2024-10-30 翻译 > ITSFOSS #Linux #2023
Tuxedo 发布首款基于骁龙 X Elite 的 ARM 笔记本电脑 Tuxedo 发布首款基于骁龙 X Elite 的 ARM 笔记本电脑 本文翻译自 https://debugpointnews.com/tuxedo-drako-laptop/ 这是 Linux 用户的好消息!专注于为 Linux 打造电脑的 Tuxedo Computers 宣布,他们正在开发一款使用高通 Snapdragon X Elite 芯片的 ARM 架构 Linux 笔记本。 这 2024-10-29 翻译 > DEBUGPOINTNEWS #Tuxedo #高通 #骁龙 #X Elite #ARM
15 个提升 VSCode 编码体验的小技巧 15 个提升 VSCode 编码体验的小技巧 本文翻译自 https://itsfoss.com/vs-code-tips/ VS Code 是当今开发人员的首选,市场占有率十分的高。 如果你是 VS Code 的用户,我想分享一些技巧和调整,帮助你提高工作效率并改善编程体验。 想要更高效吗?熟悉并记住这些适用于 Linux、Windows 和 macOS 的 VS Code 键盘快捷键。 感 2024-10-27 翻译 > ITSFOSS #VSCode #快捷键
Linux 制作词云图的命令行工具——Wordcloud Linux 制作词云图的命令行工具——Wordcloud 本文翻译自 https://itsfoss.com/wordcloud/ 你是否曾在社区或壁纸网站上看到过像下面这样的酷炫壁纸? 示例词云壁纸 我相信许多人都见过这样的壁纸。 在本教程中,我将如何在短时间内制作这样的壁纸和图像。相信我,你不需要 Photoshop 或 GIMP 来完成这些,一切都很简单! Wordcloud,词云 2024-10-26 翻译 > ITSFOSS #词云
RefreshOS——一个潜在的 Debian 替代品 RefreshOS——一个潜在的 Debian 替代品 本文翻译自 https://news.itsfoss.com/refreshos/ 在不断涌现的基于 Debian 的发行版中,有时我们会看到一些独具特色、与众不同的选项。 其中一个这样的发行版是 RefreshOS,它对基于 Debian 的 Linux 发行版提供了“清新”的(双关语有意)诠释。最初于 2022 年发布,它一直处于低调 2024-10-25 翻译 > ITSFOSS #Linux #Debian #RefreshOS
使用 GSConnect 无缝连接安卓手机和 Linux 使用 GSConnect 无缝连接安卓手机和 Linux 本文翻译自 https://itsfoss.com/gsconnect/ 智能手机已成为我们技术生活中不可分割的一部分。我们常常一部分时间使用智能手机,一部分时间使用电脑。 然而,这种设备之间的切换会带来不便。你可能会感受到连接这两者的需求,比如在设备之间传输文件、共享剪贴板、在笔记本上查看手机通知等。 苹果生态系统在将 iPhone 2024-10-24 翻译 > ITSFOSS #Linux #安卓 #手机 #GSConnect
4 个基于 GNOME 的好看的桌面环境 4 个基于 GNOME 的好看的桌面环境 本文翻译自 https://www.zdnet.com/article/the-4-best-linux-desktops-based-on-gnome-and-what-i-most-like-about-each-one/ 这是基本 GNOME 桌面的外观。 自从 GNOME 诞生以来,我就是它的粉丝。当时它新鲜又令人兴奋。虽然 GNOME 仍然 2024-10-23 翻译 > ZDNET #翻译 #GNOME #桌面环境
Ubuntu 24.10 的 6 个新功能 Ubuntu 24.10 的 6 个新功能 本文翻译自 https://news.itsfoss.com/ubuntu-24-10/ 每年我们都会看到 Ubuntu 发布一个新的临时版本,这些版本会由 Canonical 提供为期九个月的支持,之后该版本将不再获得任何新更新或关键的安全补丁。通常,喜欢稳定体验的人会选择长期支持(LTS)版本的 Ubuntu,该版本维护的时间更长,最长可达 12 2024-10-22 翻译 > ITSFOSS #翻译 #Ubuntu #发布
5 个你值得尝试的 Linux 终端 5 个值得尝试 Linux 终端 本文翻译自 https://www.zdnet.com/article/5-linux-terminal-apps-that-are-better-than-your-default-and-free-to-install/ 在 Linux 的早期,终端是必不可少的。如今,图形用户界面(GUI)已经如此先进、用户友好且功能强大,你可以在整个 Linux 使用时 2024-10-21 翻译 > ZDNET #Linux #终端 #翻译
Tor 与 Tails 项目合并 Tor 与 Tails 项目合并 本文翻译自 https://debugpointnews.com/tor-project-and-tails-merge-operations/ Tor 和 Tails 正式联合,合并了两个最强大的在线匿名工具,旨在更好地保护全球用户免受监控和审查。 为了最大化全球用户的数字隐私和安全,Tor 项目和 Tails 正式合并。这次合并将两个最强大的在线匿名工具背 2024-10-21 翻译 > DEBUGPOINTNEWS #开源项目 #Tor #Tails
OiClass PU2TI 330 Soso 的并查集题解 OiClass PU2TI 330 Soso 的并查集题解 题意 Soso 欲将实现一个并查集,但是他写挂了。具体来说,他有 \(n\) 个点,第 \(i\) 个点的权值为 \(a_i\),初始时每个点都是一棵有根树。 定义操作 \(find(x)\),是找到 \(x\) 所在有根树的根。这次操作的代价是 \(x\) 到根的路径上所有点的点权和。 定义操作 \(merge(x,y)\): 首先找 2024-10-19 题解 > OiClass
零基础入门 OI 第三节——认识 C++ & Hello World 零基础入门 OI 第三节——认识 C++ & Hello World C++ 究竟是什么? 大家可能都或多或少的听说过 C++,但相比都没有深入了解过他。C++ 是一门算是流行的编程语言,通俗一点说,就是一种教电脑做事的语言。准确一点的说,C++ 是一门编译型高级编程语言。编译型意味着 C++ 代码可以通过一个成为编译器的软件转换为可以直接执行的文件,就比如 Windows 下的 .exe 2024-10-17 零基础入门 OI #C++ #OI #Hello World
零基础入门 OI 第二节——编码前的准备 零基础入门 OI 第二节——编码前的准备 在开始学习有关编码的内容之前我们应该获得一套称手的或者说可用的编程设备。下面就介绍一下硬件与软件方面的准备。 硬件 对于编程来说,一台任意品牌的能够正常开机的电脑应该都是可以满足需求的。但是老爷机可能无法运行所需的环境。可以通过打开 https://www.bilibili.com 来验证电脑的性能,如果能够正常的浏览视频、发弹幕,想必是没有问题。 软件 2024-10-14 零基础入门 OI #OI #零基础入门 OI
零基础入门 OI 之第一节——认识计算机 零基础入门 OI 之第一节——认识计算机 在中文语境中,计算机通常被称为电脑,原因自然不必多说。当然计算机的范畴并不仅仅局限于我们日常使用的电脑,我们平时经常接触到手机、智能手表、甚至家里的物联网温度传感器都属于计算机。 认识电脑以及电脑的运作方式有助于你对程序做一些十分有用的优化,因此下面介绍一下电脑的组成部分。 硬件 下面我们为了方便,我们使用一个笔记本的主板来介绍有关 OI 的电脑组成部分。 2024-10-12 零基础入门 OI #OI #零基础入门 OI #计算机
构建超强 OI 系统之开发环境 构建超强 OI 系统之开发环境 环境的配置 常用的环境有 Python、C/C++、LaTeX 等等。下面介绍以下几种环境的安装方法。 Python 直接在终端运行 sudo pacman -S python 即可,如果你要安装 Python2,可以使用 sudo pacman -S python2。 C/C++ 对于大部分的编译器直接使用 pacman 安装即可,比如 gcc 可以直接使用 pa 2024-10-10 构建超强 OI 系统 #OI #构建超强 OI 系统 #系统 #Arch Linux
构建超强 OI 系统之美化 Arch Linux & 美化 GNOME & 美化 Fcitx 构建超强 OI 系统之美化 Arch Linux & 美化 GNOME & 美化 Fcitx 前期准备 我们首先需要下载一些文件,这些文件存储在 Github 上面,如果你在大陆,那么可能需要一些魔法来访问。 如果你的系统没有安装 git 那么你需要使用命令 sudo pacman -S git。 然后我们需要下载以下几个软件: vinceliuice/WhiteSur-gtk- 2024-08-23 构建超强 OI 系统 #OI #构建超强 OI 系统 #系统 #Arch Linux #GNOME #美化
构建超强 OI 系统之配置 Arch Linux 构建超强 OI 系统之配置 Arch Linux 基本配置 在安装完系统后,你是不能上网的。你需要输入 sudo systemctl enable --now NetworkManager 即可。需要注意的是,这个命令是大小写区分的,一定不要敲错大小写。 图形界面 Linux 图形系统(Linux Graphics System)是一个用于提供图形用户界面(GUI)的基础设施,它允许用户在 Lin 2024-08-23 构建超强 OI 系统 #OI #构建超强 OI 系统 #系统 #Arch Linux
构建超强 OI 环境之安装 Arch Linux 构建超强 OI 环境之安装 Arch Linux 准备安装镜像 大陆的用户可以前往中科大的镜像站下载安装 ISO 镜像。而身处海外心系祖国的同学可以去官网下载。 下载后找个自己喜欢的目录存储即可。 创建虚拟机 这里使用 VirtualBoxVM,VMware 的也可以参考一下。首先点击创建虚拟机。填入名字,最好和 Arch Linux 有关,然后选择刚刚下载的安装镜像。 然后设置合适的 CPU 2024-08-22 构建超强 OI 系统 #OI #构建超强 OI 系统 #系统 #Arch Linux
2024 TYOI 暑假集训游记 2024 TYOI 暑假集训游记 Day 0 第一天晚上刚到机房就被制裁了。原来放假的时候有比赛,一场没打):,全去搞文化课了。 Day 1 开幕雷击,上来就比赛,随便水了一下,接近垫底了。太久没有打比赛手感就是不好。 Day 2 - End 此后就开始一直学算法,KMP、Trie 树、AC 自动机什么的都不难,到 DP 就老实了。还好后面回归算法,讲了树剖,舒服了。 最后一天打 CPC, 2024-08-21 游记
Luogu P7537 [COCI2016-2017#4] Rima 题解 Luogu P7537 [COCI2016-2017#4] Rima 题解 题意 简单类说就是通过拼接字符串,实现两个字符串之间的最长公共后缀长度恰好是较长的字符串的长度 \(-1\)。并使得最长公共后缀长度最长。 思路 随便做即可。 首先我们观察到题目要求的是后缀,但是显然求后缀的算法并不是很多,于是我们考虑将其反转。然后题目就变成了求前缀。 反转完我们继续考虑怎么做,对于这种字符串的问题,我们 2024-08-09 题解 > 洛谷
OiClass PUJI P2232 Friends 题解 OiClass PUJI P2232 Friends 题解 思路 容易发现枚举添加的是哪个字符是很好的,但是我们需要解决哈希的问题。 考虑拼凑,不难发现,对于 ABXC 去掉 X 之后的 AB C 这个字符串,他的哈希是 AB 的哈希乘上 C 的位权。于是我们分类讨论一下删去的字符在哪个位置,然后分别处理即可。 但是在统计答案的时候仍然有很多细节。首先是不能在每次都记录字串,因为取字串的函数复杂度 2024-08-07 OiClass > 题解
OiClass TIGAO P3280 牛牛的猜球游戏题解 OiClass TIGAO P3280 牛牛的猜球游戏题解 思路 首先考虑暴力的做法,直接依题意模拟模拟,时间复杂度是 \(\mathcal{O}(nm)\),显然不能通过。但是我们可以发现这种修改方式似乎很适合预处理,然后我就想到了使用前缀和的做法。然后每次进行替代,但是经过一段时间的调试,无法通过,果断放弃。 我们考虑时间复杂度稍高的分块做法,我们规定块长为 \(\sqrt{n}\),然后将 2024-07-12 题解 > OiClass
OiClass TIGAO P3279 牛牛的方程式题解 OiClass TIGAO P3279 牛牛的方程式题解 思路 首先观察一下方程:\(ax+by+cz=d\)。观察可以得到,他有整数解当且仅当 \(\gcd(a,\, b,\, c) \equiv 0 \pmod d\),也就是说 \(d\) 被 \(a,\, b,\, c\) 的最大公因数整除。显然这是正确的。 但是通过以上的思路,我们只能通过小样例,在面对大样例的时候这个方法仍然有些力不从心 2024-07-12 题解 > OiClass
OiClass TIGAO P3333 路径难题题解 OiClass TIGAO P3333 路径难题题解 思路 首先考虑暴力建边的做法,我们使用 \(\mathcal{O}({t_i}^2)\) 的时间建立公交站的边。然后我们考虑如何计算答案。考虑到每次坐公交车的时候都会进行出租车的结算,于是我们直接累计到最后才向上取整的做法是没有正确性的。 于是我们考虑每次到公交节点的时候就进行向上取整,这样就可以保证 Dijkstra 的正确性。 这样就解决了 2024-07-10 题解 > OiClass
OiClass PU2TI P3042 拓展的奇拼图题解 OiClass PU2TI P3042 拓展的奇拼图题解 思路 首先发现这题是八数码问题的加强版,但是数据量非常大,爆搜+剪枝的方法非常的不可取,于是我们考虑是否可以通过一些神秘的判断方法来判断出是否可以构造出来。 从数据量可以感受出来应该是使用某种接近线性的算法,果断猜测是否是逆序对。把矩阵展开后去掉 \(0\),然后计算逆序对个数,判断奇偶性即可。 代码 1234567891011121314 2024-07-08 题解 > OiClass
OiClass PU2TI P3186 小美的排队次数 题解 OiClass PU2TI P3186 小美的排队次数 题解 思路 以下格式模仿睿智的官方题解。 \(10\,\%\) 做法:呵呵,对于这种神奇的算法还是表示不明觉厉。 \(40\,\%\) 做法:呵呵,依题意模拟计数即可。 \(100\,\%\) 做法:呵呵,随便做即可。考虑以下先做一轮,观察一下有什么性质。手磨样例,一轮以后是 1, 2, 3, 5, 4, 6 发现每一次只可能交换相邻的两个 2024-06-19 OiClass > 题解
SPOJ SETSTACK 题解 SPOJ SETSTACK 题解 题意 有一个装着集合的栈,需要你实现以下操作: PUSH. 将把空集 \(\{\}\) 推到堆栈上。 DUP. 将复制最顶层的集合(弹出堆栈,然后将该集合推入堆栈两次)。 UNION. 会弹出堆栈两次,然后将两个集合的联合值推入堆栈。 INTERSECT. 会弹出堆栈两次,然后将两个集合的交集推到堆栈上。 ADD. 会弹出堆栈两次,将第一个集合加入第二个集合,然 2024-06-12 题解 > SPOJ
SPOJ MARTIAN 题解 SPOJ MARTIAN 题解 思路 首先简单理解一下题目,会发现题目就是在网格上选择若干列(或列的上面一段)以及若干行(或行的左边一段)似的这些被选中的列和行之间的和最大。具体可以看题目的这张图: 很明显这是一个 DP 问题,于是我们着手设计状态转移方程。首先我们先分别预处理出纵向的和横向的两个前缀和分别是 \(y_{i,\,j}\) 和 \(b_{i,\,j}\),字母对应题目的矿物名称首字 2024-06-04 题解 > SPOJ
AtCoder ABC206D KAIBUNsyo 题解 AtCoder ABC206D KAIBUNsyo 题解 思路 观察到替换数字的过程,实际上就是将两个数字归为一类。借此不难联想到并查集的工作过程,因此我们可以考虑使用并查集解决这个问题。 我们使用并查集维护当前数字所属的集合,初始时对于数字 \(x\),它位于集合 \(x\) 中。当我们发现本应相同但是并不在同一个集合内的数字时,我们不得不将其合并,并记录下一次操作。在操作的过程中,你不需要去判 2024-06-04 题解 > AtCoder
OiClass PUJI P3827 函数 题解 OiClass PUJI P3827 函数 题解 思路 首先化简一下公式: \[ \begin{align*} f(n,\,r)&={\rm C}^r_n (n - r)!\\ &=\frac{A^r_n(n - r)!}{r!}\\ &=\frac{n!}{r!}\\ &=\prod _{i=r + 1}^n i \end{align*} \] 但是数据范围很大, 2024-05-21 题解 > OiClass
CF1612D X-Magic Pair 题解 CF1612D X-Magic Pair 题解 思路 我们首先假定 \(a < b\) ,那么我们可以通过题目给定的方式将 \((a,\,b)\) 转移到: \((b - a,\,b)\) \((a,\,b- a)\) 这是显然的。但是我们发现如果我们转化为 \((b - a,\, a)\),那么下一步就会转移到: \(((b - a) - (b - a),\, a) = (0,\,a 2024-05-17 题解 > CodeForces
UVA929 Number Maze 题解 UVA929 Number Maze 题解 思路 简单看一下题目,可以理解为在网格上寻找从点 \((1,\,1)\) 到点 \((n,\,m)\) 的最短路,其中权值为点权。 我们可以考虑直接使用 Dijkstra 算法在网格上跑一遍最短路算法,求得答案。下面简述一下 Dijkstra 算法的过程: 创建一个大小与顶点数量相等的数组 \(f\),用于存储起始点到各个顶点的当前最短距离估计值。 将 2024-05-15 题解 > UVA
AT_arc132_b Shift and Reverse 题解 AT_arc132_b Shift and Reverse 题解 题意 有一个序列,你可以将它翻转或者将第一个数挪到最后面,求最小的操作使得序列升序的次数。数据保证有解。 思路 首先我们可以看到题目中说保证一定有解,因此我们可以发现挪动的方式一定是将前面的数整体挪到到后面或者翻转后将前面的数移到后面再翻转回来。看一个例子: 13 4 5 6 7 8 9 10 1 2 答案显然是将序列整体翻转后将 2024-05-14 题解 > AtCoder
Luogu P2568 GCD 题解 Luogu P2568 GCD 题解 思路 首先我们可以根据题意列出式子: \[ \sum_{p \in {\mathbb P}}\sum_{i = 1}^{n} \sum_{j=1}^n [\gcd(i, j)=p] \] 根据一些神秘的直觉,可以将式子化简成下面的样子: \[ \sum_{p \in {\mathbb P}} \sum_{i = 1}^{\left\lfloor\frac n 2024-05-08 洛谷 > 题解
TYCPC 游记 TYCPC 游记 感受 感觉出题人就是 ___ ,出的全是人类智慧题,罚时吃饱了! T1 不会。 T2 分解质因数秒了,就是有点担心 unordered_map 常数太大,不过卡过去了,不慌。 T3 排序建图后然后直接分联通块就可以了。但是不知道关掉同步流以后 puts 不可以和 cout 一起用,多吃了一发罚时,大悲。 T4 可以发现,一棵树上的任何一个节点(除根节点)一定入度是 \(1\),于 2024-05-07 游记 > OiClass
Luogu P1495 题解 Luogu P1495 题解 思路 首先看一下题目,可以理解为求解下面的方程: \[ \left\{ \begin{array}{c} x \equiv b_1 \pmod {a_1} \\ x \equiv b_2 \pmod {a_2} \\ \cdots \\ x \equiv b_n \pmod {a_n} \\ \end{array} \right. \] 很显然可以用中国剩余定理求解, 2024-04-29 题解 > 洛谷
2024 成都七中多校联训游记 2024 成都七中多校联训游记 Day 0 早上 6:00 准时起床,跑到番禺校区门口。看到我们的公务车,感觉很高级。 IMG_0834(20240329-202147) 结果我们五个学生在车上等 lily 一个人,相当抽象啊。 到了机场先和番禺的人一起办了值机,然后越秀的说刚出发蚌埠住了。等啊等,看了 \(20 \rm min\) 的 B 站,感觉他们可能还要很久。准备启动,然后刚进游 2024-04-10 游记 #游记 #成都七中 #多校联训
2024 成都七中多校联训内容 2024 成都七中多校联训内容 前言 这是较为完整的训练内容,当然有若干场训练并没有整理出题单,而是写在了 PPT 里面,懒了,不搬了。其次有一场讲评的录屏是不完整的,这个要怪讲评人。 比赛 题目原题均在 ACCoders,被 CodingCow 搬到了 OiClass(有些没搬),题面可能略有修改,数据并非原数据,是重新造的。 2024 多校集训 C 层 - 冲刺 NOIP 模拟 1 题目 P 2024-04-10 #成都七中 #多校联训
算法详解 - 素数 算法详解 - 素数 定义 素数,又被称为质数。我们一般定义质数为除了 \(1\) 和自身之外没有其他因数的数,特别的 $1 $ 不是质数。 判断 试除法 我们考虑如何判断质数,一种很显然的思路就是枚举这个数的因数。假设这个数是 \(x\),则我们可以枚举 \([2,\,\sqrt{x}]\) 之间的整数,判断是否可以整除,如果没有找到一个可以整除的数,那么可以认为这是一个质数。时间复杂度是 \(O 2024-04-09 算法详解 #算法详解 #素数 #质数
算法详解 - 重链剖分 算法详解 - 重链剖分 简介 重链剖分,也被称为树链剖分,一般的,OIer 口中的树链剖分就是指重链剖分。今天我们就来一起学习重链剖分。 概念 重儿子 既然是重链剖分,那么我们就要理解什么是重。我们定义一个点的子节点中子树最大的点为这个点的重儿子。我们可以通过下面的一个例子来理解: 其中,节点 \(1\) 的子节点有三个,分别是 \(3,\,5,\,6\),它们的子树大小分别是 \(4,\,1, 2024-04-08 算法详解 #算法详解 #重链剖分
算法详解 - 自适应辛普森法 算法详解 - 自适应辛普森法 前置知识 我们可以看道一个奇怪的式子: \[ \int^R_L f(x)\, \textrm{d}x \] 究竟是什么意思呢?其实就是求函数 \(f(x)\) 在 \(L\) 到 \(R\) 之间的定值积分。在讲求值之前,要先讲一下映射、函数和积分。 映射 再讲函数之前,先要讲一讲映射。首先我们考虑有两个非空集合 \(X\) 和 \(Y\),如果存在一种法则 \(f\ 2024-04-02 算法详解 #算法详解 #自适应辛普森法
OiClass P2688 简单计算题解 OiClass P2688 简单计算题解 思路 我们简单导一下柿子: \[ \begin{align*} \sum_{i=0}^{p} \left\lfloor\frac{iq}{p}\right\rfloor &= \left\lfloor\frac{0q}{p}\right\rfloor + \left\lfloor\frac{1q}{p}\right\rfloor + \cdots 2024-03-19 题解 > OiClass
TYOI 省选集训 and 2024 GD 省选游记 TYOI 省选集训 and 2024 GD 省选游记 集训 Day -INF 知道可以来集训,感觉特别开心,因为可以合法逃学两周! Day -3 \(\sim\) Day 0 大年初五就从潮州回到广州,收拾了一下东西,年初七大家就到了学校。 很好,又和高中生一起住,不过这次我们来得很早,所以高二还没有开学。一开始宿舍里面只有我、includeCPP、jr_linys 三个人。所以 includeC 2024-03-01 游记 #游记 #TYOI #省选
CF1244C 题解 CF1244C 题解 思路 我们看到题目,给定四个数 \(n\)、\(p\)、\(w\)、\(d\),求解三元一次不定方程组: \[ \left\{ \begin{array}{l} x\cdot w+y\cdot d=p\\ x+y+z=n \end{array} \right. \] 观察一下你就会发现 \(z\) 的值是你可以随便指定的,因为他只对 \(n\) 产生影响,而不对方程一产生任何 2024-02-28 题解 > CodeForces
AT_abc255_e 题解 AT_abc255_e 题解 思路 朴素做法 首先我们考虑一定可以有一个点是幸运数,于是我们可以考虑遍历每一个 \(S_i\),钦定 \(a_i\) 是一个幸运数,然后我们就可以反推出 \(a_1\) 的值。然后我们统计 \(a_1\) 重复被计算出的次数。因为只要有一个 \(a_i\) 被确定了,整个序列就确定了。也就是说,\(a_1\) 的重复次数就是我们要求的最多的幸运数个数,因为他们都是同 2024-02-28 题解 > AtCoder
OiClass 2024 CSP-J 公益赛 #4 题解 引言 这场比赛出题人认为是 \(\approx\) CSP-J + 的难度,预估的平均分在 \(200\) 分左右。比赛的命题思路简单来说就是第一题水题但是考虑在题面里面写很多抽象的东西混淆视听;第二题有些思路的结论题,如果猜出了结论复杂度应该还是非常优秀的;第三题是本场比赛最难的题,算法本身并不难,但是这个思路上有一个优化很难想,这就给很多选手做题带来了很大的困扰,可能无人 AC;第四题是原题加 2024-02-28 题解 > OiClass #题解 #OiClass #公益赛
THUWC 2024 游记 THUWC 2024 游记 Day -INF 大喜,第一年打比赛就直通 THUWC 了,开心到飞起。 Day -7 开始寒假集训前一天,发现重庆天气很冷,极限跑去优衣库不看价格买了一件羽绒服。付款的时候 699 真的蚌埠住了,还好 Mate 60 Pro 专属卡返现了几十块,小回了一波血。 Day -6 \(\sim\) -1 在番禺校区集训,学了一堆树上的算法,感觉很懵。集训还没结束就走了。 D 2024-02-28 游记 #游记 #THU
OiClass 公益赛宣传 OiClass 公益赛宣传 活动意义 为了增强 oiClass 社区活跃度,提升 oiClass 用户的 oi 水平,促进 oier 之间的联结互动,特别开展本公益活动,希望大家踊跃参加。 oier 水平的提升,不仅在学,更在练,多打比赛无疑是提升水平的有效渠道。 本次活动由 TYOI 高水平选手进行命题和验题,由 chxulong 把控题目质量,题目难度控制在 CSP-J 水平,对于冲刺本年 2024-02-25 OiClass #OiClass #宣传 #公益赛
CF1368E Ski Accidents 题解 CF1368E Ski Accidents 题解 思路 首先我们看到题中给出,这个图是一个 DAG,因此很容易的就可以想到拓扑排序。那么我们在思考一下,如何满足题目中给出的删除的点不超过 \(\frac{4}{7}n\) 的要求。我们可以举一个例子,看到下面的二叉树: 如果我们按照拓扑排序遍历,每次遍历到深度对 \(3\) 取模为 \(0\) 的节点,就删除。那么很显然,这个策略可以正常的分割出 2024-02-23 题解 > CodeForces
洛谷 P10170 [DTCPC 2024] 小方和小立方 题解 洛谷 P10170 [DTCPC 2024] 小方和小立方 题解 思路 一眼看上去,这题非常非常的难,对吧???好吧,我的第一反应就是 DP,但是 DP 似乎并不能非常优雅的解决问题。然后我就想到了马拉车,但是马拉车+特判实现起来实在是有些繁琐。 突然,我猛地发现,如果每个字母的出现次数不超过 \(2\) 次的话,回文串的长度最多就是 \(52\)。也就是说,暴力的时间大约是 \(O(52n)\) 2024-02-17 题解 > 洛谷
洛谷 P10160 [DTCPC 2024] Ultra 题解 洛谷 P10160 [DTCPC 2024] Ultra 题解 题意 给定一个01串,可以将串中的 1010101...010101 替换为 0101010...101010 反之亦然。求可能的最小的 1 的数量。 思路 我们可以发现,如果有连续的多个(\(\geq2\))\(0\),那么我们不可能将连续 \(0\) 左侧或右侧的一起处理。因此,为了方便,我们可以将左右两侧分开处理。当我们将左右两 2024-02-17 题解 > 洛谷
Oiclass PU2TI P3791 棋子题解 思维 我们可以优先考虑以下的三情况: 1 2 3 此时我们会发现 1 和 2 挡住了 3 ,那么此时 1 和 2 必然将先死一个。 1 3 5 此时我们会发现所有棋子都可以先死,因此方案数为棋子数的全排列数,即其阶乘。 1 2 4 此时 1 和 2 挡住了 4 ,只要 1 或 2 先死一个,那么后面的就可以按照方案二的情况来计算。 因此我们可以考虑维护一个像方案二一样的 1 3 5 7 9 . 2023-12-16 题解 > OiClass
CF985C 题解 建议升绿 这道题是一道贪心。很容易想到,我们你需要先进行一次排序,然后再进行一些操作。 首先我们可以排除无解的情况,当第 \(n\) 短的木板的长度与最短的木板的长度之差 \(> l\) 时,不可能有任何一种符合题意的方案。这个很好证,有兴趣的朋友可以自己证一下。 然后我们考虑如何制定一个合理的贪心计划。首先我们可以尝试确定一个最大的桶大小,这对后面的操作有很大的帮助。很显然,最大的桶大小就 2023-12-15 题解 > CodeForces
Oiclass PU2TI P3846 杨辉三角题解 打表+卡常题 思路 不难发现,最短路径不外乎以下两种可能: image-20231216150315312 一种是先一直向下,再一直向右下;而另一种是先一直右下再一直向下。对于 \(k \leq \frac{n}{2}\) 的请况,很显然是选择第一种路线,否则是第二种路线。 我们可以通过一个简单的技巧来将两种路线合一,我们可以发现,其实第二种情况相当于第一种情况中将 \(k\) 改为 \(n 2023-12-12 #题解 #OiClass
CSP 2023 游记 终于想起来 好吧,鸽了怎么久,还是要来写一下的 初赛 赛时 初赛那天上午,我很早就到了广大附。走进去之后,发现一个 TYOIer 都没有,然后就在门口等队友。吹着上午凛冽的秋风,等啊等,发现他们怎么一直不来啊啊啊啊啊。等到离可以进考场还有 \(5\) 分钟的时候,我就自己走进去了,孤独,又无助。 后来等到考试快要开始,我们的其他队员才陆陆续续地到,听说是因为堵车了(笑死)。 对于早上入门组的初赛, 2023-12-05 游记 #游记 #CSP
AT_zone2021_e 题解 AT_zone2021_e 题解 题意 由于洛谷的题意太不好理解了,我是看了英文题面才理解的。下面简述一下题意: 首先题目给定两个数 \(R\) 和 \(C\) ,同时给定两个数组 \(A\) 和 \(B\),\(A\) 的大小是 \(R \times C - 1\) ,\(B\) 的大小是 \(R - 1 \times C\) 。然后计算点 \((1,\, 1)\) 到点 \((R,\, C) 2023-10-20 题解 > AtCoder
Oiclass PUJI 1353 题解 贪心 + 大模拟 题目简述 你是一名医生,是这家医院有且只有的一个医生。现在有 \(n\) 个患者要来手术,每个患者有四个属性:\(t\) 指患者到达医院的时间、\(a\) 指患者手术后会支付给你的钱、\(b\) 指患者所需的手术时间、\(p\) 是患者的严重程度,\(p\) 越小,患者就越严重。现在如果一个患者看到一个 \(p\) 值比他更大的患者正在手术,那么他就会很生气,你就会一分钱也得不到 2023-10-19 题解 > OiClass
CSP 2023 考场注意事项 考场注意事项 入场问题 首先此次 CSP 是从 5 号门(侧门,也就是更靠近广工西区的那个)进。时间: J 组 ,早上 7:45 进场,8:10 截止进场,8:25 发卷,11:55 交卷。 S 组 ,13:30 进场,14:10 截止进场,14:25 发卷,18:25 交卷。 考试问题 广附提供了 Noi Linux 2.0 的虚拟机,但是用不明白的还是建议不要用。考场不允许吃东西,但是你可 2023-10-19 #杂项
Oiclass PUJI 1277 题解 博弈论 题目简述 有 \(n\) 个硬币,两位玩家,每次去取 \(l \sim r\) 个,取不到者负,都执行最优策略,哪一方必胜? 思路 和显然,这个问题就是博弈论中十分经典的 Nim 取子问题 。首先我们发现,对于一种状态,如果后面的任何状态都是必败状态,那么我们可以发现,这个状态就是我们常说的必胜态,因为,无论下一步怎么走,都是无法获胜。而同时,如果一个状态后面有必胜态,那么这个状态就是必败 2023-10-10 题解 > OiClass
TYOI 暑假集训游记 TYOI 暑假集训游记 比赛复盘 分数 比赛 排名 分数 是否意外 2023 tyoi 普及模拟训练 01 \(21\) \(150\) 是 2023 tyoi 普及模拟训练 02 \(30\) \(220\) 是 2023 tyoi 普及模拟训练 03 \(13\) \(260\) 否 2023 tyoi 普及模拟训练(B --> C) \(5\) \(180\) 2023-08-22 游记 #游记 #2023 #TYOI
MCOI 2023年6月月赛题解 MCOI 2023 年 6 月月赛题解 引言 这是一场个人认为难度 \(\approx\) J- 级的比赛,除了最后一题是一道非常怪的题以外其他的题目都是比较简单的,但是会有一些坑。由于出题人写 TJ 的时候你们的比赛还没有结束,因此没法评价本场比赛。个人估计应该不会有人 AK,但是这场比赛应该 \(300\) pts 的巨佬不少。下面是各题的题解,写的不好,请多多关照。 T1 - WTX 的文采 2023-06-08 题解 > MCOI
Oiclass PUJI Circle 题解 泰裤辣!解析几何 引 首先我们看题,发现题目会给我们四个点,让我们判断这四个点是否共圆,那么如何判断这四个点是否共圆呢?我的思路是这样的: 首先以这四个点为顶点随便画出两个不同的三角形,求这两个三角形的外心 然后判断这两个外心是否相同,如果是的话,那么我们可以判断这四个点事共圆的 那么这种思路就会引起很多问题了,首先什么是外心?很巧,今天数学课数学老师留的思考题就是如何找到三角形的外心,也就是 2023-05-13 题解 > OiClass
Oiclass PUJI 971 题解 数学题!!! 为了方便化简式子,我们首先简单的将 \[ d(x, y)=y-x \] 替代 \[ d(x, y)=\left\{ \begin{array}{l} 0\ \ (|x - y|\le1)\\ y - x\ \ (|x - y| > 1) \end{array} \right. \] 那么就可以令 \(n = 4\) 将原式( \[ \sum^{n}_{i = 1}\sum_{j 2023-04-13 题解 > OiClass
Oiclass PUJI P1296 题解 这是一道几何题 看到题目,我们会发现,题目需要我们找到四个点,构成一些正方形(即四边等长的矩形,这个很重要,后面会用到),然后输出可以构成的正方形的个数 好的,那么作为一个暴力骗分的小能手,我的第一反应就是暴力,简单估一下,如果有 \(n\) 个点,那么时间复杂度就是 \(O(n^4)\) 很明显,这个时间复杂度直接原地起飞了,能 AC 我直接把题目吃下去好吧 那么我们现在就要来考虑如何尽可能的减 2023-03-04 题解 > OiClass
Oiclass P2261 题解 这道题实际上很简单 先看题目,会发现,这道题似乎很想模拟题,但是又好像不是,因为用正常的方法没法模拟,或者说很难模拟。看标签仔细观察就可以知道,这是一道数据结构相关的模版题,具体会用到队列。 思路如下: 首先输入题目中提到的 \(n\) 和 \(c\) 在队列中压入 \(1 \to n\) 的所有自然数,对于 \(n = 6\) 的情况,队列应该是这样的:\(队头\ 1,2,3,4,5,6\ 队 2023-02-01 题解 > OiClass
Oiclass 新 C 班选拔测试题解 终于考完了 额,这次一共 6 题,3 个小时,时间还是有点紧张,但是由于题目太难,最后还是比较舒服的拿了 15 名(总共多少人就不说了)。但是,满分 600 只骗拿到了 150。确实菜了点,下面总结一下每一道题目 A. #P3256. 排队 这一题一看就是打卡题,但是也是正常比赛我唯一 AC 的一题,呜呜。这道题又是一道 oiclass 从其他地方搬运的题,好像是来自 JZOI 的,但是我没有找到 2023-01-15 题解 > OiClass
Oiclass P1266 题解 这道题绝对称得上是 DP Ultra So, what is DP Ultra ? The answer is: 环形区间 DP !!!!!!!真的离谱!!! 1. 划分阶段 一共有 \(2 \times n\) 个阶段,每个阶段表示 \(i\) 开始 \(j\) 结束的区间里面一共最多能产生多少能量。 2. 定义状态变量 直接搞一个万能二维数组 \(f\) , \(f_{i,\ j}\) 表示一 2023-01-12 题解 > OiClass
Oiclass P1238 题解 又是一道烧脑的模板题 进入正题,以下是传统得无与伦比的五步 1. 划分阶段 这里以每一种花为一个阶段,表示从第 \(1\) 种花到这一种花之间的所有花一共最多能有几种方案 2. 状态和状态变量 直接用一个二维数组 \(f\) 用来存状态,状态: \(f_{i,\ j}\) 表示 表示第 \(i\) 种花共摆了 \(j\) 盆时一共最多能有几种方案,也就是一个最优解。 3. 确定决策和状态转移方程 2023-01-12 题解 > OiClass
Oiclass P1255 题解 又是一个我背不动的背包 这次是 0/1 背包 plus——多重背包,下面是经典的五步 1. 划分阶段 以每一个物品为一个阶段,表示这个物品前的物品的最大值(包括这个物品自身)。 2. 确定状态和状态变量 搞一个一维数组 \(f\) ,即 \(f_i\) 表示第 \(1\) 个物品到第 \(i\) 个物品之间(算头算尾)的最优解,也就是在空间不超过 \(v\) 的情况下最大的价值总和。 3. 确定决 2023-01-12 题解 > OiClass
Oiclass P1246 题解 你说为什么 01 背包模板不是偷东西呢? 额,搞错了,再来! 1. 划分阶段 一共划分 \(M\) 个阶段,每个阶段表示在这个阶段可以采的最多的草药 2. 确定状态和状态变量 状态变量就用一个二维数组 \(f\) 吧,也就是说 \(f_{i,\ j}\) 表示前 \(i\) 颗草药在前 \(j\) 的时间可以获得最大价值,也就是说我们想求的是用 \(j\) 的时间,如何在 \(a_{1 \to i 2023-01-12 题解 > OiClass
Oiclass P1928 题解 这道题简直拓宽了回文这个词的定义 天哪,我见回文数,回文分解,回文日,还真的没有见过回文词,而且这个词还毫无任何美感可言,其他回文可都是很优雅的呀。不吐槽了,进入正题 1. 划分阶段 这里定义两个字符串,\(a\) 和 \(b\) ,\(a\) 是输入的字符串,\(b\) 是 \(a\) 的反串。对于这两个字符串,一共有 \(2 \times a.length()\) 种状态,也可以说有 \(a. 2023-01-12 题解 > OiClass
Oiclass P1241 题解 这次是 LIS 的兄弟 LCS(最长公共子序列) 一个词概括,模板题。但是,模板题也很难啊啊啊啊啊啊。又是经典的五步: 1. 划分状态 假设 \(a\) 和 \(b\) 是本次主角字符串(好想把他们拉出去斩了) ,那么一共有 \(a.length() \times b.length()\) 种状态,每一种状态表示下标 \(i\) 之前的 \(a\) 的子串(即 a.substr(0, i))与下标 2023-01-12 题解 > OiClass
Oiclass P1240 题解 这道题是真的难啊 这道题目中 \(\Huge 相邻\) 这个该 * 的词很容易 让人误以为这道题有后效性,当时我们全班都认为这道题有后效性,然而我们美丽的又和蔼的 Lily 却和我们说没有。仔细分析后发现,直接观察确实这道题目有后效性,但是如果深入分析,就会发现,只有前面的一项会影响它本身,在计算后一项的时候,对他本身并不会产生影响,他始终是最优解,行,确定能用 DP 了,开工!!!! 1. 划分 2023-01-12 题解 > OiClass
Oiclass P1242 题解 这道题真的离谱 1. 划分阶段 对于这道题目,我以每一个字母为一个阶段,表示第一个字符串的前 \(i\) 个字母和第二个字符串的前 \(j\) 个字母之间的编辑距离(定义见题目) 2. 状态和状态变量 定义数组 \(f\) 用于存储状态,即 \(f_{i,\ j}\) 表示一个阶段(也就是(1) 里面提到的阶段),同时 \(a,b\) 分别是输入的两个字符串 3. 确定状态转移方程 这就是最难的部 2023-01-12 题解 > OiClass
Oiclass P1263 题解 这真是一场愉快的传球游戏 再次是传统的五步 1. 划分阶段 这里我划分的状态是:每次传球完一种状态 2. 确定状态和状态变量 对于状态变量,我定义一个二维数组 \(f\) ,对于 \(f_{i,\ j}\) 他表示的是在 \(i\) 次传球后,\(j\) 手上的球的数量。 3. 确定决策和状态转移公式 对于这道题,决策的方式稍稍有那么一点点复杂,对于一种状态 (\(f_{i,\ j}\))它有以下 2023-01-05 题解 > OiClass
Oiclass P1993 题解 又是一道 DP 看到题目,我的第一反应就是:这鼹鼠是什么玩意儿? 额,\(\Huge 搞错了\) 再来 下面是传统的五步 1. 划分阶段 以每一只耐造的鼹鼠为一个阶段,表示在这只鼹鼠前面(包括这只鼹鼠)可以打到的鼹鼠的数量 2. 确定状态和状态变量 这里使用两个数组 \(f,\ a\) ,分别存储状态和输入的数据 3. 确定决策和状态转移公式 因为每一只鼹鼠都可以和他前面的任何一只鼹鼠结合,所以我 2023-01-05 题解 > OiClass
Oiclass P1227 题解 这道题需要两次动规 (LIS DP) OK,再再再再是经典的五步 1. 划分状态 在这道题,我用每个人划分状态,每个人有两个状态,分别是以这个人结尾的最长不下降子序列长度和以这个人开头的最长不下降自序列的长度 2. 确定状态和状态变量 我使用三个数组 \(a,\ b,\ c\) 分别:存储输入的数据、存储状态一(以这个人结尾的最长不下降子序列长度)、存储状态二(以这个人开头的最长不下降自序列的长度 2023-01-05 题解 > OiClass
Oiclass P1229 题解 这道题思路稍稍有那么一点绕 先理解一下题目,交叉着一点还是挺难理解的,我们把样例的图片画出来的话大概是这样的: 截屏2023-01-05 14.38.33 我们仔细观察一下,会发现,不交叉的的几项在下面(南岸)形成了一个上升序列(也可以说是不下降序列),那么求有多少项不交叉是不是可以改成当北岸按升序排好时南岸的数的最长不下降子序列的长度?这就很好理解了。先把北岸排序,让南岸跟着动,然后求南岸 2023-01-05 题解 > OiClass
Oiclass P1226 题解 话不多说,这又是一道 DP 题 看题目就知道,这就是大名鼎鼎的最长不下降子序列 LIS 。所以我们用十分传统的五步(第六步是送的)解决这个问题 1. 划分阶段 我们的以每一个数划分阶段,也就是说每一个阶段存储的是以某个数结尾的子序列 2. 确定状态和状态变量 这里使用数组 \(f\) 来存放状态,数组 \(a\) 存储输入的数据,即状态 \(f_i\) 为以数字 \(a_i\) 结尾的最长不下降子 2023-01-04 题解 > OiClass
Oiclass P1479 题解 这道题又又又又又是动规(我最近在学) 传统的五步: 1. 划分阶段 这里划分的阶段是在某个格子上时的最优解 2. 确定状态和状态变量 这里的状态数组 \(f\) 来进行存储,用数组 \(a\) 储存输入的数组。状态从他前面的格子获得,这些格子可能是: \[ a_{S},\ a_{S+1},\ a_{S+2}...a_{T-2},\ a_{T-1},\ a_{T} \] 3. 确定决策并写出状态转移 2023-01-03 题解 > OiClass
Oiclass P1221 题解 这道题不用多说也知道是 DP (看标签) 那么,究竟要怎样 DP 呢?下面依然是那熟悉的五步 1. 划分阶段 这里我采用的方法是划分爬到每一个位置,也就是以空间划分阶段 2. 确定状态和状态变量 OK,进入下一步 。在这里我定义的状态是在第 \(i\ (0<i≤n)\) 个位置时以跳到达和以爬到达的最优解,分别记为 \(jump_i\) 和 \(climb_i\) 3. 确定决策井写出状态转 2023-01-03 题解 > OiClass
Oiclass P3314 题解 这道题从题面就可以看出是经典的最长不下降子序列 对于这道一点都不简单的最长连续子序列和的模板题,我们还是直接暴力,代码: 123456789101112131415161718192021#include <iostream>using namespace std;int ans, n, a[1009];int main() { cin >> n; f 2023-01-03 题解 > OiClass
Oiclass P1220 题解 从标签题面可以看出这是一道动规(DP) 进入正题,依旧是传统的五步 1. 划分阶段 这里我的思路是将每公里的数值作为一个阶段,即 \(n\) 公里就有 \(n\) 个阶段,分别是: \[ 1, 2, 3, 4, 5, 6 ....(n-2),(n-1),(n) \] 2. 确定状态和状态变量 这里使用一个数组 \(f\) 来保存状态,即第 \(i\) 个状态为 \(f_i\) ,然后就没有了 3. 2023-01-03 题解 > OiClass
Oiclass P1235 题解 简单的一维动规 按照老师的要求 1. 划分阶段 非常容易的可以看出这道题目的阶段就是各个位置,即 \(i,\ j\) 。在这种划分下,每一种阶段的最优解可以由上一个阶段得到,且不会被右面的阶段所改变,故无后效性。综上,该题可以用 DP 求解 2. 确定状态和状态变量: 由 (1) 得:该题无后效性,故可用 递推的DP 进行求解,对于状态 \(i,\ j\) 的最优解,用 \(f_{i,j}\) 表 2023-01-03 题解 > OiClass
Oiclass P1213 题解 很明显,这道题是二分答案 那么,需要二分的是什么?有脑子都知道是,间距。那么求的究竟是最大值最小还是最小值最大呢?我们看到题目,我们需要求的是 “那么相邻两块土地之间的间隔的最大值” 也就是最小值最大。好的,那么框架有了,如下: 1234567891011bool check(int x);// l 是田之间的距离while (r - l > 1) { int mid = 2023-01-02 题解 > OiClass
Oiclass P3309 题解 这道是模拟题 思路如下 先输入 \(n\) 和 字符串 遍历字符串,如果没有出现过且\(当前排队人数<n\) ,将其标记,并将当前排队人数 \(+1\),如果\(当前排队人数 ≥n\) ,不标记,同时将答案 \(+1\) 如果已经出现过了,将当前人数 \(-1\) 同时将其标位为出现 实现 实现起来很简单,首先定义一个整数 \(n\) 、一个字符串 \(str\) 、一个布尔数组 \(p 2023-01-01 题解 > OiClass
Oiclass P2107 题解 这道题的思路非常奇怪(至少我觉得是这样) 你需要把它当做一道找规律题 \(\Huge{进入正题}\) 先看题目: 小 S 想计算一个自然数 n \((n < 2000)\) 的所有回文分解的个数 \(\% 1000000007\) 的值。 我们来看一下 \(1\to10\) 的所有整数的回文分解个数。简单在草稿纸上枚举可以发现,分别是: \[ 1,2,2,4,4,6,6,10,10,14 \ 2022-12-25 题解 > OiClass
Oiclass P1202 题解 这道题一看就是连通块 因为求连通块 DFS 最简单,所以我用 BFS 简单思路: 首先把外围的 0 给清除掉,然后统计数组里面还有多少个 0。 那么难点来了,究竟怎样能一次把外围所有的 0 给清除呢?记不记得我们在输入的时候一般都会从 [1][1] 开始输入,那么是不是从 [1][1] 到 [n][n] 都有值?没错,有脑子都知道有值,那么这个矩阵的四周是不是空出了一圈是没有值的,就像这样: 12 2022-12-05 题解 > OiClass
Oiclass Q&A P1106 题目: 代码: 1234567891011121314151617181920212223242526272829#include "iostream"#include "cstring"using namespace std;int n, cnt, t;int main(){ cin >> n; int a[n + 1] 2022-08-11 #OiClass #Q&A
OiClass.com Q&A P1194 这次提问的人是自己 P1194 阿克曼函数超时怎么破? 代码: 1234567891011121314151617181920212223#include "iostream"using namespace std;int x, y, ans;int ack(int m, int n){ if (m == 0){ return n += 2022-08-09 #OiClass #Q&A
Oiclass Q&A P1626 OiClass.com Q&A P1626 问题: 提问: 帮我解决的人是我爸 1234567891011121314151617181920#include <bits/stdc++.h>#define space ' 'using namespace std;int main(){ int n; int a[33333]; 2022-08-04 #OiClass #Q&A
Oiclass Q&A P2569 OiClass Q&A P2569 问题: oiclassq&ap1problem.png 很显然这是一道很简单的问题(大水题),让我们来看看提问: 哪位兄台能告诉我哪里错了吗,输入输出符合要求的: 1234567891011121314#include<iostream>#include<math.h> using namespace std;int 2022-08-04 #OiClass #Q&A