摘要: 将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。 例题 有 $N$ 头牛从左到右排成一排,每头牛有一个高度 $h_i$,设左数第 $i$ 头牛与「它右边第一头高度 ≥ $h_i$」的牛之间有 $c_i$ 头牛,试求 $\sum_{i= 阅读全文
posted @ 2025-07-09 20:13 dingchenjun 阅读(12) 评论(2) 推荐(0)
摘要: 优先队列 给定一个 $R×C$ 的网格,每个单元格包含一个整数,找到这个网格中只包含一个不同整数的子矩形的数量;这意味着子矩形中的每个单元格都包含相同的整数。 子矩形由两个单元格定义:左上角单元格$ (r1, c1) $和右下角单元格$ (r2, c2) $,假设行从上到下编号,列从左到右编号。 # 阅读全文
posted @ 2025-07-09 20:06 dingchenjun 阅读(9) 评论(1) 推荐(0)
摘要: 基础用发 bitset<4> s(string("1001")) 用字符串填充,不足高位补0 bitset<10> s(5) 用5的二进制位填充,不足高位为0 s.count() 返回有多少个1 s.any() 至少有一个1返回true,反之false s.none() 全为0返回true,反之fa 阅读全文
posted @ 2025-07-07 17:24 dingchenjun 阅读(34) 评论(1) 推荐(0)
摘要: map<int,int> mp; mp[x]=y; mp[1]=2; for(auto[x,y] : mp) { cout << x << " " << y << "\n"; } mp.erase(1); cout << mp.size() << "\n"; mp.clear(); mp.count 阅读全文
posted @ 2025-07-07 17:23 dingchenjun 阅读(10) 评论(1) 推荐(0)
摘要: P7913 让我们先忽略廊桥数量的限制来安排航班。我们维护一个空闲的廊桥队列,每到达一架航班,就给它安排编号最小的廊桥供其使用。 现在加上廊桥数量的限制。容易发现刚才的廊桥分配方法直接就帮我们解决了廊桥限制的问题:如果当前有 n 个廊桥可供使用,则分配到 n+1 号及以后的廊桥实质上就是分配到远机位 阅读全文
posted @ 2025-07-07 17:23 dingchenjun 阅读(16) 评论(1) 推荐(0)