From 807a3c7b35f64d6dc523d8831ed8bc5a6978b0c9 Mon Sep 17 00:00:00 2001 From: "Mr. Python" <2789762371@qq.com> Date: Sat, 12 Oct 2024 18:40:10 +0800 Subject: [PATCH] fix bugs for lazy_segment_tree and it's test --- .github/workflows/testLibrary.yml | 2 +- library/makefile | 2 +- library/mrpython/lazy_segment_tree.hpp | 1 + .../test/lazy_segment_tree/lazy_segment_tree_add_add.cpp | 7 ++++--- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/testLibrary.yml b/.github/workflows/testLibrary.yml index 308eb32..9906b5e 100644 --- a/.github/workflows/testLibrary.yml +++ b/.github/workflows/testLibrary.yml @@ -30,4 +30,4 @@ jobs: - name: Test run: | cd library - ./test.exe --gtest_repeat=8 + ./test.exe --gtest_repeat=20 diff --git a/library/makefile b/library/makefile index 59a392d..1083766 100644 --- a/library/makefile +++ b/library/makefile @@ -2,7 +2,7 @@ STDCXX ?= c++14 CXX ?= g++ -CXXFLAGS = -Wall -Wextra -g -I. -MMD -std=$(STDCXX) +CXXFLAGS = -Wall -Wextra -g -I. -MMD -std=$(STDCXX) -O2 TARGET = test.exe diff --git a/library/mrpython/lazy_segment_tree.hpp b/library/mrpython/lazy_segment_tree.hpp index 3ec4c3f..25b471d 100644 --- a/library/mrpython/lazy_segment_tree.hpp +++ b/library/mrpython/lazy_segment_tree.hpp @@ -103,6 +103,7 @@ class lazy_segment_tree { n(len), lazyInit(lazyInitVal), mergeData(mergeDataFun), + operate(OperateFun), mergeLazy(mergeTagFun) { build(); } diff --git a/library/test/lazy_segment_tree/lazy_segment_tree_add_add.cpp b/library/test/lazy_segment_tree/lazy_segment_tree_add_add.cpp index 72923b4..eaa0e95 100644 --- a/library/test/lazy_segment_tree/lazy_segment_tree_add_add.cpp +++ b/library/test/lazy_segment_tree/lazy_segment_tree_add_add.cpp @@ -19,12 +19,13 @@ TEST(lazy_segment_tree, add) { if (l > r) std::swap(l, r); assert(l < r + 1); if (operator_dist(gen)) { - int ans = std::accumulate(a.begin() + l, a.begin() + r + 1, (unsigned)0); + unsigned ans = + std::accumulate(a.begin() + l, a.begin() + r + 1, (unsigned)0); EXPECT_EQ(tree.get(l, r + 1), ans); } else { unsigned value = val_dist(gen); - for (std::size_t i = l; i < r; ++i) a[i] += value; - tree.set(l, r, value); + for (std::size_t i = l; i < r + 1; ++i) a[i] += value; + tree.set(l, r + 1, value); } } } \ No newline at end of file