2021.09.02pm
| --- | 预期 | 实际 |
|---|---|---|
| A | 100 | 100 |
| B | 100 | 100 |
| C | 100 | 100 |
| D | 100 | 100 |
| E | 100 | 100 |
| F | 100 | 100 |
| G | 100 | 100 |
| H | 100 | 30 |
| S | 800 | 770 |
水菜
A 回文日期\(\blacktriangle\!\blacktriangledown\)
- 方法一:打表
- 方法二:枚举合法年份,翻转过去看日期,月份是否合法(特别是2月!),再看是否在期限内,简单但细节多
B 最大公约数\(\blacktriangle\)
RT
C 校门外的树\(\blacktriangle\)
数据范围太水了,区间直接修改赋值,复杂度\(O(lm)\)
D 蛇形方阵2\(\blacktriangle\!\blacktriangledown\)
- 一道之前卡我好久的题,现在看来不过如此
- 分成两部分:一部分是左上,一部分是右下规则不太一样,主要就是确定两个要素:起点与方向。
for(int i=1;i<=n;i++){//i=n并到哪个for循环都行,只不过要稍微修改
if(i%2){//因为是蛇形,一次向下,一次向上
px=n-i+1;py=1;//起点位置
for(int k=1;k<=i;k++){
ans[px][py]=++num;
px++;py++;//方向
}
}
else{
px=n;py=i;
for(int k=1;k<=i;k++){
ans[px][py]=++num;
px--;py--;
}
}
}
for(int i=1;i<n;i++){
if((i+n)%2){
px=1;py=i+1;
for(int k=1;k<=n-i;k++){
ans[px][py]=++num;
px++;py++;
}
}
else{
px=n-i;py=n;
for(int k=1;k<=n-i;k++){
ans[px][py]=++num;
px--;py--;
}
}
}
E 单点修改,区间查询 \(\blacktriangle\!\blacktriangledown\)
裸的树状数组,不过运气比较好,不过听说输入判断不是if(q==1),else就过不了
F 溶液模拟器 \(\blacktriangle\!\blacktriangledown\)
模拟,不过注意要开long long,对于 \(Z\) 操作开个栈就行,栈的第0位存初始,这样能保证重复 \(Z\) 操作导致段错误
G 转圈问题 \(\blacktriangle\!\blacktriangledown\)
快速幂,比较裸,没啥好说的
H 生日 \(\blacktriangle\!\blacktriangledown\!\blacktriangle\!\blacktriangledown\)
-
这好像是道 \(NPC\) ,只能硬枚,唯一的优化是把它掰两半,这样能从 \(O(2^{40})\) 优化到 $O(2^{20}) $
-
考试时的做法是第一遍 \(dfs\) \(1 \to n/2\),用 \(set\) 维护一下,然后再跑第二次 \(dfs\) \(n/2+1 \to n\) 查找是否能拼接成 \(m\) 但是吧,用 \(set\) 会导致时间复杂度飙到 \(O((\log_{2}{2^{20}})*2^{20})\) ,本机上运行时间差不多,不过由于学校机子比较玄学或者数据比较强,导致只有 \(30pts\)。
-
然后通过一些途径
(薅代码),成功整到正解:\(hash\)。这样常数会优化一些,就能过掉。不过呢,hash就有点玄学了。我用的是三遍hash,\(1145147,1428579,2005803\),时间还是比较优秀。但都不是质数,下来也找到了比较接近的质数:\(1145141,1428571,2005831\)
![image]()
\(\cal {Made} \ {by} \ {yuge}\)

浙公网安备 33010602011771号