Codeforces Round 1009 (Div. 3)

news/2025/3/12 1:21:48/文章来源:https://www.cnblogs.com/maburb/p/18766581

A. Draw a Square

题意:\(4\)个点,两个在\(x\)轴上,两个在\(y\)轴上,求它们能不能形成正方形。

显然它们离原点的距离都要相同。

点击查看代码
void solve() {int l, r, d, u;std::cin >> l >> r >> d >> u;if (l == r && d == u && l == d) {std::cout << "YES\n";} else {std::cout << "NO\n";}
}

B. The Third Side

题意:给你一个数组,每次选其中两个数和一个\(x\),使得这三个数可以组成三角形。然后删除选出的两个数,把\(x\)加进去。

从大到小排序,然后每次拿两个最大处理,\(x\)取值取最大。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}i64 ans = a[n - 1];for (int i = n - 2; i >= 0; -- i) {ans = ans + a[i] - 1;}std::cout << ans << "\n";
}

C. XOR and Triangle

题意:给你\(x\),求一个\(y\)使得\(y < x\)\(x \oplus y, x, y\)可以组成三角形。

\(x\)最高位\(1\)\(i\),那么使得\(y = 2^i - 1\)即可。

点击查看代码
void solve() {int x;std::cin >> x;int y = 0;for (int i = 30, flag = 0; i >= 0; -- i) {if (~x >> i & 1) {if (flag) {y += 1 << i;}} else {if (flag) {y += 1 << i;}flag = 1;}}int z = (x ^ y);if (y >= x || x + y <= z || y + z <= x || x + z <= y) {std::cout << -1 << "\n";} else {std::cout << y << "\n";}
}

D. Counting Points

题意:给出\(n\)个圆心在\(x\)轴上的\(n\)个圆,它们半径之和为\(m\)。求有多少整数点被至少一个圆包含。

对于\(x\)轴上的点来说,如果他被一个圆包含了,那么它上面和下面各有\(\sqrt(r_i ^ 2 - (i - x_i)^2)\)个点也被包含了。那么对于每个圆暴力枚举\(x\)轴上每个被它包含的点,然后每个记录往上下一样包含的点最大值。用\(map\)存。

点击查看代码
void solve() {int n, m;std::cin >> n >> m;std::vector<i64> x(n), r(n);for (int i = 0; i < n; ++ i) {std::cin >> x[i];}for (int i = 0; i < n; ++ i) {std::cin >> r[i];}std::map<i64, i64> mp;for (int i = 0; i < n; ++ i) {i64 L = x[i] - r[i], R = x[i] + r[i];while (L <= R) {i64 h = std::sqrt(r[i] * r[i] - (R - x[i]) * (R - x[i]));mp[L] = std::max(mp[L], h + 1);mp[R] = std::max(mp[R], h + 1);++ L;-- R;}}i64 ans = 0;for (auto & [x, y] : mp) {ans += y * 2 - 1;}std::cout << ans << "\n";
}

E. Empty Triangle

题意:交互题。有\(n\)个点,你每次问三个点,会回答你被它们组成的三角形包含的某个点下标,如果没有则回答\(0\)。不超过\(75\)次询问找出三个点,它们组成的三角形不包含其它任何点。

乱搞搞过去的。

点击查看代码
int ask(int i, int j, int k) {std::cout << "? " << i << " " << j << " " << k << std::endl;int res;std::cin >> res;return res;
}void solve() {int n;std::cin >> n;int i = 1, j = (n + 1) / 2, k = n;while (1) {int p = ask(i, j, k);if (p == 0) {std::cout << "! " << i << " " << j << " " << k << std::endl;return;}if (p & 1) {i = j;j = k;k = p;    		} else {k = j;j = i;i = p;}}
}

F. Counting Necessary Nodes

没看懂题。

待补


G. Game With Triangles: Season 2

题意:\(n\)个点围成一个多边形,你每次选三个点获得\(a_i \times a_j \times a_k\)的贡献,所有选出的三个点构成的三角形不能有交集,每个点只能选一次。求最大价值。

区间\(dp\)。考虑破环成链,把数组复制一份。然后\(f[i][j]\)表示从\(i\)\(j\)个点的最大贡献。那么首先\(f[i][j] = \max(f[i + 1][j], f[i + 1][j], f[i][j - 1])\)。表示不选\(i\)或者不选\(j\)或者都不选。然后枚举和\(i, j\)组成三角形的点\(k\), \(f[i][j] = \max(f[i][j], a_i \times a_j \times a_k + f[i + 1][k - 1] + f[k + 1][j - 1])\)。同时也可以不用\(i, j\),枚举\(k\)作为分界点,\(f[i][j] = \max(f[i][j], f[i][k] + f[k + 1][j], f[i][k - 1] + f[k][j])\)

点击查看代码
void solve() {int n;std::cin >> n;std::vector<i64> a(2 * n + 1);for (int i = 1; i <= n; ++ i) {std::cin >> a[i];a[i + n] = a[i];}std::vector f(2 * n + 1, std::vector<i64>(2 * n + 1));for (int len = 3; len <= n; ++ len) {for (int i = 1; i + len - 1 <= 2 * n; ++ i) {int j = i + len - 1;f[i][j] = std::max({f[i + 1][j], f[i][j - 1], f[i + 1][j - 1]});for (int k = i + 1; k < j; ++ k) {f[i][j] = std::max(f[i][j], a[i] * a[j] * a[k] + f[i + 1][k - 1] + f[k + 1][j - 1]);f[i][j] = std::max({f[i][j], f[i][k] + f[k + 1][j], f[i][k - 1] + f[k][j]});}}}i64 ans = 0;for (int i = 1; i <= n; ++ i) {ans = std::max(ans, f[i][i + n - 1]);}std::cout << ans << "\n";
}

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

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

相关文章

【CodeForces训练记录】Codeforces Round 1009 (Div. 3)

训练情况赛后反思 大翻车,C题打表直接开猜,D题想到了转化行贡献再线段覆盖,但是不会算时间复杂度没敢写,后来试了一发给过了 A题 显然四个点都在坐标轴上,构成正方形只有四个数相等的情况点击查看代码 #include <bits/stdc++.h> // #define int long long #define e…

Cilium Ingress及插件的高级特性

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.启用Cilium Ingress Controller1.Cilium Ingress Controller概述2.启用Cilium Ingress Controller3.部署metallb组件4.测试Ingress规则之dedicated模式5.测试Ingress规则之shared模式二.Cilium高级特性…

pycharm基础使用方法

https://blog.csdn.net/MikexunP/article/details/89414928 基本配置 我们安装好PyCharm后,首先要进行一些小配置,比如主题,字体,字体颜色等。 我们打开PyCharm后,点开file,找到Setting 然后就会跳出Setting的窗口 可以说PyCharm的各种配置都需要在这里配置,现在我们进入…

FastAPI 错误处理与自定义错误消息完全指南:构建健壮的 API 应用 ️

title: FastAPI 错误处理与自定义错误消息完全指南:构建健壮的 API 应用 🛠️ date: 2025/3/12 updated: 2025/3/12 author: cmdragon excerpt: 我们将涵盖常见的错误类型、如何捕获和处理这些错误、以及如何返回自定义的错误消息。通过实例和最佳实践,您将能够有效地应对…

基于Flask的Web应用开发

基于Flask的Web应用开发项目来源:[【基于Flask的Web应用开发-01.应用介绍及Flask安装_s】](【基于Flask的Web应用开发-01.应用介绍及Flask安装_s】 https://www.bilibili.com/video/BV1r94y1j7uW/?share_source=copy_web&vd_source=d0886da49a29063777f2956d5780b087) 原…

vitest遇到的一个小问题:scrollTo is not a function

给tdesign-mobile-vue提了一个pr,验收通过了但是单测流水线报错了看报错是组件里的错误,scrollTo is not a function 组件代码的大概逻辑如下 const navScroll = ref<HTMLElement>(); // ... if (navScroll.value) {const tab = navScroll.value.querySelector < HT…

《Python极客编程 : 用代码探索世界》 | PDF免费下载

16个有趣的编程项目,项目式的学习方法,有趣案例提升Python编程技能,培养解决现实问题的思维,附赠源代码,适合零基础计算机小白入门学习。点击下载书籍信息 作者: [美]李沃恩(Lee Vaughan) 出版社: 人民邮电出版社 副标题: 用代码探索世界 译者: 王海鹏 出版年: 2022-8-1…

密度大于0.9408

题目: from Crypto.Util.number import * import random from Crypto.Cipher import AES import hashlib from Crypto.Util.Padding import pad from secrets import flaglist = [] bag = [] p=random.getrandbits(64) assert len(bin(p)[2:])==64 for i in range(4):t = pa=[g…

背包密码密度的作用(LLL算法的实现)

背包问题通解: 当密度d满足以下条件时,LLL算法能有效地解决这类背包问题![](https://cdn.nlark.com/yuque/0/2025/png/49294098/1739349426771-401f2fa7-aefe-422b-b642-5d8f664c415d.png)其中:len(M)是向量M的长度,即向量中元素的数量 max(Mi)是向量M中的最大元素计算: import…

Elliptic(椭圆)曲线

题目: from Crypto.Util.number import getPrime from libnum import s2n from secret import flagp = getPrime(256) a = getPrime(256) b = getPrime(256) E = EllipticCurve(GF(p),[a,b]) m = E.random_point() G = E.random_point() k = getPrime(256) K = k * G r = getPr…

Twisted Hessian曲线(求a)

题目: from Crypto.Util.number import * from Crypto.Cipher import AES from Crypto.Util.Padding import pad from random import randint import hashlib from secrets import flagdef add_THCurve(P, Q):if P == (0, 0):return Qif Q == (0, 0):return Px1, y1 = Px2, y2 …

基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真

1.课题概述基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真。双PI控制器是一种结合了两个独立的PI控制器的控制策略,用于提高系统的稳定性和动态性能。2.系统仿真结果 (完整程序运行后无水印) 3.核心程序与模型 版本:MATLAB2022a 4.系统原理简介 4.1 无…