P9713 「QFOI R1」抱抱 题解
P9713 「QFOI R1」抱抱 题解
Sol
前置知识:长方体体积公式:\(V = abh\)。
我们知道,切割掉 \(x \le k\) 的部分就是把 \(a\) 减去 \(k\),切割掉 \(y \le k\) 的部分就是把 \(b\) 减去 \(k\),切割掉 \(z \le k\) 的部分就是把 \(c\) 减去 \(k\)。但是这里要考虑重合的部分,比如切掉 \(x \le 3\) 的部分再切掉 \(x \le 5\) 的部分,那么第二次 \(a\) 只能减去 \(5 - 3 = 2\)。我们可以定义一个存 \(k\) 最大值的变量 \(maxa\),如果 \(maxa < k\),那么就减去 \(max(c - (k - maxa),\ 0)\),并把 \(maxa = k\)。每一次切割完后输出新的 \(a\),\(b\),\(c\) 相乘的结果即可。还有,一定要开 long long!
code
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
using ll = long long;
const int kMaxN = -1, kInf = (((1 << 30) - 1) << 1) + 1;
ll a, b, c, m, op, k, maxa1, maxa2, maxa3;
// maxa1 存切割 a 时的 k,maxa2 存切割 b 时的 k,maxa3 存切割 c 时的 k
int main() {
cin >> a >> b >> c >> m; // 输入 a, b, c, m
for (; m; -- m) { // 循环,等于 while (m --)
cin >> op >> k; // 输入 op, k
if (op == 1) { // 如果切割 a
(maxa1 < k) && (a = max(a - (k - maxa1), 0ll)) && (maxa1 = k);
// 如果没有重合的部分 > 0(k - maxa1),那么把 a 减去重合的部分(这里取 max 是因为不放心)并更新 maxa1
} else if (op == 2) {
(maxa2 < k) && (b = max(b - (k - maxa2), 0ll)) && (maxa2 = k);
// 如果没有重合的部分 > 0(k - maxa2),那么把 b 减去重合的部分(这里取 max 是因为不放心)并更新 maxa2
} else {
(maxa3 < k) && (c = max(c - (k - maxa3), 0ll)) && (maxa3 = k);
// 如果没有重合的部分 > 0(k - maxa3),那么把 c 减去重合的部分(这里取 max 是因为不放心)并更新 maxa3
}
cout << a * b * c << '\n'; // 输出 a * b * c(体积公式)
}
return 0;
}
P9713 「QFOI R1」抱抱 题解的更多相关文章
- 「POI2011 R1」Conspiracy
「POI2011 R1」Conspiracy 解题思路 : 问题转化为,将点集分成两部分,其中一部分恰好组成一个团,其中另一部分恰好组成一个独立集. 观察发现,如果求出了一个解,那么答案最多可以在这个 ...
- 「GXOI / GZOI2019」简要题解
「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...
- LuoguP7127 「RdOI R1」一次函数(function) 题解
Content 设 \(S_k\) 为直线 \(f(x)=kx+k-1\),直线 \(f(x)=(k+1)x+k\) 与 \(x\) 轴围成的三角形的面积.现在给出 \(t\) 组询问,每组询问给定一 ...
- loj#2054. 「TJOI / HEOI2016」树
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...
- 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...
- 「POJ 3666」Making the Grade 题解(两种做法)
0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...
- [LOJ 2022]「AHOI / HNOI2017」队长快跑
[LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...
- Note -「动态 DP」学习笔记
目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...
- LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...
- 「AHOI / HNOI2017」影魔
「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...
随机推荐
- Laravel配置Route调用artisan
//web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...
- PHP实现文件上传下载实例详细讲解
一.上传原理与配置 1.1 原理 将客户端文件上传到服务器端,再将服务器端的文件(临时文件)移动到指定目录即可. 1.2 客户端配置 所需:表单页面(选择上传文件): 具体而言:发送方式为POST,添 ...
- 关于.net 和 JAVA 在内存处理(GC)设计上的差距(ChatGPT水文)
我听说,java 在内存方面,有线程专用的堆空间,从而加快内存分配和回收的速度(因为没有并发的考虑?),是这样的吗? .net 有类似的技术吗? 是的,Java确实有线程专用的堆空间,即Thread ...
- 毒瘤idea合集
给定 \(n,m\) ,求: \[\sum_{i=1}^{n}\sum_{i=1}^{m}max\big(gcd(i,j)^i,lcm(i,j)^j\big) \]
- 消息验证码(MAC)的介绍
目录 认证流程 MAC 的分类 认证加密 MAC的攻击手段 重发攻击 密钥推测攻击 消息认证码无法解决的问题 Reference 消息验证码(MAC)也可以称为消息认证码. 定义: 消息验证码(Mes ...
- springAI实现一个MCP-Server
mcp Model Context Protocol(MCP)模型上下文协议(如下图所示)是 Anthropic 发布的一种标准化协议,使得 Agent 智能体应用可以更快捷地与下游异构的数据或者工具 ...
- MACD、RSI、Boll以及分型指标的实现与回测
对指标的实现 分为两部分: 信号的计算 实现信号算法 检测历史信号 保存到数据库 信号使用 提供查询接口 我们将信号的计算与回测分离开,将计算后的信号结果保存到数据库中,供回测时调用,模式图如下: 指 ...
- X86C++反汇编01.IDA和提取签名
https://bpsend.net/thread-415-1-1.html 用VC6.0新建一个控制台工程 编译成 debug 和 Release 2个版本 应ida分别查看2种版本的程序 高版本i ...
- 2025H&NCTF-Misc&取证&OSINT全解
2025H&NCTF-Misc&取证&OSINT全解 Misc 签到&签退 公众号发送信息获取flag 问卷 回答问卷得flag 芙宁娜的图片 随波逐流扫一下图片,在R ...
- F-47(copy 邓大顾)
*&---------------------------------------------------------------------* *& F-47过账 *&--- ...