1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

题解思路

1. 对称化 + 角度参数化

圆心在 (12,12)(\tfrac12,\tfrac12)(21​,21​),半径 r=12r=\tfrac12r=21​。最优网格一定关于水平 [0,r]×[0,r][0,r]\times[0,r][0,r]×[0,r] 里描述边界,再用对称扩展到整圆。

设我们在第一象限里取若干条水平线 y=rsin⁡θy=r\sin\thetay=rsinθ 与竖直线 x=rcos⁡θx=r\cos\thetax=rcosθ(θ∈(0,π4)\theta\in(0,\tfrac\pi4)θ∈(0,4π​))。给定一组严格递增的角度

P4442.第3题-须从规矩出方圆

    1000ms Tried: 153 Accepted: 18 Difficulty: 9 所属公司 : 华为
    算法与标签>数学

题目内容

钟师傅对像素画(PixelPixelPixel ArtArtArt)有独特的品味理解,他最近沉迷于用胶带拼图形贴画面海报,但是竟然后发现,像素画,每个 pixelpixelpixel 的长宽都是固定的。

一种像素圆的画法是,将每个像素块看成一个独立正方形,如果正方形和圆的交集面积大于 10−1010^{-10}10−10,则涂黑像素块。例如左图就是一个典型 25×2525\times2525×25 像素圆。可以看到每个像素的行宽和列宽是相同的,它占用原图的 533/(25∗25)=0.8528=85.28%533/(25*25)=0.8528=85.28\%533/(25∗25)=0.8528=85.28% 范围。而 π/4≈78.5398%\pi/4\approx78.5398\%π/4≈78.5398% 。

钟师傅喜欢精确的圆,因此他决定设计一种新的像素屏,专门为画圆而生,每行的间距和列间距不需要一样,为此它可以画出更精确的圆。

具体来说,如果给定像素是M×MM\times MM×M,那么钟师傅需要给出M−1M-1M−1个行宽变量和M−1M-1M−1个列高变量, 记出{xi},{yi}\{x_i\},\{y_i\}{xi​},{yi​}

固定 x0=y0=0,xM−1=yM−1=1x_0=y_0=0,x_{M-1}=y_{M-1}=1x0​=y0​=0,xM−1​=yM−1​=1,然后以 x=xi,y=yix=x_i,y=y_ix=xi​,y=yi​ 作 2M−22M-22M−2条直线,将(0,0)−(1,1)(0,0)-(1,1)(0,0)−(1,1)这个正方形划分成M×MM\times MM×M个小矩形。每个矩形被涂色当且仅当这个矩形和以 (0.5,0.5)(0.5,0.5)(0.5,0.5) 为圆心,半径为 0.50.50.5 的单位圆交集面积 >10−10>10^{-10}>10−10 。

例如 M=25,xi=yi=i25M=25,x_i=y_i=\frac{i}{25}M=25,xi​=yi​=25i​ ,对应的像素逼近圆就是左图。

如果更精细地设置 xxx 和 yyy 的间距,就能得到更好的逼近,目标是在 MMM 固定的前提下,把染色块的面积量最小化。右图是一种更优的设定方案,具体数值参考样例。

钟师傅为了找到 M=25M=25M=25 的划分已经耗尽了全部心力,他希望你帮忙找到其他 MMM 的最优划分方案,特别的,为了方便计算,本题的 MMM 都是奇数。

输入描述

一行一个整数,MMM,输入保证 5≤M≤2005 \le M \le 2005≤M≤200,并且 MMM 是奇数。

输出描述

输出最优染色面积,精确到小数点后 444 位。

例如 M=25M=25M=25 的最优答案约为 0.8107678480.8107678480.810767848 ,那么四舍五入后,你应该输出 0.81080.81080.8108

样例1

输入

5

输出

0.8784

说明

M=5M=5M=5 的最优划分见下图:

面积约为 0.87841489310.87841489310.8784148931

划分方案:

x1=y1=0.08824681693923937x_1 = y_1 = 0.08824681693923937x1​=y1​=0.08824681693923937

x2=y2=0.2163464855861515x_2 = y_2 = 0.2163464855861515x2​=y2​=0.2163464855861515

x3=y3=0.7836535144138486x_3 = y_3 = 0.7836535144138486x3​=y3​=0.7836535144138486

x4=y4=0.911753183060766x_4 = y_4 = 0.911753183060766x4​=y4​=0.911753183060766

样例2

输入

25

输出

0.8108

说明

最优分布:

x1=y1=0.014219468994025153x_1 = y_1 = 0.014219468994025153x1​=y1​=0.014219468994025153

x2=y2=0.032278207527408176x_2 = y_2 = 0.032278207527408176x2​=y2​=0.032278207527408176

x3=y3=0.053248663959798335x_3 = y_3 = 0.053248663959798335x3​=y3​=0.053248663959798335

x4=y4=0.07678775198872612x_4 = y_4 = 0.07678775198872612x4​=y4​=0.07678775198872612

x5=y5=0.10277889747804814x_5 = y_5 = 0.10277889747804814x5​=y5​=0.10277889747804814

x6=y6=0.1312450507717095x_6 = y_6 = 0.1312450507717095x6​=y6​=0.1312450507717095

x7=y7=0.1623318383092049x_7 = y_7 = 0.1623318383092049x7​=y7​=0.1623318383092049

x8=y8=0.1963301205070792x_8 = y_8 = 0.1963301205070792x8​=y8​=0.1963301205070792

x9=y9=0.23374562325992837x_9 = y_9 = 0.23374562325992837x9​=y9​=0.23374562325992837

x10=y10=0.27547112225909104x_{10} = y_{10} = 0.27547112225909104x10​=y10​=0.27547112225909104

x11=y11=0.3232619881117089x_{11} = y_{11} = 0.3232619881117089x11​=y11​=0.3232619881117089

x12=y12=0.381605423707194x_{12} = y_{12} = 0.381605423707194x12​=y12​=0.381605423707194

x13=y13=0.618394576292806x_{13} = y_{13} = 0.618394576292806x13​=y13​=0.618394576292806

x14=y14=0.6767380118882911x_{14} = y_{14} = 0.6767380118882911x14​=y14​=0.6767380118882911

x15=y15=0.7245288777409089x_{15} = y_{15} = 0.7245288777409089x15​=y15​=0.7245288777409089

x16=y16=0.7662543767400716x_{16} = y_{16} = 0.7662543767400716x16​=y16​=0.7662543767400716

x17=y17=0.8036698794929208x_{17} = y_{17} = 0.8036698794929208x17​=y17​=0.8036698794929208

x18=y18=0.8376681616690795x_{18} = y_{18} = 0.8376681616690795x18​=y18​=0.8376681616690795

x19=y19=0.8687549492282904x_{19} = y_{19} = 0.8687549492282904x19​=y19​=0.8687549492282904

x20=y20=0.897221105219519x_{20} = y_{20} = 0.897221105219519x20​=y20​=0.897221105219519

x21=y21=0.9232122480112739x_{21} = y_{21} = 0.9232122480112739x21​=y21​=0.9232122480112739

x22=y22=0.94675136660420166x_{22} = y_{22} = 0.94675136660420166x22​=y22​=0.94675136660420166

x23=y23=0.9677217924725918x_{23} = y_{23} = 0.9677217924725918x23​=y23​=0.9677217924725918

x24=y24=0.9857805310059748x_{24} = y_{24} = 0.9857805310059748x24​=y24​=0.9857805310059748

提示

  1. 如果确定了所有 yiy_iyi​ 的值,那么 xix_ixi​ 的值也可以确定。考虑我们已经确定最优解需要用到轴线 y=ay=ay=a ,只要 aaa 不等于 0.50.50.5 ,那么 y=ay=ay=a 与圆会有两个交点 (b,a)(b,a)(b,a) 和 (c,a)(c,a)(c,a) ,那么最优解一定有轴线 x=bx=bx=b 和 x=cx=cx=c ,否则我们可以通过调整,得到面积更小的染色方案。即,可以通过 {yi}\{y_i\}{yi​} 确定潜在的 {xi}\{x_i\}{xi​} 。

  2. 这样我们可以列出式子,把最小化 lossXY({xi},{yi})lossXY(\{x_i\},\{y_i\})lossXY({xi​},{yi​}) 变成 lossY({yi})lossY(\{y_i\})lossY({yi​}) 的问题。而且 lossYlossYlossY 会有比较容易求导。

  3. 可以考虑用某些编程语言自带的优化求解器(例如 numpynumpynumpy),或者自己实现梯度下降等优化方式,完成最优解求解。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 78ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?