A. Launch of Collider(Codefoeces 699A)
思路
因为所有粒子的速度都是相同的,所以两个粒子发生碰撞的条件是,两个粒子相邻且右方的粒子向左运动,左方的粒子向右运动。
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
char s[maxn];
int n, ans, a[maxn];
int main() {
scanf("%d%s", &n, s);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
ans = INT_MAX;
for(int i = 1; i < n; i++) {
if(s[i] == 'L' && s[i-1] == 'R') {
ans = min(ans, (a[i] - a[i-1]) / 2);
}
}
if(ans == INT_MAX) {
puts("-1");
}
else {
printf("%d\n", ans);
}
return 0;
}
B. One Bomb(Codeforces 699B)
思路
因为直接算出放炸弹的位置不是很方便,所以想到枚举放炸弹的位置,然后用常数的复杂度(根据数据规模)判断将炸弹放在这个位置是否能将所有的墙炸毁。既然判断的复杂度被限制在常数,那么我们事先需要知道一些信息。为此我们用 r[i] 表示第 i 行的墙的数量,用