NiffrG 2022-09-09 19:50 采纳率: 0%
浏览 44
已结题

NOIP2005 校门外的树(MAP ODT)死循环

本人尝试使用MAP用更为简单的方式来实现珂朵莉树(ODT)。
以下是Luogu P1047 校门外的树的MAP珂朵莉树解法。
这个程序在输入完所有数据以后死循环。经判断,怀疑是query函数炸了,但是不会改。
在运算过程中很可能还有其他的问题,如果有发现,也烦请答主一并提醒下。

#include <bits/stdc++.h>
using namespace std;
typedef long long int64;

template<typename any>struct odt {
    std::map<int, any> Senio;
    inline void insert(int l, any val) {Senio.insert(pair<int, any>(l, val));}
    inline any find(any target) {return Senio.lower_bound(target) -> second;}
    inline auto begin() {return Senio.begin();}
    inline auto end() {return Senio.end();}
    inline auto split(int p) {
        any pos = find(p);
        Senio.insert(pair<int, any>(p, pos));
        return pos;
    }
    inline auto range(int l, int r) {
        auto left = split(l-1);
        auto right = split(r);
        return make_pair(left ,right);
    }
    //public:
    inline auto assign(int l, int r, any k) {
        auto border = range(l, r);
        auto st = border.first;
        auto ed = border.second;
        while (st != ed) Senio.erase(ed--);
        insert(r, k);
    }
};
odt<int> ODT;

inline int query() {
    int ans = 0;
    auto st = ODT.begin();
    auto ed = ODT.end();
    while (st != ed) ans += (ed -> second - st -> second) + 1;
    return ans;
}

int l, m, lbound, rbound;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> l >> m;
    ODT.insert(l, true);
    for(int i = 0; i < m; ++i) {
        cin >> lbound >> rbound;
        ODT.assign(lbound, rbound, false);
    }
    cout << query() << "\n";
    return 0;
}


  • 写回答

1条回答 默认 最新

  • CZcz陈卓 2022-09-09 19:57
    关注

    看看是不是36行的问题

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月14日
  • 创建了问题 9月9日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件