哇哦杯题解民间版

news/2025/10/23 18:03:36/文章来源:https://www.cnblogs.com/Zvelig1205/p/19158445

自我感觉题目难度:

简单:D B F

中等:H G E

进阶:A C I

博客园自带目录()

A

博弈论。

显而易见,对于足够聪明的人,在所有决策中只要存在一个必胜决策,就会直接选择这个策略。

故而可以使用 \(dfs\) 爆搜。

对于一个状态,一共可以从 \(5\) 个状态

int a[5] = {1, 2, 3, 5, 8};
bool dp[N];
bool dfs(int k)
{if (k == 0) // 无法取数,此状态为必输。return 0;bool ret = 0; // 判断是否存在必胜策略for (int i = 0; i < 5; i++){if (k < a[i])break;ret |= !dfs(k - a[i]);// 只需要存在一个必胜状态(对手必输)即可}return ret;
}

可以发现,此时可能会对同一个状态进行多次搜索,所以可以记忆化(类似斐波那契数列):

int a[5] = {1, 2, 3, 5, 8};
bool dp[N];
bool dfs(int k)
{if (dp[k])return dp[k];if (k == 0)return 0;bool ret = 0;for (int i = 0; i < 5; i++){if (k < a[i])break;ret |= !dfs(k - a[i]);}return dp[k] = ret;
}

B

签到。

当棉花小熊进行偶数次操作时,灯的状态不会发生改变,而奇数次则会发生改变。

\(m\) 可以直接用 \(string\) 来储存。

    int n;string m;cin >> n >> m;if (m.size() & 1)n ^= 1;if (n)cout << "qwq\n";elsecout << "awa\n";

C

官方说是前缀和。

哥们不懂思维,但是哥们会数据结构。

题目的前半部分相当于是单点查询,区间求值,其中模数为 \(k\)

可以用线段树或者树状数组解决。

不会线段树的可以移步。

而后续操作即为统计每个数出现的次数,用一个桶即可处理。

这个题好像卡时间严重,不能使用 \(map\)

using i64 = long long;
const int N = 1e6 + 7;
int n, m, mod;
int a[N];
struct Seg_Tree
{i64 sum;int le, ri, siz;int tag;
} T[N << 2];
void pushup(int i)
{T[i].sum = (T[i << 1].sum + T[i << 1 | 1].sum) % mod;
}
void build(int i, int l, int r)
{T[i].le = l, T[i].ri = r;T[i].siz = r - l + 1;if (l == r){T[i].sum = a[l];return;}int mid = (l + r) >> 1;build(i << 1, l, mid);build(i << 1 | 1, mid + 1, r);pushup(i);
}
void pushdown(int i)
{T[i << 1].sum = (T[i << 1].sum + (i64)T[i].tag * T[i << 1].siz % mod) % mod;T[i << 1 | 1].sum = (T[i << 1 | 1].sum + (i64)T[i].tag * T[i << 1 | 1].siz % mod) % mod;T[i << 1].tag = (T[i << 1].tag + T[i].tag) % mod;T[i << 1 | 1].tag = (T[i << 1 | 1].tag + T[i].tag) % mod;T[i].tag = 0;
}
void update(int i, int l, int r, int k)
{if (r < l)return;if (l <= T[i].le && T[i].ri <= r){T[i].sum = (T[i].sum + (i64)k * T[i].siz % mod) % mod;T[i].tag = (T[i].tag + k) % mod;return;}if (T[i].tag)pushdown(i);int mid = (T[i].le + T[i].ri) >> 1;if (l <= mid)update(i << 1, l, r, k);if (mid < r)update(i << 1 | 1, l, r, k);pushup(i);
}
int ask(int i, int pos)
{if (T[i].le == T[i].ri)return T[i].sum;if (T[i].tag)pushdown(i);int mid = (T[i].le + T[i].ri) >> 1;if (pos <= mid)return ask(i << 1, pos);elsereturn ask(i << 1 | 1, pos);
}
// map<int, int> tong;
int tong[100000001];
void _()
{n = re(), m = re(), mod = re();for (int i = 1; i <= n; i++)a[i] = re();build(1, 1, n);for (int i = 1; i <= n; i++){a[i] = ask(1, i) % mod;update(1, i + 1, min(i + m, n), a[i]);}int maxn = 0, maxp = -1;for (int i = 1; i <= n; i++){// wr(a[i], ' ');int now = ++tong[a[i]];if (now > maxn){maxn = now;maxp = a[i];}else if (now == maxn && maxp > a[i]){maxp = a[i];}}wr(maxp, ' '), wr(maxn, '\n');
}
int main()
{int qwq = 1;// qwq = re();for (int i = 1; i <= qwq; i++)_();return 0;
}

D

签到。

只需要判断是不是 素数 和是不是 三的倍数 就可以了。

bool is_p(int k)
{if (k < 2)return 0;for (int i = 2; i * i <= k; i++)if (k % i == 0)return 0;return 1;
}
void _()
{int n = re();bool pd1 = is_p(n);bool pd2 = (n % 3 == 0);if (pd1 && pd2)puts("xiaofeishu");else if (pd1)puts("xiaoyang");else if (pd2)puts("xiaomaomi");elseputs("xiaoniaogongzhu");
}

E

挺好的一个思维题。

整体思路是前缀和+二分查找。

首先可以通过前缀和统计在打完第 \(i\) 个攻击之后能造成的总伤害是多少,即:

    sum[0] = x;for (int i = 1; i <= n; i++)sum[i] = sum[i - 1] + a[i] + y;

然后对于每个魔物,通过 \(lower\_bound\) 找到第一个 大于等于 \(t\) 的位置即可,若找不到,输出 Failer

    int x = re(), y = re();int n = re();for (int i = 1; i <= n; i++)a[i] = re();sum[0] = x;for (int i = 1; i <= n; i++)sum[i] = sum[i - 1] + a[i] + y;int s = re();while (s--){int t = re();int it = lower_bound(sum, sum + n + 1, t) - sum;if (it == n + 1)puts("Failer");elsewr(it, '\n');}

F

签到。

判断 \(i\) 的就行来判断加减即可。

    int n = re(), ans = 0;for (int i = 1; i <= n; i++){int ls = re();if (i & 1)ans += ls;elseans -= ls;}wr(ans, '\n');

G

最大子段和板子,只是非空。

在输入的过程中直接求和 \(sum\),并同时与 \(ans\) 做比较取 \(max\),如果遇到 \(sum<0\) 的情况则说明此时求的 \(sum\) 对于之后的贡献是负的,直接将 \(sum\) 清零即可。

    int n = re(), ans = -1e9;int sum = 0;for (int i = 1; i <= n; i++){int ls = re();sum += ls;ans = max(ans, sum);if (sum < 0)sum = 0;}wr(ans, '\n');

H

经典的边问边找。

用一个 \(map\) 储存值所对应的下标,如果对于新输入的 \(k\),存在 \(target-k\),则说明存在情侣,直接输出便可 \(return\)

本题没有多组测试,若存在多组测试,则需要保证每组数据全部输入完。

    int n = re(), m = re();for (int i = 1; i <= n; i++){int k = re();if (T[m - k]){wr(T[m - k] - 1, ' '), wr(i - 1, '\n');return;}T[k] = i;}

I

计算几何,数学题,需要分类讨论。

  1. 相离

如图。

别挂梯子

此时相交的面积为 0。

  1. 包含

如图。

别挂梯子

此时相交的面积为较小的圆的面积。

  1. 相交

如图。

此时的面积为两段弧之间所包含的面积。

已知 \(O_1,O_2\) 的坐标,可以求出距离 \(d\)

可以通过中间的绿线分为左右两个弓形部分,能够分别求出。

以红色方 \(O_1\) 为例,可以通过 \(r_1,r_2\)\(d\) 求出 \(A\)(余弦公式 \(a^{2}=b^{2}+c^{2}-2bc\cos A\) 和反三角函数 \(\arccos\))。

此时圆心角即为 \(\alpha=2A\)

然后红色弓形的面积就是 \(S_{扇形}-S_{\Delta}\),可以通过扇形面积公式和三角形面积公式即可求出。

\[S_{扇形}=\dfrac{1}{2} r^2 \alpha\\ S_{\Delta}=\dfrac{1}{2} r^2\sin{\alpha}\]

struct yuan
{double x, y, r;
} r1, r2;
double p2(double x) { return x * x; }
double dis(yuan a, yuan b)
{return sqrt(p2(a.x - b.x) + p2(a.y - b.y));
}
void _()
{cout << fixed << setprecision(1);cin >> r1.x >> r1.y >> r1.r;cin >> r2.x >> r2.y >> r2.r;double d = dis(r1, r2);if (d >= (r1.r + r2.r)){ // 相离cout << 0.0 << '\n';return;}if (d + min(r1.r, r2.r) <= max(r1.r, r2.r)){ // 包含cout << acos(-1) * p2(min(r1.r, r2.r)) << '\n';return;}double alpha1 = 2.0L * acos((p2(r1.r) + p2(d) - p2(r2.r)) / (2.0L * r1.r * d));double san1 = p2(r1.r) * sin(alpha1) / 2.0L;double shan1 = p2(r1.r) * alpha1 / 2.0L;double sub1 = shan1 - san1;double alpha2 = 2.0L * acos((p2(r2.r) + p2(d) - p2(r1.r)) / (2.0L * r2.r * d));double san2 = p2(r2.r) * sin(alpha2) / 2.0L;double shan2 = p2(r2.r) * alpha2 / 2.0L;double sub2 = shan2 - san2;cout << sub1 + sub2;
}
signed main()
{int qwq = 1;// qwq = re();for (int i = 1; i <= qwq; i++)_();return 0;
}

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

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

相关文章

redis-配置优化

redis-配置优化sentinel down-after-milliseconds 配置作用: 当主节点(或从节点、Sentinel)连续无法响应PING命令超过该阈值时,Sentinel将其标记为主观下线(S_DOWN)。主观下线是故障转移的第一步,后续需通过Se…

海上60公里,5G信号满格?这款神器让远航不再“失联”

就在同一片海域,同一艘船上,有人激情开黑,有人悠哉刷视频。别人已经 “First Blood”,只留下你原地目瞪口呆。别问,问就是他有“海上信号外挂”! 这个“外挂”,不是什么玄学,而是实打实的硬核装备——启明智显…

2025除尘设备/脉冲除尘器厂家推荐东莞市百谊环保科技,专业高效净化解决方案

2025除尘设备/脉冲除尘器厂家推荐:专业高效净化解决方案 在工业制造快速发展的今天,生产过程中产生的粉尘污染已成为制约企业可持续发展的关键因素。根据行业数据显示,近年来工业粉尘排放量呈上升趋势,部分重点行业…

2025发电机/发电机组/柴油发电机/甲醇发电机组租赁厂家推荐新疆泓浩机电,专业维修保养服务保障

2025发电机租赁市场新趋势:专业维修保养服务成核心竞争力 行业技术挑战与市场痛点 随着2025年的临近,发电机租赁行业面临着前所未有的技术挑战。在发电机组出租、柴油发电机出租、甲醇发电机组租赁等领域,设备老化、…

2025移动泵车/防汛泵车/水泵机组厂家推荐潍坊山藤动力,专业高效排水解决方案

2025移动泵车/防汛泵车/水泵机组厂家推荐:专业高效排水解决方案 在极端天气频发的当下,城市内涝、农田淹水、工程积水等问题日益突出。据统计,近年来我国年均因洪涝灾害造成的直接经济损失高达数千亿元,其中排水设…

Docker与Docker-compose安装

Docker安装 一、安装 Docker 1.依赖包安装 在安装 Docker 之前,先安装 yum-utils,这个工具可以帮助我们更好地管理软件包: sudo yum install -y yum-utils2.添加 Docker 仓库 接下来,我们需要添加 Docker 的官方仓…

leetcode_146 LRU缓存 - 详解

leetcode_146 LRU缓存 - 详解2025-10-23 17:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

杜邦线 2头的

杜邦线 2头的🔹 三、常见几种组合线型两端类型典型用途公-母 一端公,一端母 最常见,用于开发板 ↔ 传感器模块公-公 两端都是针头 面包板 ↔ 面包板,或跳线连接母-母 两端都是插孔 两个模块或引脚连接

第一!天翼云引领中国教育公有云市场

近日,国际数据公司IDC发布的《中国教育云市场份额,2024:政策技术双驱增长,需求分层与竞争格局成型》(Doc# CHC53785125,2025年10月)报告显示,中国电信天翼云以16.38%的市场份额位居中国教育公有云市场第一,凭…

阿里云加持,《泡姆泡姆》让全球玩家畅享零延迟冒险

为保障全球玩家始终获得稳定、低延迟、无中断的联机体验,《泡姆泡姆》构建了一套以云原生为核心、自动化为驱动、可观测为基础的技术架构体系,实现了从基础设施到应用层的全栈可控,支撑全球化部署与持续迭代运营。关…

(二)从分层架构到数据湖仓架构:数据仓库分层下的技术架构与举例

本文为系列文章第二篇,详细剖析了数据仓库分层下的技术架构,并附以以示例,希望能够为相关从业者提供数据湖仓设计与实践的系统指引。《新兴数据湖仓设计与实践手册从分层架构到数据湖仓架构设计(2025 年)》 系列文…

2025 年压滤机厂家最新推荐排行榜:隔膜 / 污泥 / 真空 / 板框 / 带式压滤机优质品牌权威指南

在环保政策收紧与工业智能化升级的双重驱动下,压滤机作为固液分离核心设备,已成为化工、矿山、环保等领域的刚需装备。但当前市场呈现 “两极分化” 态势:头部品牌技术壁垒高但选型复杂,中小品牌价格混乱且质量无保…

2025 年氮化硅陶瓷球生产厂家最新推荐榜:高精度高耐磨产品优选,国内优质企业全面剖析

在高端制造业持续升级的当下,氮化硅陶瓷球因高精度、高硬度、高耐磨等优势,成为新能源汽车、精密机床、风力发电等领域的关键零部件。然而,当前市场上生产厂家数量繁杂,部分企业存在技术落后、原材料劣质等问题,导…

第一次大作业心得

View Post第一次大作业心得102300213 陈宇我们组的项目是“旅行助手”:通过 AI 整合能力,让用户仅通过一次交互,即可获取 “天气 + 攻略 + 景点推荐” 的一站式旅行规划信息,降低旅行规划的时间成本与操作复杂度。…

VScodeC语言结构体成员提示不全

VScodeC语言结构体成员提示不全,把#include "main.h"移到最上边写STM32代码,以 test.c 和 test.h 举例 test.c中test.c #include "main.h" // <----这个移到最上边就好了 #include "tes…

2025滑石粉厂家推荐辽宁精华新材料,纳米级/工业级/化妆品级多品类覆盖

2025滑石粉厂家推荐辽宁精华新材料,纳米级/工业级/化妆品级多品类覆盖 技术挑战与行业痛点 滑石粉作为一种重要的工业原料,在塑料、涂料、化妆品、食品等多个领域发挥着关键作用。然而,随着应用领域的不断扩展和要求…

2025真空烧结炉厂家推荐沈阳恒进,专业品质与高效服务双重保障

2025真空烧结炉厂家推荐沈阳恒进,专业品质与高效服务双重保障 在高端制造业快速发展的今天,真空烧结炉作为新材料研发和精密制造的关键设备,其技术水平和性能指标直接影响着产品质量和生产效率。随着2025年的临近,…

基于粒子群优化(PSO)算法的PID控制器参数整定

一、PSO-PID整定原理框架 graph TD A[初始化粒子群] --> B[计算适应度] B --> C{更新个体/全局最优} C -->|是| D[更新速度与位置] C -->|否| E[判断终止条件] D --> B E -->|满足条件| F[输出最优参…

详细介绍:python(73) 引用.dll文件并调用函数

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

承插焊异径三通源头厂家推荐上海结申,专业制造高压承插管件

在工业管道系统领域,承插焊异径三通作为关键连接部件,其质量直接关系到整个管道系统的安全性与效率。为提供客观的行业参考,本报告通过对业内主要生产企业的产能规模、技术研发实力、产品质量管控及市场应用数据等多…