2025年12月

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;
}

abc436 反思

题面

A - o 判定

问题描述

给定一个整数 $ N $ 和一个由小写英文字母组成的字符串 $ S $,其长度小于 $ N $。

请输出通过持续在字符串 $ S $ 的开头添加小写英文字母 o 直到其长度变为 $ N $ 所得到的字符串。

约束条件

  • $ 2 \leq N \leq 100 $
  • $ N $ 为整数
  • $ S $ 是由小写英文字母组成的字符串,长度介于 $ 1 $ 到 $ N-1 $ 之间(包含边界)。

输入格式

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

$$ N $$

$$ S $$

输出格式

输出答案字符串。

样例输入 1

5
abc

样例输出 1

ooabc

解释:$ N=5 $,$ S $ 的长度为 $ 3 $,因此需要在 $ S $ 的开头添加 $ 5 - 3 = 2 $ 个 o。

样例输入 2

2
o

样例输出 2

oo

样例输入 3

12
vgxgpuam

样例输出 3

oooovgxgpuam

B - 幻方阵

问题描述

给定一个大于等于 $ 3 $ 的奇数 $ N $。

有一个 $ N $ 行 $ N $ 列的方格,初始时所有格子均为空白。现在,按照以下步骤在方格中的每个格子上写入整数。
记格子 $ (i, j) $ 表示从上到下第 $ i+1 $ 行、从左到右第 $ j+1 $ 列的格子($ 0 \leq i < N, 0 \leq j < N $)。

  1. 在格子 $ \left(0, \frac{N-1}{2}\right) $ 中写入 $ 1 $。
  2. 重复以下操作 $ N^2 - 1 $ 次:

    • 设上一次写入整数的格子为 $ (r, c) $,写入的整数为 $ k $。如果格子 $ ((r-1) \bmod N, (c+1) \bmod N) $ 是空白的,则在该格子写入 $ k+1 $;否则,在格子 $ ((r+1) \bmod N, c) $ 中写入 $ k+1 $。
    • 这里,$ x \bmod N $ 表示 $ x $ 除以 $ N $ 的余数。

请找出按照此过程在每个格子中写入的整数。
可以证明,每个格子恰好会被写入一个整数。

约束条件

  • $ 3 \leq N \leq 99 $
  • $N$ 是奇数

输入格式

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

$$ N $$

输出格式

设格子 $ (i, j) $ 中写入的整数为 $ a_{i, j} $,并按如下格式输出:

$$ a_{0, 0} \ a_{0, 1} \ \dots \ a_{0, N-1} \\ \vdots \\ a_{N-1, 0} \ a_{N-1, 1} \ \dots \ a_{N-1, N-1} $$

样例输入 1

3

样例输出 1

8 1 6
3 5 7
4 9 2

解释:

  1. 在格子 $ (0, \frac{3-1}{2}) = (0, 1) $ 中写入 $ 1 $。
  2. 格子 $ ((0-1) \bmod 3, (1+1) \bmod 3) = (2, 2) $ 是空白的,因此写入 $ 2 $。
  3. 格子 $ ((2-1) \bmod 3, (2+1) \bmod 3) = (1, 0) $ 是空白的,因此写入 $ 3 $。
  4. 格子 $ ((1-1) \bmod 3, (0+1) \bmod 3) = (0, 1) $ 非空白,因此在格子 $ ((1+1) \bmod 3, 0) = (2, 0) $ 中写入 $ 4 $。
  5. 依此类推……

样例输入 2

5

样例输出 2

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

C - 放置 2×2 方块

问题描述

有一个 $ N $ 行 $ N $ 列的方格。记格子 $ (i, j) $ 表示从上到下第 $ i $ 行、从左到右第 $ j $ 列的格子。初始时,方格上没有任何方块。

现在将进行 $ M $ 次操作。第 $ i $ 次操作($ 1 \leq i \leq M $)如下:

  • 将以格子 $ (R_i, C_i) $ 为左上角的 $ 2 \times 2 $ 区域的方块放置到方格上,当且仅当该区域与已放置的其他方块不重叠。
    更精确地说,对于单元格集合 $ S = \{ (R_i, C_i), (R_i+1, C_i), (R_i, C_i+1), (R_i+1, C_i+1) \} $,如果方格上已存在的方块占据了 $ S $ 中的任意一个格子,则什么也不做;否则,放置一个占据 $ S $ 中全部 4 个格子的方块。

请计算所有操作结束后,方格上共有多少个方块。

约束条件

  • $ 2 \leq N \leq 10^9 $
  • $ 1 \leq M \leq 2 \times 10^5 $
  • $ 1 \leq R_i, C_i \leq N-1 $
  • 输入均为整数

输入格式

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

$$ N \ M $$

$$ R_1 \ C_1 $$

$$ R_2 \ C_2 $$

$$ \vdots $$

$$ R_M \ C_M $$

输出格式

输出答案。

样例输入 1

4 3
1 1
2 2
2 3

样例输出 1

2

解释:
下图展示了操作过程,黑色填充区域表示方块,红色边框区域表示下一个要放置方块的位置。
abc436_c.png

  1. 操作 1:以格子 $ (1, 1) $ 为左上角的 $ 2 \times 2 $ 区域为空,因此放置方块。
  2. 操作 2:以格子 $ (2, 2) $ 为左上角的 $ 2 \times 2 $ 区域中,格子 $ (2, 2) $ 已被占据,因此什么也不做。
  3. 操作 3:以格子 $ (2, 3) $ 为左上角的 $ 2 \times 2 $ 区域为空,因此放置方块。

因此,所有操作结束后,方格上有 2 个方块。

样例输入 2

1000000000 4
1 1
1 101
101 1
101 101

样例输出 2

4

所有操作都可以放置方块。

样例输入 3

8 10
6 5
7 3
6 7
3 4
4 2
3 7
1 3
7 4
6 1
6 1

样例输出 3

8

可能存在满足 $ (R_i, C_i) = (R_j, C_j) $ 的 $ i, j $($ i \neq j $)。


D - 传送迷宫

问题描述

有一个迷宫,由 $ H $ 行 $ W $ 列的网格构成。记格子 $ (i, j) $ 表示从上到下第 $ i $ 行、从左到右第 $ j $ 列的格子。格子 $ (i, j) $ 的类型由字符 $ S_{i, j} $ 给出,每个字符的含义如下:

  • .:空单元格
  • #:障碍单元格
  • 小写英文字母(a - z):传送单元格

在迷宫中,你可以按任意顺序执行以下两种类型的操作任意多次:

  1. 步行:从当前单元格移动到上下左右四个方向相邻的单元格。但是,不能移动到障碍单元格或网格外。
  2. 传送:当你处于一个传送单元格时,可以移动到写有相同字母的任意传送单元格。

判断是否可以从单元格 $ (1, 1) $ 移动到单元格 $ (H, W) $,如果可能,求出所需的最小总操作次数。

约束条件

  • $ 1 \leq H, W \leq 1000 $
  • $ H \times W \geq 2 $
  • $ H $ 和 $ W $ 为整数
  • $ S_{i, j} $ 是 .、# 或小写英文字母
  • $ S_{1, 1} \neq \# $
  • $ S_{H, W} \neq \# $

输入格式

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

$$ H \ W $$

$$ S_{1, 1} \ S_{1, 2} \ \dots \ S_{1, W} $$

$$ \vdots $$

$$ S_{H, 1} \ S_{H, 2} \ \dots \ S_{H, W} $$

输出格式

如果可以从单元格 $ (1, 1) $ 移动到单元格 $ (H, W) $,输出所需的最小总操作次数;否则输出 -1。

样例输入 1

3 4
..a.
####
ba#b

样例输出 1

5

解释:
可以通过以下操作从单元格 $ (1, 1) $ 移动到单元格 $ (3, 4) $:

  1. 从 $ (1, 1) $ 步行到 $ (1, 2) $
  2. 从 $ (1, 2) $ 步行到 $ (1, 3) $
  3. 从 $ (1, 3) $ 传送到 $ (3, 2) $
  4. 从 $ (3, 2) $ 步行到 $ (3, 1) $
  5. 从 $ (3, 1) $ 传送到 $ (3, 4) $

总操作次数为 $ 5 $,这是最小值。

样例输入 2

3 4
..a.
####
b.#b

样例输出 2

-1

无法从单元格 $ (1, 1) $ 移动到单元格 $ (3, 4) $。

样例输入 3

4 4
xxxx
xxxx
xxxx
xxxx

样例输出 3

1

样例输入 4

7 11
u..#y..#...
k..#.z.#.k.
iju#...#x..
###########
..x#.t.#..n
abc#y..#...
..z#..t#.y.

样例输出 4

12

E - 最小交换次数

问题描述

给定一个整数序列 $ P = (P_1, P_2, \dots, P_N) $,它是 $ (1, 2, \dots, N) $ 的一个排列。这里保证 $ P $ 不等于 $ (1, 2, \dots, N) $。

你想要执行零次或多次以下操作,使 $ P $ 匹配序列 $ (1, 2, \dots, N) $:

  • 选择一对整数 $ (i, j) $ 满足 $ 1 \leq i < j \leq N $。交换 $ P_i $ 和 $ P_j $ 的值。

设 $ K $ 为使 $ P $ 匹配序列 $ (1, 2, \dots, N) $ 所需的最少操作次数。

找出可以作为第一次操作的操作数量,使得存在一个操作序列能在 $ K $ 次操作内使 $ P $ 匹配序列 $ (1, 2, \dots, N) $。当且仅当选择的整数对 $ (i, j) $ 不同时,两个操作被视为不同。

约束条件

  • $ 2 \leq N \leq 3 \times 10^5 $
  • $ 1 \leq P_i \leq N $($ 1 \leq i \leq N $)
  • $ P_i \neq P_j $($ 1 \leq i < j \leq N $)
  • 存在 $ 1 \leq i \leq N $ 使得 $ i \neq P_i $
  • 所有输入值均为整数

输入格式

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

$$ N $$

$$ P_1 \ P_2 \ \dots \ P_N $$

输出格式

输出答案。

样例输入 1

5
3 1 4 2 5

样例输出 1

6

例如,可以通过以下三次操作达成目标:

  1. 选择 $ (i, j) = (1, 2) $。$ P $ 变为 $ (1, 3, 4, 2, 5) $
  2. 选择 $ (i, j) = (2, 4) $。$ P $ 变为 $ (1, 2, 4, 3, 5) $
  3. 选择 $ (i, j) = (3, 4) $。$ P $ 变为 $ (1, 2, 3, 4, 5) $

无法在两次或更少操作内达成目标,因此 $ K = 3 $。

如上所述,第一次操作选择 $ (1, 2) $ 可以在三次操作内达成目标。此外,如果第一次操作选择 $ (1, 3) $、$ (1, 4) $、$ (2, 3) $、$ (2, 4) $、$ (3, 4) $ 中的任意一个,那么通过适当执行接下来的两次操作,也可以使 $ P $ 变为 $ (1, 2, 3, 4, 5) $。

因此,输出 6。

样例输入 2

2
2 1

样例输出 2

1

样例输入 3

20
15 5 13 17 9 11 20 4 14 16 6 3 8 19 12 7 10 18 2 1

样例输出 3

77

F - 星空风景照

问题描述

在从 AtCoder 星球看到的夜空中,有 $ N $ 颗星星,这些星星自东向西排成一条直线。从东数第 $ i $ 颗星星($ 1 \leq i \leq N $)是这些星星中第 $ B_i $ 亮的。

Takahashi 决定用以下步骤拍摄夜空:

  1. 选择一对整数 $ (l, r) $ 满足 $ 1 \leq l \leq r \leq N $,并调整相机,使得从东数第 $ l $ 颗、第 $ (l+1) $ 颗、…、第 $ r $ 颗星星全部进入取景框,且没有其他星星进入取景框。
  2. 选择一个整数 $ b $ 满足 $ 1 \leq b \leq N $,并打开快门,使得所有 $ N $ 颗星星中亮度排名在第 1 到第 $ b $ 位(且在取景框内)的星星被拍摄到,其他星星不被拍摄。
    但是,他不能拍摄没有星星被捕捉到的照片。

求用这种方式拍摄的照片中,可以捕捉到的星星的不同集合的数量。

约束条件

  • $ 1 \leq N \leq 5 \times 10^5 $
  • $ 1 \leq B_i \leq N $($ 1 \leq i \leq N $)
  • $ B_i \neq B_j $($ 1 \leq i < j \leq N $)
  • 所有输入值均为整数

输入格式

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

$$ N $$

$$ B_1 \ B_2 \ \dots \ B_N $$

输出格式

输出答案。

样例输入 1

4
3 1 4 2

样例输出 1

12

例如,当 $ (l, r) = (2, 4) $,$ b = 3 $ 时,你可以拍摄包含两颗星星的照片:从东数第 2 颗星星和第 4 颗星星。

包括这个在内,你可以拍摄以下 12 种不同的星星集合。每张照片中,较东的星星排在较左边,第 $i$ 亮的星星用整数 $i$ 标记。
abc436_f.png

没有其他集合可以被捕捉,因此输出 12。

样例输入 2

7
1 2 3 4 5 6 7

样例输出 2

28

样例输入 3

20
15 5 13 17 9 11 20 4 14 16 6 3 8 19 12 7 10 18 2 1

样例输出 3

627

G - 线性不等式

问题描述

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

求满足以下条件的非负整数序列 $ x = (x_1, x_2, \dots, x_N) $ 的数量:

$$ \sum_{i=1}^{N} A_i x_i \leq M $$

由于该数量可能非常大,请输出其对 $ 998244353 $ 取模的结果。

约束条件

  • $ 1 \leq N \leq 100 $
  • $ 1 \leq A_i \leq 100 $($ 1 \leq i \leq N $)
  • $ 1 \leq M \leq 10^{18} $
  • 所有输入值均为整数

输入格式

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

$$ N \ M $$

$$ A_1 \ A_2 \ \dots \ A_N $$

输出格式

输出满足条件的非负整数序列的数量(对 $ 998244353 $ 取模)。

样例输入 1

4 6
5 4 3 2

样例输出 1

10

满足条件的序列 $ x $ 有以下 10 个:
$ (0,0,0,0) $, $ (0,0,0,1) $, $ (0,0,0,2) $, $ (0,0,0,3) $, $ (0,0,1,0) $, $ (0,0,1,1) $, $ (0,0,2,0) $, $ (0,1,0,0) $, $ (0,1,0,1) $, $ (1,0,0,0) $。

因此,输出 10。

样例输入 2

6 89
4 7 5 10 7 6

样例输出 2

38469

样例输入 3

1 1000000007
1

样例输出 3

1755655

满足条件的序列 $ x $ 有 $ 1000000008 $ 个。

输出其对 $ 998244353 $ 取模的结果,即 $ 1755655 $。

样例输入 4

20 738894495848985641
40 58 13 24 65 11 63 29 98 75 40 77 15 50 83 85 35 46 38 37

样例输出 4

31156940

反思

A - o 判定

这是一道水题,但我只会做水题
整理一下题意,意思就是说给出 $N$ 和 $S$,输出 $N-S_{size}$ 个 o 用于补全,然后再输出原来的字符串 $S$
时间复杂度:$O(N)$,可以通过!
然后就没什么东西了
可能需要注意一下 for 循环的三个语句,到底在做什么:

令 $k$ 为 $N-S_{size}$
若 $N=5 ,\space S=\text{fuck}$
则 $k=N-S_{size}=5-4=1$
所以应该输出 $1$ 个 o
然后再输出完整的 S
#include <bits/stdc++.h>
using namespace std;
int x,i;
string s;
int main(){
    cin>>x>>s;
    for(i=1;i<=x-s.length();i++) cout<<'o';
    cout<<s;
}

就是这样,so easy

B - 幻方阵

这题需要一定的耐心来阅读题面文本。
这题可以直接根据 题目描述 的题进行暴力编写程序,不需要一些复杂的抽象概念思考建模。
我直接贴代码了,毫无技术含量。

#include <bits/stdc++.h>
using namespace std;
int a[100][100],n,r,c,k,nr,nc,i,j;
int main(){
    cin>>n;c=(n-1)/2;
    for(k=1;k<=n*n;k++){
        a[r][c]=k;
        nr=(r-1+n)%n;
        nc=(c+1)%n;
        if(a[nr][nc]!=0) nr=(r+1)%n,nc=c;
        r=nr;
        c=nc;
    }
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            cout<<a[i][j];
            if(j<n-1) cout<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

[collapse status="false" title="Typora 渲染后的 PDF"]https://www.tropical-fish.cn/usr/uploads/2025/12/4031836290.pdf
[/collapse]


abc435

A - Triangular Number 三角数

题面翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:100 分

题目描述

给定一个正整数 $N$。
输出从 1 到 $N$ 的所有整数的和,即 $1+2+\dots+N$。

约束条件

  • $1 \le N \le 100$
  • $N$ 是整数

输入格式

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

N

输出格式

输出从 1 到 $N$ 的所有整数的和。

样例输入 1

5

样例输出 1

15

样例解释 1

因为 $1+2+3+4+5=15$,所以输出 15。

样例输入 2

1

样例输出 2

1

样例输入 3

29

样例输出 3

435

思考

很简单,方法在题面中已经给出了,即 $\sum_{i=1}^{n} i$ ,这个算法的时间复杂度是 $O(n)$ 的。
也可以使用高斯求和的方法, $\frac{n(1+n)}{2}$。
我太懒了,使用高斯求和的方法。

代码

#include <bits/stdc++.h>
using namespace std;
int n,x,i,s;
int main(){
    cin>>n;
    for(i=1;i<=n;i++) s+=i;
    cout<<s;
}

B - No-Divisible Range 无因数区间

题目翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:200 分

题目描述

给定一个长度为 $N$ 的正整数序列 $A=(A_1,A_2,\dots,A_N)$。
请找出满足 $1 \le l \le r \le N$ 的整数对 $(l,r)$ 的数量,要求这些整数对满足如下条件:
对于所有满足 $l \le i \le r$ 的整数 $i$,$A_i$ 不是区间 $[l,r]$ 内所有元素的和的约数。

约束条件

  • $1 \le N \le 50$
  • $1 \le A_i \le 1000$
  • 所有输入值均为整数

输入格式

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

N
A_1 A_2 … A_N

输出格式

输出满足条件的整数对 $(l,r)$ 的数量。

样例输入 1

5
8 6 10 5 7

样例输出 1

6

样例解释 1

序列 $A=(8,6,10,5,7)$。
例如,整数对 $(l,r)=(1,2)$ 满足条件:区间和为 $A_1+A_2=14$,$A_1=8$ 和 $A_2=6$ 都不是 14 的约数。
而整数对 $(l,r)=(1,3)$ 不满足条件:区间和为 $A_1+A_2+A_3=24$,$A_1=8$ 是 24 的约数。
满足条件的整数对为 $(1,2),(1,4),(2,3),(2,4),(3,5),(4,5)$,共 6 个,因此输出 6。

样例输入 2

3
1 1 1

样例输出 2

0

思考

就不打炮打蚊子了。
直接暴力枚举 $l$ 到 $r$,求和为 $S$ ,公式为 $S=\sum_{i=l}^{r} a_i$,然后判断从 $l$ 到 $r$ 如果能被 $S$ 整除,那这个就不是一个无因数区间,不应该计入到答案,否则就计入到答案,最后输出即可。
警告:暴力枚举 $l$ 到 $r$ 的时候,需要排除 $l > r$ 的状态,即 if(l>r) continue;。
时间复杂度为 $O(n^3)$,题目规定 $N \leq 50$,可以通过。

代码

#include <bits/stdc++.h>
using namespace std;
int n,i,a[60],fl,s,t,w,ans;
int main(){
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
    for(t=1;t<=n;t++) for(w=1;w<=n;w++){
        if(t>w) continue;
        fl=1;s=0;
        for(i=t;i<=w;i++) s+=a[i];
        for(i=t;i<=w;i++) if(s%a[i]==0) fl=0;
        ans+=fl;
    }
    cout<<ans;
}

C - Domino 多米诺

题面翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:300 分

题目描述

有 $N$ 张多米诺骨牌排成一行,放置在数轴上。第 $i$ 张骨牌位于坐标 $i$ 处,高度为 $A_i$。
当第 $i$ 张骨牌向右倒下时,坐标在 $i$ 到 $i+A_i-1$(包含两端)范围内的所有骨牌都会向右倒下。
当第一张骨牌向右倒下时,总共会有多少张骨牌倒下?

约束条件

  • $1 \le N \le 5 \times 10^5$
  • $1 \le A_i \le N$
  • 所有输入值均为整数

输入格式

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

N
A_1 A_2 … A_N

输出格式

输出当第一张骨牌向右倒下时,倒下的骨牌总数。

样例输入 1

4
3 1 4 1

样例输出 1

4

样例解释 1

当第一张骨牌向右倒下时,第二张和第三张骨牌也会向右倒下。当第三张骨牌向右倒下时,第四张骨牌也会倒下。

样例输入 2

9
1 4 1 4 2 1 3 5 6

样例输出 2

1

样例解释 2

当第一张骨牌向右倒下时,没有其他骨牌会倒下。

样例输入 3

10
5 4 3 2 1 1 2 3 4 5

样例输出 3

5

思考

数据范围 $N \le 5\times10^5$,暴力模拟每张骨牌的连锁倒下会超时,不能用 $O(N^2)$ 的暴力枚举了,必须用 $O(N)$ 贪心策略。
核心是维护当前最远覆盖位置和遍历边界:

  1. 第一张骨牌倒下的初始覆盖范围是 $1+A[1]-1$,记为 ma,用 tmp 记录当前需要遍历的右边界;
  2. 从第 2 张骨牌开始,在 tmp 范围内遍历,不断更新 ma 为所有骨牌能覆盖的最远位置;
  3. 遍历到 tmp 时,将 tmp 更新为新的 ma,扩展遍历范围;
  4. 最终答案取 ma 和 $N$ 的较小值,避免覆盖范围超出骨牌总数。

小声:我看到时间限制为 2s 的时候以为不用贪心,就用暴力枚举,结果 TLE 了我操,∵数据范围是指数级的,是 $2.5 \times {10}^{11}$,但实际上计算机每秒大约只能做 $10^9$ 次,∴会超时。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=500010;
int a[N],n,i,ma,tmp;
int main(){
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
    if(n==0) return cout<<0,0;
    ma=1+a[1]-1;
    tmp=ma;
    i=2;
    while(i<=tmp&&i<=n){
        if(i+a[i]-1>ma) ma=i+a[i]-1;
        if(i==tmp) tmp=ma;
        i++;
    }
    if(ma>n) cout<<n;
    else cout<<ma;
}

D - Reachability Query 2 可达性查询 2

题面翻译

时间限制:3 秒 / 内存限制:1024 MiB
分数:425 分

题目描述

给定一个有 $N$ 个顶点、$M$ 条边的有向图。顶点编号为 $1$ 到 $N$,第 $i$ 条边是从顶点 $X_i$ 指向顶点 $Y_i$ 的有向边。初始时,所有顶点均为白色。
按顺序处理 $Q$ 个查询,每个查询为以下两种类型之一:

  1. 1 v:将顶点 $v$ 染成黑色。
  2. 2 v:判断从顶点 $v$ 出发,沿着边遍历是否能够到达某个黑色顶点。

约束条件

  • $1 \le N \le 3 \times 10^5$
  • $0 \le M \le 3 \times 10^5$
  • $1 \le Q \le 3 \times 10^5$
  • $1 \le X_i, Y_i \le N$
  • 图中无自环(即 $X_i \neq Y_i$)。
  • 图中无重边(即所有 $(X_i, Y_i)$ 互不相同)。
  • 查询中,$1 \le v \le N$。
  • 所有输入值均为整数。

输入格式

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

N M
X_1 Y_1
⋮
X_M Y_M
Q
query_1
⋮
query_Q

其中 query_i 表示第 $i$ 个查询,格式为以下两者之一:

1 v
2 v

输出格式

设第二类查询的数量为 $q$,输出 $q$ 行结果:

  • 对于第 $i$ 个第二类查询,若从顶点 $v$ 能到达黑色顶点,输出 Yes;否则输出 No。

样例输入 1

5 6
1 2
2 3
3 1
4 5
1 4
2 5
5
1 3
2 1
2 4
1 5
2 4

样例输出 1

Yes
No
Yes

样例解释

初始时,给定的图如最左侧的图所示。
第一个查询将顶点 3 染成黑色(如中间的图所示)。
第二个查询中,从顶点 1 可以到达黑色顶点 3,故输出 Yes
第三个查询中,从顶点 4 无法到达任何黑色顶点,故输出 No。
第四个查询将顶点 5 染成黑色(如最右侧的图所示)。
第五个查询中,从顶点 4 可以到达黑色顶点 5,故输出 Yes。

思考

很明显,这是一道图论题,其实我个人做的图论题也不多,我首先感觉是 P3916 图的遍历 - 洛谷 的升级版,多了染色和一些杂七杂八的东西,抽象。
小声:我刚看到每个查询的时候我还以为他考的是并查集。
一个经典的解决动态图可达性问题的方法是使用 bitset 或 分块,但 $N=3 \times 10^5$,bitset 太大($N=3 \times 10^5 \space \text{bits}$ 约 $37.5 \space \text{KB}$ 每个顶点,总共 $N=3 \times 10^5$ 个顶点就是 $10^{10} \space \text{bits} \approx 1.25 \text{GB}$,太特么大了)。
我草比赛怎么结束了?

E - Cover query 覆盖查询

题面翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:450 分

题目描述

有 $N$ 个单元格从左到右排成一行。
从左数第 $i$ 个单元格($1 \le i \le N$)被称为单元格 $i$。
初始时,所有单元格均为白色。

按顺序处理 $Q$ 个查询。
第 $i$ 个查询($1 \le i \le Q$)的内容如下:

给定两个整数 $L_i$ 和 $R_i$($1 \le L_i \le R_i \le N$)。
将单元格 $L_i, L_i+1, \dots, R_i$ 全部染成黑色。
在此操作中,原本白色的单元格会被染成黑色,原本黑色的单元格保持黑色不变。

操作完成后,求出 $N$ 个单元格中仍为白色的单元格数量。

约束条件

  • $1 \le N \le 10^9$
  • $1 \le Q \le 2 \times 10^5$
  • $1 \le L_i \le R_i \le N$
  • 所有输入值均为整数

输入格式

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

N Q
L_1 R_1
L_2 R_2
⋮
L_Q R_Q

输出格式

输出 $Q$ 行。
第 $i$ 行($1 \le i \le Q$)输出第 $i$ 个查询的答案。

样例输入 1

10 5
3 5
8 9
5 8
2 9
6 6

样例输出 1

7
5
3
2
2

样例解释

初始时,10 个单元格从左到右排成一行。

第一个查询将单元格 3、4、5 染成黑色。操作后,白色单元格为 1、2、6、7、8、9、10,共 7 个。
第二个查询将单元格 8、9 染成黑色。操作后,白色单元格为 1、2、6、7、10,共 5 个。
第三个查询将单元格 5、6、7、8 染成黑色。操作后,白色单元格为 1、2、10,共 3 个。
第四个查询将单元格 2 到 9 染成黑色。操作后,白色单元格为 1、10,共 2 个。
第五个查询将单元格 6 染成黑色。操作后,白色单元格仍为 1、10,共 2 个。

因此,按顺序输出 7、5、3、2、2。

样例输入 2

1000000000 1
1 500000000

样例输出 2

500000000

思考

[待补]

F - Cat exercise 猫咪的锻炼

题面翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:550 分

题目描述

有 $N$ 座猫塔从左到右排成一行,从左数第 $i$ 座猫塔($1 \le i \le N$)的高度为 $P_i$。
其中,序列 $(P_1,P_2,\dots,P_N)$ 是 $(1,2,\dots,N)$ 的一个排列。

从左数第 $i$ 座猫塔和第 $j$ 座猫塔之间的距离定义为 $|i-j|$。

初始时,有一只猫位于高度为 $N$ 的猫塔顶端。
高桥想要锻炼这只猫,方式是重复选择并移除猫塔。

当高桥移除一座猫塔时,猫的移动规则如下:

  1. 若猫不在被移除的猫塔顶端,则猫保持不动。
  2. 若猫在被移除的猫塔顶端,且该猫塔的左侧或右侧至少有一座猫塔存在,则猫会移动到以下目标猫塔:

    • 目标猫塔的范围是:从被移除的猫塔出发,通过重复移动到相邻猫塔能够到达的所有猫塔(不包含被移除的猫塔)。
    • 目标猫塔是上述范围内高度最高的猫塔。
    • 此时,猫的移动距离计入总距离,该距离等于移动前所在猫塔和移动后所在猫塔之间的距离(与移动过程中经过的猫塔高度、数量无关)。
  3. 若猫在被移除的猫塔顶端,且该猫塔的左右两侧都没有猫塔存在,则猫会跳进高桥的怀里,锻炼就此结束。这种情况下,不计入任何移动距离。

注意:被移除的猫塔留下的空位不会被填补。也就是说,初始时从左数第 $i$ 座猫塔的相邻猫塔仅为第 $i-1$ 和第 $i+1$ 座猫塔(若存在),后续不会因为其他猫塔被移除而与非原本相邻的猫塔变成相邻关系。

请你求出,锻炼结束前猫能够移动的最大可能总距离。

约束条件

  • $1 \le N \le 2 \times 10^5$
  • $(P_1,P_2,\dots,P_N)$ 是 $(1,2,\dots,N)$ 的一个排列
  • 所有输入值均为整数

输入格式

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

N
P_1 P_2 … P_N

输出格式

输出锻炼结束前猫能够移动的最大可能总距离。

样例输入 1

5
5 3 4 1 2

样例输出 1

5

样例解释 1

初始时,猫塔的高度从左到右依次为 5、3、4、1、2。
下文将从左数第 $i$ 座猫塔($1 \le i \le 5$)简称为猫塔 $i$。
初始时,猫位于猫塔 1 的顶端(高度为 5)。

若高桥按照 1 → 2 → 3 → 5 → 4 的顺序移除猫塔,猫的移动过程如下:

  1. 移除猫塔 1:从猫塔 1 出发,通过重复移动到相邻猫塔可到达的猫塔为 2、3、4、5(不含猫塔 1)。其中高度最高的是猫塔 3(高度为 4),猫移动到该猫塔。
  2. 移除猫塔 2:猫不在该猫塔顶端,保持不动。
  3. 移除猫塔 3:从猫塔 3 出发,可到达的猫塔为 4、5(不含猫塔 3)。其中高度最高的是猫塔 5(高度为 2),猫移动到该猫塔。
  4. 移除猫塔 5:从猫塔 5 出发,可到达的猫塔仅有 4(不含猫塔 5),猫移动到该猫塔。
  5. 移除猫塔 4:猫的左右两侧都没有猫塔,跳进高桥怀里,锻炼结束。

此时,猫的总移动距离为 $|1-3| + |3-5| + |5-4| = 5$。不存在任何一种猫塔移除顺序,能让猫的总移动距离达到 6 或以上,因此输出 5。

样例输入 2

3
1 3 2

样例输出 2

1

样例解释 2

初始时,猫塔的高度从左到右依次为 1、3、2。
下文将从左数第 $i$ 座猫塔($1 \le i \le 3$)简称为猫塔 $i$。
初始时,猫位于猫塔 2 的顶端(高度为 3)。

若高桥按照 2 → 3 的顺序移除猫塔,猫的移动过程如下:

  1. 移除猫塔 2:从猫塔 2 出发,可到达的猫塔为 1、3(不含猫塔 2)。其中高度最高的是猫塔 3(高度为 2),猫移动到该猫塔。
  2. 移除猫塔 3:猫的左右两侧都没有猫塔,跳进高桥怀里,锻炼结束。

此时,猫的总移动距离为 $|2-3|=1$,这是最大可能的总距离。

注意:移除猫塔 2 后,猫塔 1 和猫塔 3 不会被视为相邻。

思考

[待补]

G - Domino Arrangement 多米诺序列

题面翻译

时间限制:2 秒 / 内存限制:1024 MiB
分数:600 分

题目描述

有 $N$ 个单元格从左到右依次编号为 $1$ 到 $N$。初始时,所有单元格均未被涂上任何颜色。

共有 $M$ 种颜色,对于第 $i$ 种颜色,你可以选择单元格区间 $[L_i, R_i]$(即 $L_i, L_i+1, \dots, R_i$)内任意数量的单元格,将其涂为该颜色(可选择涂 0 个、1 个或多个)。

请计算满足以下条件的涂色方案数,并将结果对 $998244353$ 取模:

  • 对于每一个单元格 $i$:

    • 若该单元格被涂上了某一种颜色,则其左侧相邻单元格 $i-1$ 和右侧相邻单元格 $i+1$ 中,恰好有一个 单元格被涂成了与 $i$ 相同的颜色;
    • 特别说明:单元格 $0$ 和 $N+1$ 被视为未被任何颜色涂色(即不存在的单元格)。

约束条件

  • $1 \le N,M \le 5 \times 10^5$
  • $1 \le L_i \le R_i \le N$
  • 所有输入值均为整数

输入格式

输入数据从标准输入按以下格式给出:

N M
L_1 R_1
L_2 R_2
⋮
L_M R_M

输出格式

输出满足条件的涂色方案数(对 $998244353$ 取模)。

样例输入 1

5 2
1 3
1 5

样例输出 1

11

样例解释 1

第 1 种颜色可涂色的单元格范围是 $1,2,3$,第 2 种颜色可涂色的单元格范围是 $1,2,3,4,5$。
满足条件的涂色方案共有 11 种。
image.png

样例输入 2

3 3
1 1
2 2
3 3

样例输出 2

1

样例解释 2

唯一满足条件的方案是:不涂任何单元格(若给任意单元格涂色,都无法满足“恰好一个相邻单元格同色”的条件)。

样例输入 3

500000 10
1 499999
2 499998
3 499997
4 499996
5 499995
6 499994
7 499993
8 499992
9 499991
10 499990

样例输出 3

775503999

补充说明

答案需对 $998244353$ 取模后输出。

思考

[待补]