DHEnry 发布的文章

服务器意外事故、人工重启、停机维护、补偿标准


一、阐述

如题,因服务器意外事故、人工重启、停机维护等原因造成的服务中断,从现在开始,有一套完整的赔偿规则。

二、赔偿标准

赔偿项赔偿积分时间单位说明补偿方式
意外事故5 积分小时因服务器 BUG、崩溃重启(不包括夜间自动重启)等非人可干预的事故导致的游戏中断发生问题后需立即反馈,修复后发布补偿问卷,有效期 7 天
人工重启3 积分次因插件升级等人工造成的游戏中断重启前发放积分、重启后发放积分、问卷(有效期 12 小时)
停机维护7 积分小时因服务器硬件维护、迁移等原因人工造成的游戏中断从开始后,发布补偿问卷,有效期至维护结束

三、补偿详细说明

计算方式:次

无。

计算方式:小时

按向上取整计算。即只要发生事故,即使只有 1 毫秒,也要按 1 小时计算。

  • 例子:
  • 意外事故 1 毫秒,补偿 5 积分。
  • 意外事故 1 小时 1 毫秒,补偿 10 积分。

四、适用的人群

受到上述三项问题所干扰的玩家,可通过上述三种补偿方式申请补偿、直接收到补偿。

五、特殊补偿

当意外事故发生时,第一时间反馈给服务器所有者的玩家,可以额外奖励 0-∞ 积分。

FMCRAFT 2025 年年度更新汇总

爆竹声中一岁除,春风送暖入屠苏。

新年快乐。

接下来,迎来的是 —— FMCRAFT(繁忙的工艺)2025 年年年度更新汇总!

正文

网站

部分网站关闭,仅保留 www.tropical-fish.cn、oj.fmcraft.top、mc.fmcraft.top以及adminmc.fmcraft.top。

博客采用 Typecho + Handsome 主题。

我的世界服务器

服务器地址:mc.fmcraft.top

游戏方面

修复了部分问题,提升用户体验。

网站方面

开创了两个网站。

并且有了部分的内容。

将 typecho 的博客文章下载至本地

如题,这是本人的亲身经历

不废话了,直接开车

走人

正文

下载 typecho_contents 数据库为 SQL 文件

typecho_contents 主要包含一些文章内容、附件等等

所以我们需要下载他
2026-01-21-23-33-11-image.png

如图是使用 phpmyadmin 来导出 typecho_contents 中的记录

导出后,你会得到一个 SQL 文件

你成功了

删除你的 SQL 文件没用的东西

首先,手动打开你的 SQL 文件,找到这个并把下面这部分的内容给复制出来

--
-- 转存表中的数据 `typecho_contents`
--
INSERT INTO `typecho_contents` (`cid`, `title`, `slug`, `created`, `modified`, `text`, `order`, `authorId`, `template`, `type`, `status`, `password`, `commentsNum`, `allowComment`, `allowPing`, `allowFeed`, `parent`, `views`, `stars`) VALUES

复制这里的东西

--
-- 转储表的索引
--

单独把他保存到一个 txt 文件中

然后打开 ./assets/0_clear_nottidy.py,介绍一下,清理 png jpg pdf jpeg 在第二字段所包含的行,其他保留

你需要手动填写两个内容:

  • input_file_path 设置为你的 txt 文件路径,注意一定要有 R,是用来转义的,要用双引号包裹路径
  • output_file_path 设置为你的导出后 txt 文件路径,就是处理后的文件路径,同上

然后使用 python 直接运行,即可完成操作

恭喜你,删除完成,你可以手动浏览一下

从 SQL 文件中分类保存文章至文件夹

打开 ./assets/1_download_md.py,还是简单介绍一下,读取文章名称和时间戳和文章内容,在你所指定的目录下,新建 YYYYMMDD - title 的文件夹,即时间戳对应的年月日加上对应的文章名称,然后在文件夹里面新建 title.md 作为文章的主内容

你需要手动填写:

  • INPUT_FILE:上一次导出的 txt 文件路径,同上

然后还是使用 python 直接运行,即可完成操作

警告:导出后的文件将被保存在 C:/Users/<USER_NAME>/ 下

你可以手动观察一下,你会发现导出的 md 特别变态,所以接下来,我们就要处理换行符的问题 + 图片资源

保存图像附件和处理换行

打开 ./assets/2_make_image_rn_to_n.py,还是简单介绍一下,从 md 里面读取 ![]() 的格式,将 () 下载保存到当前文件夹的 assets 目录里头,然后将 \\r\\n 替换为 \n(不理解这句话内容的自行上网搜索)

你需要手动填写:

  • TARGET_DIR:设置上一次导出文章目录的目录(?)
  • download_url:但是你只需要修改我的 http://www.tropical-fish.cn 部分,修改为你的下载域名,不要加斜杠!!!

然后,你懂的

然后,你就会发现,换行好了,图片资源也被正确保存在了对应的 assets 目录下

你好牛逼啊!!!

处理开头的小插曲

打开 ./assets/3_kill_markdown.py,还是简单减少一下,删除 <!--markdown--> ,没了

你需要手动填写:

  • TARGET_DIR:你上一次导出文章的的目录的目录(?)

然后,你懂的

然后,你完成了

处理完成

资源下载

20260211 - 将 typecho 的博客文章下载至本地 - assets.zip - huang1111网盘

推荐一个 Markdown 编辑器 —— $\text{MarkText}$

Marktext - 一个很牛逼的 Markdown 编辑器!

[题外话] Typora 的落幕

Typora,是一个很牛逼的 Markdown 编辑器,但是,它要钱...
需要 $89$ 元的人民币,虽然是 永久 的授权,但对于学生党来说还是一个不低的价格。
尤其是小学生、初中生、高中生、大学生...(生活费问题)。

转折

但是 Markdown 是一个应用很广泛的标记语言(例如 OI),所以必定有一些替代品。
在这一堆可选的替代品中,首选的就是 Marktext,很适合从 Typora 过渡,使用根本差不多。

那么,现在就开始搞...

正文

简介

Github 官网:marktext/marktext: 📝A simple and elegant markdown editor, available for Linux, macOS and Windows.。
当然,你可能进不去,因为 Github 服务器位于海外,所以你需要 Using the internet securely 或者 Using Watt Tookit 的合法加速器。

🔆 下一代 Markdown 编辑器 🌙
一款简单优雅的开源 markdown 编辑器,注重速度和可用性。
适用于 Linux、macOS 和 Windows。

更多内容请查看该项目的 readme.md 文件

警告

我们是中文用户,我们将会使用非官方汉化的版本。
即 topabomb/marktext-specialedition: marktext0.17.1分叉的中文特别版

下载 & 解压程序

首先,进入到该软件的 Github 仓库页面(如上节)。

单击 Release 进入到该项目的软件发行页面,如 图1,版本号不一定为如图的版本.

图1

随后,找到 Assets 部分。

选择你需要的版本下载,例如 marktext-1.0beta-win64.zip,单击即可下载。

或者,你也可以直接单击 这个链接 进行下载。

注意,下载的文件格式为 zip。

然后,使用 Windows 自带的解压缩工具进行解压,或者使用你想要的解压工具解压,将其剪切到你的软件安装目录中,例如 C:\Program Files\Marktext。

首次运行程序

解压后,直接双击 MarkText.exe 即可打开主程序,界面如 图2。

图2

在这里,就可以直接键入 Markdown 字符了,所见即所得。

温馨提示:似乎只有这个界面有英文。

它会自动设置与你系统主题相同的主题。

与 Typora 不一样的地方

你需要按下 Ctrl 与 E 建才能开启源代码模式。

你不能在源代码模式下撤销更改。

默认开启 MathJax,即 Latex(Katex)。

你不能将 md 导出为 docx。

其他资源

如果你仍需要 Typora 破解版,这是一份可用的破解版:typora。

Thanks for reading.

众所周知

在某个奇怪的版本更新后,openlist(alist)不再支持设置用户为管理员,但是,不代表我们不能设置管理员

正文

偶然之间,我翻 openlist 文件的时候,发现了一个文件
image.png
那么,我们是不是可以通过这个数据库来修改一个用户为管理员捏?

开始操作

警告:Windows 需要先安装 Python,Linux 需要使用 apt install python3 && apt install pip 来安装 Python

进入终端

然后 cd 到 data 文件夹的位置(如果 Windows 不在当前盘符需要先键入盘符,前面不需要加任何内容,进入这个盘符,才能 cd 进入这个盘符的目录)

然后进入 python ,使用 python 或 python3

然后,依次键入以下命令

import sqlite3
conn = sqlite3.connect('data.db')
cur = conn.cursor()

恭喜你,已经成功连接数据库

然后,开始设置管理员

cur.execute("UPDATE x\_users SET role = 2 WHERE username = 'DHEnry';")
conn.commit()

将 DHEnry 设置为需要设置管理员的用户名(不是用户 ID)

然后,你就修改成功了

[FBC-1] FMCRAFTOJ 2026 年 1 月月赛 - J 组 - Round 1

变革时段

在以后,我们将使用新的命名方式命名比赛名称。
例如,FC-M-2601 的意义是 FMCRAFT 竞赛 - 月赛 - 26 年 1 月 - J 组第 1 轮

正文

众所周知,每场比赛都需要一个头图
image.png


本场比赛为 [FC-M-2601-J1] FMCRAFTOJ 2026 年 1 月月赛 - J 组 - Round 1,简称 [FC-M-2601-J1],题目非常简单,欢迎来挑战!


本场比赛的时间安排:

比赛开始于: Hour:   Minute:

比赛结束于: Hour:   Minute:


本场比赛,共计 $4$ 题,为月末月赛,本比赛页面是 J 组第 $1$ 轮,难度略比 CSP-J 简单,但是题目难度跨越大,但是涉及算法不一定符合,难度按出题人主观升序排序。


本场比赛的工作人员:

  • 负责人:DHEnryMC
  • 组织者:DHEnryMC
  • 出题人:DHEnryMC
  • 验题人:DHEnryMC
  • 审核员:DHEnryMC

全特么 DHEnryMC,额但是,当下的。。。


赛时不得做出任何影响公平性的行为,包括 GenAI。
如果做了,你的成绩会被取消,赛后会对代码抽样检查。如果代码过少会全部检查。


| 题目编号 | 题目名称 | 内存限制 | 时间限制 |
| - | - | - | - |
| A | 字符统计 | 1024 M | 1 S |
| B ||||
| C ||||
| D ||||


奖金安排:

  • 第一名:5 人民币

参赛地址:

[比赛1001 - [FC-M-2601-J1] FMCRAFTOJ 2026 年 1 月月赛 - J 组 - Round 1 - FMCRAFT-OnlineJudge](https://oj.fmcraft.top/contest.php?cid=1001)

本场比赛不设立同步赛。

不需要报名,注册完成等比赛开始就可以直接做题


请支持我们的比赛,谢谢!

BoxIM For Windows V1.0 更新日志

更新

功能性

  • 内嵌网页
  • 支持一些小工具(可拖动)
  • 下载文件选择保存位置
  • 登录成功 Windows 通知

已知 BUG

  • 可能会闪退

未来会解决的问题

  • 消息通知
  • 窗口图标

截图

工具栏

主界面


警告

  • 初次版本,肯定有很多莫名其妙的 BUG
  • 该版本由 AI 主编
  • 该项目不是官方项目
  • 初测阶段,为了更方便的收集 BUG,展示命令行

下载

https://pan.huang1111.cn/s/RY2NMhB

永久性 URL

【FMCRAFT 繁忙的工艺】关于2026年跨年及春节期间业务安排的初步通知

尊敬的各位玩家:

感谢大家长期以来对我们服务器的支持与陪伴。2026年春节即将来临,为保障节日期间的系统稳定、并为运营团队提供充足的休整时间,我们初步拟定了春节期间的业务安排。
请注意:以下为初稿方案,具体时间可能根据实际情况调整,请以最终公告为准。该通知仅限于【FMCRAFT 繁忙的工艺】


一、服务暂停时间(初步计划)

  • 开始时间:2026年1月25日(农历腊月初七)00:00
  • 结束时间:2026年2月13日(农历正月十六)24:00
  • 总计暂停时长:20天

二、服务恢复时间(初步计划)

  • 预计于 2026年2月14日(农历正月十七)上午10:00 起逐步恢复服务。

三、注意事项

  1. 请玩家提前规划游戏时间,在服务器暂停前妥善安排游戏内事务。
  2. 服务器关闭期间,所有玩家数据将正常保存并备份,无需担心进度丢失。
  3. 若有紧急问题,可通过 我的联系方式 - 壹鲦热带鱼的小窝 留言,我们将在节后统一处理。
  4. 本安排为初稿,后续可能根据实际情况调整,请密切关注最终公告。

四、具体安排

我们会在上述的时间内关闭服务器,期间将不得进入。
其他业务(OJ、博客)不会暂停服务。


五、节后计划

春节后,我们将推出系列开年活动与版本更新,期待与大家在新的一年继续共创精彩!

感谢大家的理解与支持。预祝各位春节快乐,阖家幸福,万事如意!

(注:本通知为初稿,最终安排以后续正式公告为准。)


六、更新版次

  • 2025年12月28日第一版

www.tropical-fish.cn
2025年12月28日

2025/12/22 to 2025/12/28 周记

前情提要

我也是开始写周记了喵

2025/12/22 Monday

文化课

  • 当日作业:

    • 语文:1.完成卷纸 2.预习《邓稼先》
    • 数学:1.卷纸反面
    • 英语:1.作业本 U6L5+U7L1 2.订正默写
    • 科学:1.补中午作业
    • 地理:1.作业本P70-73
    • 道法:1.方丛P67-69+70(填空) 2.订正方丛 3.订正默写
  • Fuck,好困,起不来床
  • 培优的时候科学考试了,但是我去培优了,老师把试卷留下来,让我回家去考,这次考试记为 SL-7A-D-1222
  • 11:30 睡觉,但是没有背《孙权劝学》

OI

  • 今日 AK 1 题,绿题

Technology

  • 处理了一下 MC 服务器的违规检测插件

其他

总结

  • 作业有点多,但是精神良好

2025/12/23 Tuesday

文化课

  • 当日作业:

    • 语文:1.练习一张(最后一题不做)
    • 数学:1.全程 A 单元复习 2
    • 英语:1.练习一张 2.背诵范文(钉钉)

      • I love weekends. Here’s how I spend(度过) my Saturdays.

        My Saturday starts at 7:30 a.m. After washing up(洗漱), I enjoy a healthy breakfast at 8:00. From 9:00 to 12:00, I usually do my homework / so that / I can have fun / without stress / for the rest(剩余) of the day. After that, I have a 10-minute break and then have lunch at 12:15 p.m..

        (……下午和晚上的活动用上段讲解的技巧根据实际情况续写)

        As you can see, I make good use of my time. I believe that to plan time is to save time. In this way, I not only relax well but also learn something.

    • 科学:1.全程A P61-63 2.试卷签名
    • 历史:1.准备默写 L17+18
    • 地理:2.作业本 P74-80
  • 昨天的科学(SL-7A-D-1222)成绩出来了,93 分,操,算了一下,其实我应该可以拿到 108 分的
  • 得到了一个学校的小道消息,但是在这里我不能说~
  • 语文老师让我们背诵《孙权劝学》,我没背下来,www
  • 可爱英语老师在晚托(我在上培优班)的时候讲课,傻逼
  • 被体育老师骂了好几次,因为讲话
  • 早读英语老师讲了作业本,错了一道题(嘻嘻)

OI

Technology

其他

总结

abc437

题面

A - 英尺

分值:100 分

题目描述

1 英尺等于 12 英寸。
请问 A 英尺 B 英寸换算成英寸是多少英寸?

约束条件

  1. $1 \leq A \leq 8$
  2. $0 \leq B \leq 11$
  3. 所有输入值均为整数

输入格式

输入通过标准输入按以下格式给出:

A B

输出格式

将答案输出在一行中。省略单位(英寸)进行输出。

输入样例 1

6 7

输出样例 1

79

6 英尺 7 英寸换算成英寸为 $6 \times 12 + 7 = 79$ 英寸。

输入样例 2

4 11

输出样例 2

59

4 英尺 11 英寸换算成英寸为 $4 \times 12 + 11 = 59$ 英寸。

输入样例 3

8 0

输出样例 3

96

8 英尺 0 英寸换算成英寸为 $8 \times 12 + 0 = 96$ 英寸。


B - 幸运抽奖

题目描述

有一个 $H$ 行 $W$ 列的网格。每个格子中写着一个整数,所有整数互不相同。从上到下第 $i$ 行、从左到右第 $j$ 列的格子中写有整数 $A_{i,j}$。

现在,主持人喊出了 $N$ 个互不相同的整数 $B_1, \dots, B_N$。

对于每一行,计算出主持人喊出的整数中,有多少个出现在该行中。这些数量的最大值是多少?

约束条件

$1 \leq H \leq 3$
$1 \leq W \leq 5$
$1 \leq N \leq 90$
$1 \leq A_{i,j} \leq 90$
$A_{i,j}$ 互不相同
$1 \leq B_i \leq 90$
$B_i$ 互不相同
所有输入值均为整数

输入格式

输入通过标准输入给出,格式如下:

H W N
A_{1,1} ... A_{1,W}
...
A_{H,1} ... A_{H,W}
B_1
...
B_N

输出格式

输出一行,包含答案。

输入样例 1

3 4 5
12 3 5 7
6 10 11 9
1 2 4 8
2
4
9
6
11

输出样例 1

3

输入样例 2

3 5 2
81 63 31 16 15
30 3 6 54 24
26 41 48 64 66
44
79

输出样例 2

0

输入样例 3

3 5 12
78 19 70 58 83
12 30 80 20 27
48 71 8 43 82
82
30
43
8
80
70
20
78
12
71
19
48

输出样例 3

5

C - 驯鹿与雪橇 2

题目描述

有 $N$ 头驯鹿和 1 架雪橇。第 $i$ 头驯鹿的体重为 $W_i$,力量为 $P_i$。

对于每头驯鹿,需要选择是让它“拉雪橇”还是“乘坐雪橇”。
但是,拉雪橇的驯鹿的力量总和必须大于等于乘坐雪橇的驯鹿的体重总和。
最多可以让多少头驯鹿乘坐雪橇?

给定 $T$ 个测试用例。请分别回答每个用例。

约束条件

$1 \leq T \leq 10^5$
$1 \leq N \leq 3 \times 10^5$
$1 \leq W_i, P_i \leq 10^9$
所有输入值均为整数。
单个输入文件中所有 $N$ 的总和不超过 $3 \times 10^5$。

输入格式

输入通过标准输入给出,格式如下:

T
case_1
case_2
⋮
case_T

每个测试用例的格式如下:

N
W_1 P_1
W_2 P_2
⋮
W_N P_N

输出格式

输出 $T$ 行。第 $i$ 行输出第 $i$ 个测试用例的答案。

输入样例 1

3
3
3 1
4 1
5 9
5
1000000000 1
1000000000 1
1000000000 1
1000000000 1
1000000000 1
10
133180711 458704923
531424946 225863856
141986070 637075158
500770732 289806469
502866767 408857335
559714289 569084545
287444582 992432993
559747907 753133304
432846188 949871298
727072164 756020367

输出样例 1

2
0
6

D - 差之和

题目描述

给定一个长度为 $N$ 的正整数序列 $A = (A_1, A_2, \dots, A_N)$ 和一个长度为 $M$ 的正整数序列 $B = (B_1, B_2, \dots, B_M)$。

求 $\displaystyle \sum_{i=1}^{N} \sum_{j=1}^{M} |A_i - B_j|$ 的值,并对 $998244353$ 取模。

约束条件

$1 \leq N, M \leq 3 \times 10^5$
$1 \leq A_i, B_j < 998244353$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N M
A_1 A_2 ... A_N
B_1 B_2 ... B_M

输出格式

输出一行,包含答案。

输入样例 1

4 2
1 6 9 2
3 1

输出样例 1

26

输入样例 2

8 8
185991676 311812083 311812083 84357963 185991676 185991676 724020528 369175631
455049197 387671868 4361724 724020528 724020528 455049197 455049197 724020528

输出样例 2

529117255

E - 对数组排序

题目描述

有 $N+1$ 个序列 $A_0, A_1, \dots, A_N$。$A_i$ 定义如下:
. $A_0$ 是一个空序列。
. $A_i$ $(1 \le i \le N)$ 是在序列 $A_{x_i}$ $(0 \le x_i < i)$ 的末尾添加整数 $y_i$ 后得到的序列。

找出满足以下条件的排列 $P = (P_1, P_2, \dots, P_N)$(即 $(1, 2, \dots, N)$ 的一个排列):
. 对于 $i = 1, 2, \dots, N-1$,满足以下条件之一:
. $A_{P_i}$ 在字典序上小于 $A_{P_{i+1}}$。
. $A_{P_i} = A_{P_{i+1}}$ 且 $P_i < P_{i+1}$。
换句话说,当将 $A_1, A_2, \dots, A_N$ 按字典序排列(当有多个相同的序列时,索引较小的在前)时,$P$ 就是该排列中出现的索引序列。

约束条件

$1 \leq N \leq 3 \times 10^5$
$0 \leq x_i < i$
$1 \leq y_i \leq 10^9$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N
x_1 y_1
x_2 y_2
⋮
x_N y_N

输出格式

在一行中输出 $P_1, P_2, \dots, P_N$,用空格分隔。

输入样例 1

4
0 2
0 1
2 2
0 1

输出样例 1

2 4 3 1

解释:
$A_1 = (2), A_2 = (1), A_3 = (1, 2), A_4 = (1)$,所以 $P = (2, 4, 3, 1)$。

输入样例 2

5
0 1
0 1
0 1
0 1
0 1

输出样例 2

1 2 3 4 5

输入样例 3

10
0 305186313
1 915059758
0 105282054
1 696409999
3 185928366
3 573289179
6 254538849
3 105282054
5 696409999
8 168629803

输出样例 3

3 8 10 5 9 6 7 1 4 2

F - 曼哈顿圣诞树 2

题目描述

在二维平面上有 $N$ 棵圣诞树。第 $i$ 棵($1 \leq i \leq N$)圣诞树位于坐标 $(X_i, Y_i)$。

给你 $Q$ 个查询。请按顺序处理这些查询。每个查询是以下两种类型之一:

类型 1:以 1 i x y 的形式给出。将第 $i$ 棵圣诞树的坐标改为 $(x, y)$。
类型 2:以 2 L R x y 的形式给出。输出从坐标 $(x, y)$ 到第 $L, L+1, \dots, R$ 棵圣诞树中最远的圣诞树的曼哈顿距离。

这里,坐标 $(x_1, y_1)$ 和 $(x_2, y_2)$ 之间的曼哈顿距离定义为 $|x_1 - x_2| + |y_1 - y_2|$。

约束条件

$1 \leq N, Q \leq 2 \times 10^5$
$-10^9 \leq X_i, Y_i \leq 10^9$
$1 \leq i \leq N$
$1 \leq L \leq R \leq N$
$-10^9 \leq x, y \leq 10^9$
所有输入值均为整数。

输入格式

输入通过标准输入给出,格式如下:

N Q
X_1 Y_1
X_2 Y_2
⋮
X_N Y_N
query_1
query_2
⋮
query_Q

其中,第 $i$ 个查询 query_i 以下列两种格式之一给出:

1 i x y
2 L R x y

输出格式

根据问题描述中的说明,输出查询的答案,每个答案占一行。

输入样例 1

3 4
-1 -1
1 2
-2 1
2 1 2 0 0
2 1 3 -1 2
1 1 0 1
2 1 3 -1 2

输出样例 1

3
3
2

解释:
最初,第 1、2、3 棵圣诞树分别位于坐标 $(-1, -1)$、$(1, 2)$、$(-2, 1)$。
处理每个查询:

  1. 从第 1、2 棵圣诞树到坐标 $(0, 0)$ 的曼哈顿距离分别为 $2$ 和 $3$。因此输出 $3$,即 $2, 3$ 中的最大值。
  2. 从第 1、2、3 棵圣诞树到坐标 $(-1, 2)$ 的曼哈顿距离分别为 $3$、$2$、$2$。因此输出 $3$,即 $3, 2, 2$ 中的最大值。
  3. 将第 1 棵圣诞树的坐标改为 $(0, 1)$。第 1、2、3 棵圣诞树的坐标变为 $(0, 1)$、$(1, 2)$、$(-2, 1)$。
  4. 从第 1、2、3 棵圣诞树到坐标 $(-1, 2)$ 的曼哈顿距离分别为 $2$、$2$、$2$。因此输出 $2$,即 $2, 2, 2$ 中的最大值。

输入样例 2

5 7
-9 5
-2 -9
10 -6
9 8
2 9
1 3 -9 -6
2 3 4 2 7
1 4 -2 -10
2 1 2 0 -10
2 3 4 10 -9
2 3 4 8 7
2 5 5 0 2

输出样例 2

24
24
22
30
9

G - 彩色圣诞树

题目描述

今年的圣诞节季节已经结束,终于到了新年的时刻。高桥正在忙着进行大扫除,要收起圣诞树。

有一棵用三种颜色(红色、蓝色、绿色)装饰的灯泡装饰的圣诞树。圣诞树上有 $N$ 个灯泡,它们由 $N-1$ 条丝带连接。将灯泡视为顶点,丝带视为边,这个图是一棵树。

灯泡编号从 $1$ 到 $N$,丝带编号从 $1$ 到 $N-1$。丝带 $i$ 连接灯泡 $u_i$ 和 $v_i$。灯泡 $i$ 初始亮着红色(如果 $c_i$ 是 R),绿色(如果 $c_i$ 是 G),或蓝色(如果 $c_i$ 是 B)。

高桥正在考虑执行以下操作 $N-1$ 次来移除所有丝带:

  1. 从尚未移除的丝带中选择一条,其两端的灯泡颜色不同,然后移除该丝带。
  2. 设 $u$ 和 $v$ 是被移除丝带两端的灯泡。对于每个灯泡 $u$ 和 $v$,根据以下规则改变它们亮的颜色:

    • 如果之前亮红色,则改为亮绿色。
    • 如果之前亮绿色,则改为亮蓝色。
    • 如果之前亮蓝色,则改为亮红色。

确定高桥是否可以通过重复此操作来移除所有丝带。如果可能,输出一种方法。

给定 $T$ 个测试用例。请解决每个测试用例。

约束条件

$1 \leq T \leq 20000$
$2 \leq N \leq 2000$
$c_i$ 是 R、G 或 B。
$1 \leq u_i, v_i \leq N$
将灯泡视为顶点,丝带视为边,给定的图是一棵树。
$T, N, u_i, v_i$ 是整数。
单个输入文件中所有 $N^2$ 的总和不超过 $2000^2$。

输入格式

输入通过标准输入给出,格式如下:

T
case_1
case_2
⋮
case_T

每个测试用例的格式如下:

N
c_1 c_2 ... c_N
u_1 v_1
u_2 v_2
⋮
u_{N-1} v_{N-1}

输出格式

按顺序输出 case_1, case_2, ..., case_T 的答案,格式如下:

如果无法移除所有丝带,输出 No。

如果可能,设 $e_i$ 为第 $i$ 次操作移除的丝带编号,输出:

Yes
e_1 e_2 ... e_{N-1}

其中 $(e_1, e_2, \dots, e_{N-1})$ 必须是 $(1, 2, \dots, N-1)$ 的一个排列。

如果有多个解,任意一个都将被视为正确。

输入样例 1

3
4
GBBR
1 2
1 3
1 4
3
RRR
1 2
2 3
5
RGBRG
1 2
2 3
3 4
3 5

输出样例 1

Yes
1 3 2
No
Yes
1 4 2 3

解释:
对于第一个测试用例,例如,可以通过以下操作移除所有丝带:

  1. 初始时,灯泡颜色依次(从灯泡 1 开始)为绿色、蓝色、蓝色、红色。
  2. 移除丝带 1。移除后,灯泡颜色依次为蓝色、红色、蓝色、红色。
  3. 移除丝带 3。移除后,灯泡颜色依次为红色、红色、蓝色、绿色。
  4. 移除丝带 2。移除后,灯泡颜色依次为绿色、红色、红色、绿色。
    满足条件的 $(e_1, e_2, e_3)$ 是 $(1, 3, 2)$ 和 $(2, 3, 1)$,任意一个都将被视为正确。

对于第二个测试用例,无论你如何操作,都无法移除所有丝带。

反思

A

本题是一道签到题
根据题意可知:

$$ \text{总英寸数} = A \times 12 + B $$

由于题目的数据范围过小,可直接使用顺序结构求解
以下是我赛场时的代码

#include <bits/stdc++.h>
using namespace std;
int a,b;
int main(){
    cin>>a>>b;
    cout<<a*12+b;
}

B

题目的意思就是:题目要求计算每一行中主持人喊出的整数出现的个数,并输出这些个数的最大值
由于数据范围过小,可直接使用数组存储,不需要使用任何数据优化方案
思路:

  1. 读入 $H,W,N$
  2. 用二维数组 $A$ 存储矩阵
  3. 用一个大小为 $91$ (∵ $1 \leq B_i \leq 90$)的布尔数组 isB 标记 $B$ 中的数
  4. 对每一行遍历,统计这一行中有多少个数在 isB 中被标记为 true
  5. 记录这些统计数的最大值并输出
    以下是我赛时的代码:
#include <bits/stdc++.h>
using namespace std;
int H,W,N,i,j,b,cnt,ma,a[5][6],fl[91];
int main(){
    cin>>H>>W>>N;
    for(i=0;i<H;i++) for(j=0;j<W;j++) cin>>a[i][j];
    for(i=0;i<N;i++){
        cin>>b;fl[b]=1;
    }
    for(i=0;i<H;i++){
        cnt=0;
        for(j=0;j<W;j++) if(fl[a[i][j]]) cnt++;
        if(cnt>ma) ma=cnt;
    }
    cout<<ma;
}

根据题目思路就可以得出代码,非常 Easy

C

这题我在赛时并没有得出正确程序
赛后,我邀请 deepseek 完成此题,我将对 deepseek 的内容进行阐述

算法:贪心
题目阐述:有 (N) 头驯鹿,每头驯鹿有体重 (W_i) 和力量 (P_i)。选择一部分驯鹿“乘坐雪橇”,剩下的“拉雪橇”。要求“拉雪橇”的驯鹿的力量总和 ≥ “乘坐雪橇”的驯鹿的体重总和。问最多可以让多少头驯鹿乘坐雪橇
问题转化为:在不超过总力量 (S) 的前提下,最多能选择多少头驯鹿,使得它们的 (W_i + P_i) 之和不超过 (S)。这是一个典型的贪心问题:按 (W_i + P_i) 从小到大选择,直到总和超过 (S)
对每个测试用例:

  1. 读入 (N) 和每头驯鹿的 (W_i, P_i)
  2. 计算总力量 (S = \sum P_i)
  3. 计算每头驯鹿的 (a_i = W_i + P_i),并排序
  4. 从小到大累加 (a_i),直到总和超过 (S),累加的个数即为答案
    时间复杂度:$O(N \operatorname{log} N)$

这是 deepseek 给出的代码:

#include<iostream>
#include<algorithm>
using namespace std;
int T,N,i,cnt;
long long totalP,sum,W,P;
long long a[100005];

int main(){
    cin>>T;
    while(T--){
        cin>>N;
        totalP=0;
        for(i=0;i<N;i++){
            cin>>W>>P;
            a[i]=W+P;
            totalP+=P;
        }
        sort(a,a+N);
        sum=0;
        cnt=0;
        for(i=0;i<N;i++){
            if(sum+a[i]<=totalP){
                sum+=a[i];
                cnt++;
            }else{
                break;
            }
        }
        cout<<cnt<<endl;
    }
    return 0;
}