Codeforces Round 974 (Div. 3)

news/2024/9/22 2:12:10/文章来源:https://www.cnblogs.com/EternalEpic/p/18424775

拿小小号打的DIV3,中间看了会儿b站摸鱼,结果尼玛最后几点钟G没写完。。。

image

A. Robin Helps

模拟题

int T, n, k;signed main(void) {for (read(T); T; T--) {read(n), read(k); int ans = 0; ll sum = 0;for (int i = 1; i <= n; i++) {int x; read(x);if (x >= k) sum += x;if (x == 0) {if (sum) sum--, ans++;}}writeln(ans);}//fwrite(pf, 1, o1 - pf, stdout);return 0;
}

B. Robin Hood and the Major Oak

根据mod4分类

int T, n, k;signed main(void) {for (read(T); T; T--) {read(n), read(k);if (k % 4 == 0 || (k % 4 == 1 && n % 2 == 0) || (n % 2 == 1 && k % 4 == 3)) puts("YES");else puts("NO"); }//fwrite(pf, 1, o1 - pf, stdout);return 0;
}

C. Robin Hood in Town

二分一下\(\Delta\)即可。

const int N = 2e5 + 5;
int T, n, k, a[N]; ll sum;inline bool check(ll x) {int ret = 0;for (int i = 2; i <= n; i++)if (2ll * n * a[i] < sum + x) ++ret;if (ret * 2 > n) return true;return false;
}signed main(void) {for (read(T); T; T--) {read(n); int mx = 0; sum = 0;for (int i = 1; i <= n; i++)read(a[i]), chkmax(mx, a[i]), sum += a[i];if (n == 1 || n == 2) { puts("-1"); continue; }sort(a + 1, a + n + 1, greater <int> ());ll l = 0, r = (ll) 1e18, ans = (ll) 1e18;while (l <= r) {ll mid = l + r >> 1;if (check(mid)) ans = mid, r = mid - 1;else l = mid + 1;}writeln(ans);}//fwrite(pf, 1, o1 - pf, stdout);return 0;
}

D. Robert Hood and Mrs Hood

用set模拟题意即可。

const int N = 1e5 + 10;
int n, d, k;
vector<int> l[N], r[N];void slv() {cin >> n >> d >> k;for(int i = 1; i <= n; i++) l[i].clear(), r[i].clear();for(int i = 1; i <= k; i++) {int x, y;cin >> x >> y;l[x].push_back(i), r[y].push_back(i);}set<int> st;int ans1 = 0, ans2 = k + 1, ip1, ip2, pos = 1;for(int i = 1; i <= d; i++) {for(int ip : l[i]) st.insert(ip);}ans1 = ans2 = st.size(), ip1 = ip2 = 1;// cerr<<" pos= "<<1<<" siz="<<st.size()<<'\n';while(pos + 1 + d - 1 <= n) {for(int i : l[pos + 1 + d - 1]) st.insert(i);for(int i : r[pos]) st.erase(i);// cerr<<" pos= "<<pos+1<<" siz="<<st.size()<<'\n';if(ans1 < st.size()) ans1 = st.size(), ip1 = pos + 1;if(ans2 > st.size()) ans2 = st.size(), ip2 = pos + 1;pos++;}cout << ip1 << ' ' << ip2 << '\n';return;
}

E. Rendez-vous de Marian et Robin

跑两遍分层图最短路,枚举交点取最小的最大值即可。

struct Edge {int v, w;Edge(int v = 0, int w = 0) : v(v), w(w) {}
};const int N = 2e5 + 5;
int T, n, m, h, a[N];
vector <Edge> G[N];ll dis[N][2], f[N], g[N]; bool inq[N][2];
inline void DijkstraI(int s) {for (int i = 1; i <= n; i++) dis[i][0] = dis[i][1] = (ll) 1e18;priority_queue <piii, vector<piii>, greater<piii> > q;dis[s][0] = 0; q.push(Mpp(dis[s][0], s, 0)); Ms(inq, 0);if (a[s]) dis[s][1] = 0, q.push(Mpp(dis[s][1], s, 1));while (!q.empty()) {int u = q.top().second.first, id = q.top().second.second; q.pop();if (inq[u][id]) continue; inq[u][id] = true;for (auto x : G[u]) {int v = x.v, w = x.w;int e = id ? w / 2 : w;if (dis[v][id] > dis[u][id] + e) {dis[v][id] = dis[u][id] + e;if (!inq[v][id]) q.push(Mpp(dis[v][id], v, id));}if (a[v] && id == 0 && dis[v][1 - id] > dis[u][id] + e) {dis[v][1 - id] = dis[u][id] + e;if (!inq[v][1 - id]) q.push(Mpp(dis[v][1 - id], v, 1 - id));}}}for (int i = 1; i <= n; i++) f[i] = min(dis[i][1], dis[i][0]);
}inline void DijkstraII(int s) {for (int i = 1; i <= n; i++) dis[i][0] = dis[i][1] = (ll) 1e18;priority_queue <piii, vector<piii>, greater<piii> > q;dis[s][0] = 0; q.push(Mpp(dis[s][0], s, 0)); Ms(inq, 0);if (a[s]) dis[s][1] = 0, q.push(Mpp(dis[s][1], s, 1));while (!q.empty()) {int u = q.top().second.first, id = q.top().second.second; q.pop();if (inq[u][id]) continue; inq[u][id] = true;for (auto x : G[u]) {int v = x.v, w = x.w;int e = id ? w / 2 : w;if (dis[v][id] > dis[u][id] + e) {dis[v][id] = dis[u][id] + e;if (!inq[v][id]) q.push(Mpp(dis[v][id], v, id));}if (a[v] && id == 0 && dis[v][1 - id] > dis[u][id] + e) {dis[v][1 - id] = dis[u][id] + e;if (!inq[v][1 - id]) q.push(Mpp(dis[v][1 - id], v, 1 - id));}}}for (int i = 1; i <= n; i++) g[i] = min(dis[i][1], dis[i][0]);
}signed main(void) {for (read(T); T; T--) {read(n), read(m), read(h);for (int i = 1; i <= n; i++) G[i].clear(), a[i] = 0;for (int i = 1, x; i <= h; i++) read(x), a[x] = 1;for (int i = 1, u, v, w; i <= m; i++) {read(u), read(v), read(w);G[u].push_back(Edge(v, w));G[v].push_back(Edge(u, w));}DijkstraI(1); DijkstraII(n); ll ans = (ll) 1e18;for (int i = 1; i <= n; i++) {if (f[i] == (ll) 1e18 || g[i] == (ll) 1e18) continue;chkmin(ans, max(f[i], g[i]));}writeln(ans == (ll) 1e18 ? -1 : ans);}//fwrite(pf, 1, o1 - pf, stdout);return 0;
}

某个傻逼wa两次的原因:
image

F. Sheriff's Defense

简单树形dp

const int N = 2e5 + 5;
int T, n, c, a[N];
vector <int> G[N];ll dp[N][2];
inline void dfs(int u, int f) {dp[u][1] = a[u];for (auto v : G[u]) {if (v == f) continue;dfs(v, u);dp[u][0] += max(dp[v][0], dp[v][1]);dp[u][1] += max(dp[v][0], dp[v][1] - 2 * c);}
}signed main(void) {for (read(T); T; T--) {read(n), read(c);for (int i = 1; i <= n; i++)read(a[i]), dp[i][0] = dp[i][1] = 0, G[i].clear();for (int i = 1, u, v; i < n; i++) {read(u), read(v);G[u].push_back(v);G[v].push_back(u);}dfs(1, 0);writeln(max(dp[1][0], dp[1][1]));}//fwrite(pf, 1, o1 - pf, stdout);return 0;
}

G. Milky Days

傻逼双端队列模拟题,就是细节有点多。代码就不放了,懂得都懂。

H. Robin Hood Archery

本质是询问一个区间里所有出现的数是不是出现偶数次,可以一眼莫队,也可以用随机数加的异或前缀和。

inline void slv(void) {cin >> n >> m;siz = sqrt(n);map<int, int> mp;int cnt = 0;for(int i = 1; i <= n; i++) {cin >> b[i];if(!mp[b[i]]) mp[b[i]] = ++cnt;b[i] = mp[b[i]];}s.clear(cnt);for(int i = 1; i <= m; i++) {cin >> a[i].l >> a[i].r;a[i].id = i;a[i].pos = (a[i].l - 1) / siz + 1;}sort(a + 1, a + 1 + m);int l = 1, r = 0;ll ans = 0;for(int i = 1; i <= m; i++) {while(l > a[i].l) s.ins(b[--l]);while(r < a[i].r) s.ins(b[++r]);while(l < a[i].l) s.del(b[l++]);while(r > a[i].r) s.del(b[r--]);res[a[i].id] = s.chk();}for(int i = 1; i <= m; i++)if(res[i]) cout << "YES\n";else cout << "NO\n";return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/801318.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSP-S 2024 初赛解析

时间紧任务重,可能有误,烦请指正 QwQ 题目内代码可能有些许错误,应该不大影响查看吧,这个难改就不改哩第1题 (2分) 在Linux系统中,如果你想显示当前工作目录的路径,应该使用哪个命令?( ) A. pwd B. cd C. ls D. echopwd 可以显示当前的工作路径 cd 表示切换工作路径 l…

CSP-J 2024 初赛解析

时间紧任务重,可能有误,烦请指正 QwQ第1题 (2分) 32 位 int 类型的存储范围是? A. -2147483647 ~ +2147483647 B. -2147483647 ~ +2147483648 C. -2147483648 ~ +2147483647 D. -2147483648 ~ +214748364832 位 int 类型,除最高位为符号位外,剩下 31 位均为数字。但 0 的二…

《MySQL 进阶篇》二十:锁

MySQL 锁的分类,表锁和行锁有哪些类型?Author: ACatSmiling Since: 2024-09-21锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),就需要保证这个…

《MySQL 进阶篇》二十一:MVCC

MySQL 是如何处理并发问题的?什么是 MVCC?MVCC 的原理是什么?Author: ACatSmiling Since: 2024-09-21什么是 MVCC MVCC:Multiversion Concurrency Control,多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在 InnoDB 的事…

15.Python基础篇-文件操作

文件的打开与关闭 第一种方法:open函数 open函数:打开一个文件,并返回文件对象。如果文件无法打开,会抛出 OSError异常。 open函数的参数介绍: file参数 要打开的文件路径。可以是绝对路径也可以是相对路径 mode参数 打开文件的模式。分为:r:只读。文件的指针会放在文件…

《MySQL 进阶篇》十七:数据库其他调优策略

MySQL 数据库的其他调优策略。Author: ACatSmiling Since: 2024-09-21数据库调优的措施 调优的目标尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量更大)。 合理的结构设计和参数调整,以提高用户操作响应的速度(响应速度更快)。 减少系统的瓶颈,提高 MySQL 数…

《MySQL 进阶篇》十九:事务日志

MySQL redo log 和 undo log。Author: ACatSmiling Since: 2024-09-21事务有 4 种特性:原子性、一致性、隔离性和持久性。那么事务的 4 种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。 而事务的原子性、一致性和持久性由事务的redo log和undo log来保证。redo l…

《MySQL 进阶篇》十八:事务基础知识

MySQL 事务的定义、ACID 特性,以及事务的隔离级别。Author: ACatSmiling Since: 2024-09-21数据库事务概述 事务是数据库区别于文件系统的重要特性之一,当有了事务就会让数据库始终保持一致性,同时还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会…

《MySQL 进阶篇》十五:索引优化和查询优化

MySQL 索引优化,以及查询优化。Author: ACatSmiling Since: 2024-09-21数据库调优的维度:索引失效、没有充分利用所以 —— 索引建立。 关联查询太多 JOIN(设计缺陷或不得已的需求)—— SQL 优化。 服务器调优及各个参数设置(缓冲、 线程数)—— 调整 my.cnf。 数据过多 …

《MySQL 进阶篇》十六:数据库的设计规范

MySQL 数据库设计需要遵循什么规范?什么是范式?什么是反范式?Author: ACatSmiling Since: 2024-09-21为什么需要数据库设计 我们在设计数据表的时候,要考虑很多问题。比如:用户都需要什么数据?需要在数据表中保存哪些数据? 如何保证数据表中数据的正确性?当插入、删除、…

《MySQL 基础篇》十一:索引的存储结构

MySQL 索引的存储结构,以及推演过程。Author: ACatSmiling Since: 2024-09-21为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构。 常将索引比作教科书的目录部分(实际上不是完全一样),通过目录找到对应文章的页码,便可快速定位到需要的文章。MySQL 中也是…

《MySQL 基础篇》十二:InnoDB 存储引擎的数据结构

MySQL InnoDB 存储引擎的数据结构。Author: ACatSmiling Since: 2024-09-21数据库的存储结构:页 索引结构提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说时存储在页结构中。另一方面,索引实在存储引擎中实现的,MySQL 服务器上的存储引擎负责对表…