题目问答
题目问答简介
视频题解的check部分似乎有问题唉
tm更新时,应该用(当前时间tm+飞机降落所需时间L)与(飞机实际到达的时间T+飞机降落所需的时间L)中的最大值
0
0
0
47
请问为什么报段错误o.0?
写了半天老是报 段错误
VS没报错,洛谷也AC了,请问怎么个事o.0?
```cpp
struct plane
{
int arrive;
int dead;
int land;
}pl [11];
int n, flag;
bitset<11> bs;
void bfs(int time, int index)
{
if (index == n)
{
flag = 1;
return ;
}
for (int i = 0;i<n;i++)
{
if (bs[i])
continue;
//失败条件:当前飞机的到达加盘旋时间超出了当前时间
if (time > pl[i].arrive + pl[i].dead)
{
return ;
}
//记录当前时间
int tmp = time;
time = max(time, pl[i].arrive) + pl[i].land;
bs[i] = 1;
bfs(time, index + 1);
bs[i] = 0;
//失败回溯时间
time = tmp;
}
}
int main()
{
int T;
cin >> T;
while (T--)
{
bs.reset();
flag = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
scanf("%d %d %d", &pl[i].arrive, &pl[i].dead, &pl[i].land);
}
bfs(0, 0);
if (flag)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
```
查看全文
0
0
0
17



