1 const int mod = 1e9+7; 2 struct SegNode { 3 SegNode() { 4 v00 = v01 = v10 = v11 = 0; 5 } 6 void set(long long v) { 7 v00 = v01 = v10 = 0; 8 v11 = max(v, 0LL); 9 } 10 long long best() { 11 return v11; 12 } 13 14 long long v00, v01, v10, v11; 15 }; 16 17 class SegTree { 18 public: 19 SegTree(int n): n(n), tree(n * 4 + 1) {} 20 void init(const vector<int>& nums) { 21 internal_init(nums, 1, 1, n); 22 } 23 void update(int x, int v) { 24 internal_update(1, 1, n, x + 1, v); 25 } 26 long long query() { 27 return tree[1].best(); 28 } 29 30 private: 31 void internal_init(const vector<int>& nums, int x, int l, int r) { 32 if (l == r) { 33 tree[x].set(nums[l - 1]); 34 return; 35 } 36 int mid = (l + r) / 2; 37 internal_init(nums, x * 2, l, mid); 38 internal_init(nums, x * 2 + 1, mid + 1, r); 39 pushup(x); 40 } 41 void internal_update(int x, int l, int r, int pos, int v) { 42 if (l > pos || r < pos) { 43 return; 44 } 45 if (l == r) { 46 tree[x].set(v); 47 return; 48 } 49 int mid = (l + r) / 2; 50 internal_update(x * 2, l, mid, pos, v); 51 internal_update(x * 2 + 1, mid + 1, r, pos, v); 52 pushup(x); 53 } 54 void pushup(int x) { 55 int l = x * 2, r = x * 2 + 1; 56 tree[x].v00 = max(tree[l].v00 + tree[r].v10, tree[l].v01 + tree[r].v00); 57 tree[x].v01 = max(tree[l].v00 + tree[r].v11, tree[l].v01 + tree[r].v01); 58 tree[x].v10 = max(tree[l].v10 + tree[r].v10, tree[l].v11 + tree[r].v00); 59 tree[x].v11 = max(tree[l].v10 + tree[r].v11, tree[l].v11 + tree[r].v01); 60 } 61 62 private: 63 int n; 64 vector<SegNode> tree; 65 }; 66 67 class Solution { 68 public: 69 int maximumSumSubsequence(vector<int>& nums, vector<vector<int>>& queries) { 70 int n = nums.size(); 71 SegTree tree(n); 72 tree.init(nums); 73 74 int ans = 0; 75 for (const auto& q: queries) { 76 tree.update(q[0], q[1]); 77 ans = ((long long)ans + tree.query()) % mod; 78 } 79 return ans; 80 } 81 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端