ABC398 A-D 题解

HJZhao Lv2

A - Doors in the Center

不用说了吧

Code

B - Full House 3

大意:给出7个数,求子序列 [x,x,y,y,y][x,x,y,y,y]

这题真是太坑了,卡了我三发罚时

除了要考虑要刚刚好满足的情况,还要考虑大于3或2的情况

经典错误:

1
2
3
4
5
6
7
8
9
bool one=0,two=0;
loop(i,7) cin >> a[i], b[a[i]]++;
loop(i,13)
{
if (b[i]==2) two=1;
else if (b[i]==3) one=1;
}
if (two&&one) cout << "Yes" << endl;
else cout << "No" << endl;

正确答案:

1
2
3
4
5
6
7
8
9
int one=0,two=0;
loop(i,7) cin >> a[i], b[a[i]]++;
loop(i,13)
{
if (b[i]==2) two++;
else if (b[i]>=3) one++;
}
if (one>=2||(two&&one)) cout << "Yes" << endl;
else cout << "No" << endl;

Code

C - Uniqueness

题意:在满足条件“其他 N−1 个人中没有人与自己拥有相同整数”的人中,找到拥有最大整数的那个人,并打印该人的标签。

模拟即可,比B题简单,有一些细节注意一下

Code

D - Uniqueness

大意

有一个篝火和一个人(其中人不动),篝火每秒冒出一个烟,冒出的烟每秒全都向一个方向移动一格,问每秒人的格子有没有烟。

解法

直接模拟烟太麻烦,所以反过来模拟篝火和人,每次篝火和人与烟的反方向移动,烟不动,就可以达到相对的效果

烟的位置用 map 存

Code

  • 标题: ABC398 A-D 题解
  • 作者: HJZhao
  • 创建于 : 2025-03-22 22:07:00
  • 更新于 : 2025-03-22 22:23:54
  • 链接: https://china-hjz.github.io/posts/52602.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论