卜笑 发表于 2025-8-12 15:50:10

2025杭电多校第七场 矩形框选、伤害冷却比 个人题解

伤害冷却比

数学

题目


思路

令\(a=\frac{K}{N}\),则有\(f(x)=x\left( \left\lfloor\frac{a}{x}\right\rfloor +1\right)\)
大致画出图像,可得下图
https://img2024.cnblogs.com/blog/3677788/202508/3677788-20250812113825569-1955866334.png
若要求区间\(\)上的最大值,则需要求出\(f(R)\)与红线蓝线交点值之间的最大值
为了求出交点,联立两个方程:

\[\begin{align}x+a&=x\left( \left\lfloor\frac{a}{x}\right\rfloor +1 \right)\\ \\x+a&=x\left\lfloor\frac{a}{x}\right\rfloor +x\\ \\\frac{a}{x}&=\left\lfloor\frac{a}{x}\right\rfloor \\ \\\exists \ n\in& Z\ , \frac{a}{x}=n\\ \\\therefore x=\frac{a}{n}&,n=1,2,3,\dots\end{align}\]
因此可以找到距离\(R\)最近的\(x_{0}=\frac{a}{n}\),其中\(n=\left\lceil\frac{a}{R}\right\rceil\)
再将此\(x_{0}\)带入\(y=x+a\)中,即可得到区间\(\)上交点的最大值啦
随后将\(R\)带入\(f(x)\)中,比较二者大小约分输出即可
代码实现

#include#include#include#include#include#include#include#include#includeusing namespace std;using ll = long long;#define rep(i, a, b) for(ll i = (a); i = (b); i --)#define see(stl) for(auto&ele:stl)coutN>>A>>B>>C>>D;    int n=ceil(1.0*(K*D)/(N*C));    double x=1.0*K/(N*n);    double ans1=x+(1.0*K/N);    double L=1.0*A/B;    if(L>x)ans1=-1;    double ans2=1.0*C/D*(K*D/(N*C)+1);    if(ans1>=ans2){      int g=gcd(K*(1+n),N*n);      cout

东郭欣然 发表于 2025-11-19 01:58:16

这个好,看起来很实用

处匈跑 发表于 2025-11-21 15:32:30

热心回复!

宿遘稠 发表于 2025-12-3 11:28:03

过来提前占个楼

晌集涟 发表于 2025-12-13 01:18:46

懂技术并乐意极积无私分享的人越来越少。珍惜

狙兕 发表于 2025-12-20 12:37:17

懂技术并乐意极积无私分享的人越来越少。珍惜

粒浊 发表于 2026-1-1 18:09:10

感谢,下载保存了

忿惺噱 发表于 2026-1-16 18:02:35

新版吗?好像是停更了吧。

章海 发表于 2026-1-17 20:07:17

过来提前占个楼

澹台吉星 发表于 2026-1-21 12:24:33

感谢,下载保存了

站竣凰 发表于 2026-1-21 17:51:04

分享、互助 让互联网精神温暖你我

诀锺 发表于 2026-1-22 00:37:32

分享、互助 让互联网精神温暖你我

盗衍 发表于 2026-1-22 01:26:31

鼓励转贴优秀软件安全工具和文档!

靳夏萱 发表于 2026-1-25 08:52:03

感谢,下载保存了

寥唏 发表于 2026-1-30 02:40:12

这个好,看起来很实用

丁若云 发表于 2026-2-3 09:50:56

过来提前占个楼

庾签 发表于 2026-2-5 11:03:08

收藏一下   不知道什么时候能用到

诘琅 发表于 2026-2-6 10:37:26

很好很强大我过来先占个楼 待编辑

坪钗 发表于 2026-2-8 10:34:21

感谢发布原创作品,程序园因你更精彩

梁丘眉 发表于 2026-2-8 23:35:16

这个好,看起来很实用
页: [1] 2
查看完整版本: 2025杭电多校第七场 矩形框选、伤害冷却比 个人题解