AtCoder
路过放个屁
这个作者很懒,什么都没留下…
展开
-
AtCoder Beginner Contest 218 D - Rectangles
题目大意平面上有n个点,问你这n个点能组成多少个四条边都是平行于x轴或y轴的矩形。思路对这n个点排序,x小的在前,x相同的时候y小的在前。然后对于所有xi,用map记录可能存在的边<yi, yj>的个数,很明显,xi相同的情况下,<yi, yj>是平行于y轴的,如果边<yi, yj> 的个数为m,那么能组成的矩形的个数为C(2m)\binom{2}{m}(m2),也可以直接理解成m-1 + m - 2 + … 3 + 2 + 1,即第一条边可以与其后面的m -原创 2021-09-11 23:00:24 · 466 阅读 · 0 评论 -
AtCoder Beginner Contest 217 D - Cutting Woods(set + 二分查找)
题目大意有一根长度为L的木头,这根木头上有L - 1个可以劈的点,对这根木头进行q次操作,操作有两种:操作一是往一个可劈点劈一刀,把这个点所在的木头段劈成两段;操作二是输出一个可劈点所在木头段的长度。思路直接用一个set存操作一所劈的点,因为set保证了所劈的点是递增的,所以对于操作二,直接用lower_bound找到第一个比要找的可劈点大的已劈点,然后lower_bound找到的位置后退一位就是第一个比要找的可劈点小的已劈点,两者相减就是该可劈点所在木头段的长度。因为存在set中第一个已劈点比操作原创 2021-09-04 22:46:24 · 370 阅读 · 0 评论 -
AtCoder Beginner Contest 216 D - Pair of Balls(搜索)
题目大意:有n种颜色,每种颜色有2个小球,现在将这2n个小球分别放到m个容器里,当两个容器的顶部小球颜色相同时,可以把这两个小球拿出容器,问可不可能把2n个小球从m个容器中拿出来。思路:因为每个容器的小球是满足先输入的先出容器的,所以用m个队列存每个容器里小球的情况。用一个数组vis[ i ]记录当前第 i 种颜色的小球是否出现过在某个容器的顶部,再用一个map记录当前第 i 种颜色的小球第一次出现在哪个容器的顶部。枚举每一个容器,如果容器 i 的顶部小球对应的颜色出现过,即vis[ ] = 1的原创 2021-08-29 21:46:58 · 328 阅读 · 0 评论