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\),我们找到左边第一个比他大的 ...
随机推荐
- centos停服,迁移centos7.3系统到新搭建的openEuler
背景 最近在做的事,简单来讲,就是一套系统差不多有10多台虚拟机,都是centos系统,版本主要是7.3.7.6.7.9,现在centos停止维护了,转为了centos stream,而centos ...
- 经典常用SQL查询语句和常见问题
一.基础 1.常用sql: ------------------------ // mysql改root密码 mysqladmin -u用户名 -p旧密码 password 新密码 # ---more ...
- 题解:AT_abc369_d [ABC369D] Bonus EXP
题目大意: 有 nnn 个怪物,每个怪物有一个战力值 aia_iai ,你可以选择击败他或放走他,放走他没有经验值,击败他可以获得 aia_iai 的经验值,如果击败的数量是偶数,则还可以获得 a ...
- Java应用出现 Public Key Retrieval is not allowed 报错的常见原因和解决方法
问题现象 Java 应用在运行过程中突然报java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe ...
- 编译原理:python编译器--从AST到字节码
首先了解下从AST到生成字节码的整个过程: 编译过程 Python编译器把词法分析和语法分析叫做 "解析(Parse)", 并且放在Parser目录下. 从AST到生成 字节码的过 ...
- C#之使用任务并行库
.NET Framework4.0引入了一个新的关于异步操作的API,它叫做任务并行库(Task Parallel Library,简称TPL).TPL的核心是任务,一个任务代表一个异步操作,该操作可 ...
- C#之结构
结构是用户定义的数据类型,与类非常相似,它们有数据成员和函数成员,但与类最重要的区别是:类是引用类型,而结构是值类似,结构是隐式密封的,这意味这它们不能被派生,所以结构类型不能为null,两个结构变量 ...
- 快速修改kafka的broker配置或topic配置
下载开源的kafka界面客户端KafkaKing:https://github.com/Bronya0/Kafka-King 连接后,双击broker配置,或者双击topic配置: 修改好后回车保存就 ...
- React Native开发鸿蒙Next---灰度模式
React Native开发鸿蒙Next---灰度模式 政企相关的App在开发过程中,往往需要制作一个灰度模式,用于应对注入国家公祭日等特殊日期情况.Harmony开发中,由于基于ArkTs,处理相对 ...
- 阅读类元服务开发笔记---week1
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...