传统题 1000ms 256MiB

体素化心

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

@hprogq\texttt{@hprogq} 最近刷抖音时,总是刷到用 “爱心效果” 代码表白的高赞视频。

视频里斑斓的特效汇聚成一颗跳动的心脏,配文:“代码只有几十行,对你的思念却不止于此。”

作为一名严谨的理工科学生,@hprogq\texttt{@hprogq} 被深深触动了。但他关注的点不太一样。他想:“如果我们要量化这份‘思念’的体积,能不能通过体素化(Voxelization)扫描来精确计算呢?”

于是,他将爱心放入了一个离散的三维网格中。

题目描述

我们定义一个三维心形隐式曲面,其内部区域由以下不等式确定(由 Nordstrand 和 Kuska 于 2004 年提出):

$$(2x^2 + 2y^2 + z^2 - 1)^3 - \frac{1}{10}x^2z^3 - y^2z^3 < 0$$

我们关注的扫描区域是一个边长为 33 的立方体空间,坐标范围为 −1.5≤x,y,z≤1.5-1.5 \le x, y, z \le 1.5。

隐式曲面在该空间内的示意图

现将该立方体在 x,y,zx, y, z 三个轴向上分别均匀划分为 NN 份,从而形成 N×N×NN \times N \times N 个微小的立方体单元(称为体素)。当且仅当某体素的几何中心点坐标满足上述心形不等式时,我们认为该体素被心形“占据”。

N=60N = 60 时空间内被占据体素示意图

现在,给定划分粒度 NN,请你计算并输出被心形占据的体素总数量。


输入格式

输入包含一个正整数 NN,表示空间的划分粒度。

输出格式

输出一个整数,表示在划分粒度 NN 下被心形占据的体素总数量。

数据范围

对于 100%100\% 的数据,满足 10≤N≤30010 \le N \le 300。

在比赛环境中,你可以使用 __int128_t 定义一个 128128 位整数,它最多可以容纳一个 3737 位十进制整数。

__int128_t 类型的变量不能进行读入和输出(也就是说,你无法使用 cin 和 cout 来直接读入或输出一个 __int128_t 整数)。不过它可以作为一个中间量进行各种加减乘除运算。


输入输出样例

10
88
133
204951

软件学院 2025 级编程竞赛实验班结业选拔考试

未参加
状态
已完成
规则
XCPC
题目
13
开始于
2025-12-28 18:00
结束时间
2025-12-28 20:00
持续时间
2 小时
主持人
参赛人数
69