I'll find my way

本文讲述了作者从大一到大四的大学生活经历,包括课程学习、项目实践等内容,表达了作者对于大学生活的感悟以及对未来发展的期待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人们总抱着到了大学就可以轻松了的观点的时候,他们那知阿?
大一大二,重复着高中的生活,除了少了些许升学考试的压力,其他的一切还如旧:每天几乎八节的课,晚上必不可少的自习,集体的生活反而让正常的睡觉时间定在了十二点,然后上课就时常对着老师点头。
大三,分专业了,课少了,接了项目,没课就得在实验室呆着,当课程和项目的压力同时到来的时候,就只能以“人每天只要睡4个小时就够了”来安慰自己。
大四,只剩下4个学分了却依然忙碌,不知道从什么时候开始就没有了寒暑假的概念,当蜗居实验室变成一种习惯的时候,家里人就惊讶于为什么会有早上8点出宿舍,晚上11点会宿舍的生活。

我不算努力,但也算能够对得起自己大学的生活,自己有时候确实很懒、很贪玩,但也能够充实自己。有件事一直在心里,一直感觉对不起爸妈姐,那就是还没过CET-6,曾经多少次下决心要好好准备,又有多少次坚持不到考试的那一天,给自己的理由都是“忙”。现在的生活依然忙碌,却不想再以“忙”为借口了,因为我曾经答应过她,我会努力的,会坚持的,直到考试的那一天,到时候过与不过就交给老天吧,至少我奋斗过。

#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 0x3f3f3f3f3f3f3f3f; // 修正1:扩大INF范围 #define rep(i,s,t) for(register ll i = s;i <= t;++i) #define per(i,t,s) for(register ll i = t;i >= s;--i) const ll N = 1e5 + 5; const ll M = 5e5 + 5; // 4*n满足1e5数据 ll n, m, q, a[N], b[N]; class segment_tree { private: struct node { ll l, r, maxn, minn; } t[M]; inline ll lson(ll p) { return p << 1; } inline ll rson(ll p) { return p << 1 | 1; } inline void push_up(ll p) { t[p].maxn = max(t[lson(p)].maxn, t[rson(p)].maxn); t[p].minn = min(t[lson(p)].minn, t[rson(p)].minn); } public: void build(ll p, ll l, ll r) { t[p].l = l; t[p].r = r; if(l == r) { t[p].maxn = t[p].minn = 0; // B树初始0 return; } ll mid = (l + r) >> 1; build(lson(p), l, mid); build(rson(p), mid+1, r); push_up(p); } void update(ll p, ll x, ll k) { if(t[p].l == t[p].r) { t[p].maxn = t[p].minn = k; return; } ll mid = (t[p].l + t[p].r) >> 1; if(x <= mid) update(lson(p), x, k); else update(rson(p), x, k); push_up(p); } ll query_max(ll p, ll l, ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].maxn; ll mid = (t[p].l + t[p].r) >> 1; ll ans = -INF; if(l <= mid) ans = max(ans, query_max(lson(p), l, r)); if(r > mid) ans = max(ans, query_max(rson(p), l, r)); return ans; } ll query_min(ll p, ll l, ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].minn; ll mid = (t[p].l + t[p].r) >> 1; ll ans = INF; if(l <= mid) ans = min(ans, query_min(lson(p), l, r)); if(r > mid) ans = min(ans, query_min(rson(p), l, r)); return ans; } }; class dual_segment_tree { private: struct node { ll l, r, maxn, minn; } t[M]; inline ll lson(ll p) { return p << 1; } inline ll rson(ll p) { return p << 1 | 1; } inline void push_up(ll p) { t[p].maxn = max(t[lson(p)].maxn, t[rson(p)].maxn); t[p].minn = min(t[lson(p)].minn, t[rson(p)].minn); } public: void build(ll p, ll l, ll r) { t[p].l = l; t[p].r = r; if(l == r) { // 修正2:叶子节点初始化为无效值 t[p].maxn = -INF; t[p].minn = INF; return; } ll mid = (l + r) >> 1; build(lson(p), l, mid); build(rson(p), mid+1, r); push_up(p); } void update(ll p, ll x, ll k, bool opt) { if(t[p].l == t[p].r) { if(opt) { // 设置为无效值 t[p].maxn = -INF; t[p].minn = INF; } else { // 正常更新 t[p].maxn = t[p].minn = k; } return; } ll mid = (t[p].l + t[p].r) >> 1; if(x <= mid) update(lson(p), x, k, opt); else update(rson(p), x, k, opt); push_up(p); } ll query_max(ll p, ll l, ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].maxn; ll mid = (t[p].l + t[p].r) >> 1; ll ans = -INF; if(l <= mid) ans = max(ans, query_max(lson(p), l, r)); if(r > mid) ans = max(ans, query_max(rson(p), l, r)); return ans; } ll query_min(ll p, ll l, ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].minn; ll mid = (t[p].l + t[p].r) >> 1; ll ans = INF; if(l <= mid) ans = min(ans, query_min(lson(p), l, r)); if(r > mid) ans = min(ans, query_min(rson(p), l, r)); return ans; } }; segment_tree t; dual_segment_tree pos, neg; inline ll read() { ll x = 0, y = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') y = -y; c = getchar(); } while(c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c ^ '0'); c = getchar(); } return x * y; } inline void write(ll x) { if(x < 0) { putchar('-'); write(-x); return; } if(x > 9) write(x / 10); putchar(x % 10 + '0'); } int main() { n = read(); m = read(); q = read(); pos.build(1, 1, n); neg.build(1, 1, n); rep(i, 1, n) { a[i] = read(); if(a[i] >= 0) { pos.update(1, i, a[i], false); neg.update(1, i, a[i], true); // 负数树设为无效 } else { pos.update(1, i, a[i], true); // 非负树设为无效 neg.update(1, i, a[i], false); } } t.build(1, 1, m); rep(i, 1, m) { b[i] = read(); t.update(1, i, b[i]); } while(q--) { ll l1 = read(), r1 = read(), l2 = read(), r2 = read(); ll maxb = t.query_max(1, l2, r2); ll minb = t.query_min(1, l2, r2); ll max_pos = pos.query_max(1, l1, r1); ll min_pos = pos.query_min(1, l1, r1); ll max_neg = neg.query_max(1, l1, r1); ll min_neg = neg.query_min(1, l1, r1); ll ans = -INF; if(max_pos != -INF) ans = max(ans, max_pos * minb); if(min_pos != INF) ans = max(ans, min_pos * minb); if(max_neg != -INF) ans = max(ans, max_neg * maxb); if(min_neg != INF) ans = max(ans, min_neg * maxb); write(ans); putchar('\n'); } return 0; } #include <bits/stdc++.h> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f3f3f3f3f #define rep(i,s,t) for(register ll i = s;i <= t;++i) #define per(i,t,s) for(register ll i = t;i >= s;--i) const ll N = 1e5 + 5; const ll M = 5e5 + 5; ll n; ll m; ll q; ll ans = -INF; ll a[N] = {}; ll b[N] = {}; class segment_tree { private: struct node { ll l; ll r; ll maxn; ll minn; }; node t[M]; inline ll lson(ll p) { return p << 1; } inline ll rson(ll p) { return p << 1 | 1; } inline void push_up(ll p) { t[p].maxn = max(t[lson(p)].maxn,t[rson(p)].maxn); t[p].minn = min(t[lson(p)].minn,t[rson(p)].minn); } public: inline void build(ll p,ll l,ll r) { t[p].l = l; t[p].r = r; if(l == r) { t[p].maxn = 0; t[p].minn = 0; return; } ll mid = l + r >> 1; build(lson(p),l,mid); build(rson(p),mid + 1,r); push_up(p); } inline void update(ll p,ll x,ll k) { if(t[p].l == t[p].r) { t[p].maxn = k; t[p].minn = k; return; } ll mid = t[p].l + t[p].r >> 1; if(x <= mid) update(lson(p),x,k); else update(rson(p),x,k); push_up(p); } inline ll query_max(ll p,ll l,ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].maxn; ll ans = -INF; ll mid = t[p].l + t[p].r >> 1; if(l <= mid) ans = max(ans,query_max(lson(p),l,r)); if(r > mid) ans = max(ans,query_max(rson(p),l,r)); return ans; } inline ll query_min(ll p,ll l,ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].minn; ll ans = INF; ll mid = t[p].l + t[p].r >> 1; if(l <= mid) ans = min(ans,query_min(lson(p),l,r)); if(r > mid) ans = min(ans,query_min(rson(p),l,r)); return ans; } }; class dual_segment_tree { private: struct node { ll l; ll r; ll maxn; ll minn; }; node t[M]; inline ll lson(ll p) { return p << 1; } inline ll rson(ll p) { return p << 1 | 1; } inline void push_up(ll p) { t[p].maxn = max(t[lson(p)].maxn,t[rson(p)].maxn); t[p].minn = min(t[lson(p)].minn,t[rson(p)].minn); } public: inline void build(ll p,ll l,ll r) { t[p].l = l; t[p].r = r; t[p].maxn = -INF; t[p].minn = INF; if(l == r) return; ll mid = l + r >> 1; build(lson(p),l,mid); build(rson(p),mid + 1,r); push_up(p); } inline void update(ll p,ll x,ll k,bool opt) { if(t[p].l == t[p].r) { if(opt) { t[p].maxn = -INF; t[p].minn = INF; } else { t[p].maxn = k; t[p].minn = k; } return; } ll mid = t[p].l + t[p].r >> 1; if(x <= mid) update(lson(p),x,k,opt); else update(rson(p),x,k,opt); push_up(p); } inline ll query_max(ll p,ll l,ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].maxn; ll ans = -INF; ll mid = t[p].l + t[p].r >> 1; if(l <= mid) ans = max(ans,query_max(lson(p),l,r)); if(r > mid) ans = max(ans,query_max(rson(p),l,r)); return ans; } inline ll query_min(ll p,ll l,ll r) { if(l <= t[p].l && t[p].r <= r) return t[p].minn; ll ans = INF; ll mid = t[p].l + t[p].r >> 1; if(l <= mid) ans = min(ans,query_min(lson(p),l,r)); if(r > mid) ans = min(ans,query_min(rson(p),l,r)); return ans; } }; segment_tree t; dual_segment_tree pos; dual_segment_tree neg; inline ll read() { ll x = 0; ll y = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') y = -y; c = getchar(); } while(c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c ^ '0'); c = getchar(); } return x * y; } inline void write(ll x) { if(x < 0) { putchar('-'); write(-x); return; } if(x > 9) write(x / 10); putchar(x % 10 + '0'); } int main() { n = read(); m = read(); q = read(); pos.build(1,1,n); neg.build(1,1,n); rep(i,1,n) { a[i] = read(); if(a[i] >= 0) { pos.update(1,i,a[i],false); neg.update(1,i,a[i],true); } else { pos.update(1,i,a[i],true); neg.update(1,i,a[i],false); } } rep(i,1,m) { b[i] = read(); t.update(1,i,b[i]); } rep(o,1,q) { ans = -INF; ll l1 = 0; ll r1 = 0; ll l2 = 0; ll r2 = 0; l1 = read(); r1 = read(); l2 = read(); r2 = read(); ll max_t = t.query_max(1,l2,r2); ll min_t = t.query_min(1,l2,r2); ll max_pos = pos.query_max(1,l1,r1); ll min_pos = pos.query_min(1,l1,r1); ll max_neg = neg.query_max(1,l1,r1); ll min_neg = neg.query_min(1,l1,r1); if(max_pos != -INF) ans = max(ans,max_pos * min_t); if(min_pos != INF) ans = max(ans,min_pos * min_t); if(max_neg != -INF) ans = max(ans,max_neg * max_t); if(min_neg != INF) ans = max(ans,min_neg * max_t); write(ans); putchar('\n'); } return 0; } 第二段代码错在哪里
08-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值