【发布时间】:2022-12-31 13:53:46
【问题描述】:
我在 CodeForces 上处理 this 问题。我的解决方案是给予 TLE,但我不知道为什么。最终我将其缩小到故障线,它基本上是以下内容
// map<int, set<long long>> res;
for(auto z : res) if(res[z.first].count(x)) res[z.first].erase(x);
这在测试用例 6 上给出了 TLE。现在我的 res 映射最多有三个键 (1,2,3)。如果我将循环更改为 -
for(int j = 1; j<=3; j++) if(res[j].count(x)) res[j].erase(x);
然后该解决方案适用于所有测试用例并运行。我想了解为什么第一个循环不起作用,以及如何知道什么时候可以使用该循环,什么时候不能?
【问题讨论】:
-
所有那些令人困惑的宏和名称让我很难过。
-
嘿,我正在从地图中的集合中删除一个元素。链接中的海报在遍历地图时正在删除地图中的元素。
标签: c++ loops dictionary stl auto