-
个人简介
举报了哥,你什么都没做错,全怪我那令人作呕的嫉妒和卑微的自尊心,看见你的文字我完全破防了,我直接丢盔弃甲了,看见你这图的那一秒,我满头大汗,浑身发冷,亿郁症瞬间发作了,生活仿佛没了颜色,像是被抓住尾巴的赛亚人,带着海楼石的能力者,抽离尾兽的人柱力,像是没了光的奥特曼,彻底断绝了生的希望。我几乎都快羡慕得疯了,倒在电脑前压着键盘就开始抱着鼠标尖叫流泪,嘴里一边喊着卧槽卧槽,一边又忍着,我边发边哭,打字的手都是抖的,后来我的手抖得越来越厉害,从心头涌起的思想、情怀和梦想,这份歆羡和悔恨交织在一起,我的笑还挂在脸上,可是眼泪一下子就掉下来了。求你了别发了,再菜我都不会觉得难过,只有你们发这种东西的时候,我的心里像被刀割一样的痛,打着字泪水就忍不住的往下流。每天早上 6 点起床晚上 11 点睡觉,年复一年地学到现在,憧憬着美好阳光的未来。我打开了手机,看到你的图,我感到了深深的差距,我直接跳进了家门口的井里!我真的,我要嫉妒疯了?为什么?!为什么这个人不是我?我求你了?求你了?!不要在发了,我真的要羡慕嫉妒疯了?怎么办我要嫉妒死了啊啊啊啊我急了,手机电脑全砸了,本来就有抑郁症的我,被别人说我破防了,我真的恼羞成怒了,仿佛被看穿了,躲在网络背后的我,这种感觉真的好难受,我被看穿的死死地,短短的破防两个字,我伪装出来的所有的坚强和强颜欢笑全都崩塌了,成了一个被人笑话的小丑?,我真的不想再故作坚强了,玩心态我输的什么都不剩???你发这些有什么目的?谁指使你的?你的动机是什么?你取得有关部门许可了吗?他们容许你发了吗?你背后是谁,发这些想做什么?你在讽刺谁?想颠覆什么?破坏什么?影射什么?回答不上来?那么跟我走一趟,顺便把你家户口本带上取证!别说我们瞎抓你,都是有理有据的! @
#include <iostream> #include <vector> using namespace std; class SegmentTree { private: vector<long long> tree; // 线段树数组 vector<long long> lazy; // 懒标记数组 vector<long long> arr; // 原始数组 int n; // 构建线段树 void build(int node, int start, int end) { if (start == end) { tree[node] = arr[start]; } else { int mid = (start + end) / 2; int left_node = 2 * node + 1; int right_node = 2 * node + 2; build(left_node, start, mid); build(right_node, mid + 1, end); tree[node] = tree[left_node] + tree[right_node]; } } // 下推懒标记 void push_down(int node, int start, int end) { if (lazy[node] != 0) { // 更新当前节点 tree[node] += lazy[node] * (end - start + 1); // 如果不是叶子节点,将懒标记传递给子节点 if (start != end) { lazy[2 * node + 1] += lazy[node]; lazy[2 * node + 2] += lazy[node]; } // 清除当前节点的懒标记 lazy[node] = 0; } } // 区间更新 void update_range(int node, int start, int end, int l, int r, long long val) { push_down(node, start, end); // 先下推懒标记 if (r < start || l > end) return; // 区间不重叠 if (l <= start && end <= r) { // 当前区间完全在更新区间内 lazy[node] += val; push_down(node, start, end); // 更新当前节点并下推 return; } // 部分重叠,递归更新左右子树 int mid = (start + end) / 2; int left_node = 2 * node + 1; int right_node = 2 * node + 2; update_range(left_node, start, mid, l, r, val); update_range(right_node, mid + 1, end, l, r, val); tree[node] = tree[left_node] + tree[right_node]; } // 区间查询 long long query_range(int node, int start, int end, int l, int r) { push_down(node, start, end); // 先下推懒标记 if (r < start || l > end) return 0; // 区间不重叠 if (l <= start && end <= r) { // 当前区间完全在查询区间内 return tree[node]; } // 部分重叠,递归查询左右子树 int mid = (start + end) / 2; int left_node = 2 * node + 1; int right_node = 2 * node + 2; long long left_sum = query_range(left_node, start, mid, l, r); long long right_sum = query_range(right_node, mid + 1, end, l, r); return left_sum + right_sum; } public: SegmentTree(vector<long long>& nums) { arr = nums; n = nums.size(); tree.resize(4 * n, 0); lazy.resize(4 * n, 0); build(0, 0, n - 1); } void update(int l, int r, long long val) { update_range(0, 0, n - 1, l, r, val); } long long query(int l, int r) { return query_range(0, 0, n - 1, l, r); } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, q; cin >> n >> q; vector<long long> arr(n); for (int i = 0; i < n; i++) { cin >> arr[i]; } SegmentTree segTree(arr); while (q--) { char op; cin >> op; if (op == 'Q') { int a, b; cin >> a >> b; // 题目中的区间是从1开始的,需要转换为从0开始 cout << segTree.query(a - 1, b - 1) << endl; } else if (op == 'C') { int a, b; long long c; cin >> a >> b >> c; // 题目中的区间是从1开始的,需要转换为从0开始 segTree.update(a - 1, b - 1, c); } } return 0; } -
最近活动
This person is lazy and didn't join any contests or homework.