首页 > 其他分享 >SS241112A. 定向越野(walk)

SS241112A. 定向越野(walk)

时间:2024-11-12 20:29:47浏览次数:1  
标签:cos 越野 len walk beta alpha tan sin SS241112A

SS241112A. 定向越野(walk)

题意

给你 \(n\) 个点,\(n \le 12\),你可以从任意一个点出发以任意顺序依次遍历所有点燃火回到起点,你只能拐直角走,问最小路程。答案输出最小路程的平方,输出分数形式。可以证明最小路程的平方一定是有理数。

思路

显然枚举遍历顺序。

首先需要明白为什么答案一定是有理数。

感觉我们的初始方向必须是某一个向量的方向,假设这个是正确的。

考虑起点初始方向是 \(\alpha\),我们可以把整个图旋转 \(\alpha\),这样相当于我们只能往坐标轴方向走。

考虑旋转后每个点的坐标,起点是 \((0,0)\),第一个经过的点是 \((len_{0,1},0)\)(其中 \(len_{u,v}\) 表示点 \(u\) 和点 \(v\) 的直线距离)。每个点与原点连线,相当于这条线的角度减去 \(\alpha\)。设这条线的角度是 \(\beta\),\(\alpha\) 和 \(\beta\) 的 \(\tan\) 都是有理数,已知。那么就可以求出 \(\beta-\alpha\) 的 \(\tan\) 了,也是有理数。

不记得三角函数公式……

\[\sin (\beta-\alpha)=\sin \beta \cos \alpha - \cos \beta \sin \alpha\\ \cos (\beta-\alpha)=\sin \beta \cos \alpha + \cos \beta \sin \alpha\\ \tan (\beta-\alpha)=\frac{\tan \beta - \tan \alpha}{1- \tan \beta \tan \alpha} \]

我们要证明答案只含一种无理数,否则如果是多个无理数相加,平方后仍然是无理数。

也就是证明答案仅含有 \(len(1,2)\) 一种或零种无理数。

点 \(u\) 的坐标 \(x_u=\cos x \cdot len_{1,u},y_u=\sin x \cdot len(1,u)\),展开后因为 \(\sin x,\cos x\) 分母里本身有一个 \(len_{1,u}\),因此就消掉了 \(len_{1,u}\),只剩下一个有理数乘(其实是除啦) \(len(1,2)\) 了。

证毕。

回到最初的假设,事实上这个结论是正确的。我不会证明。想象一个等腰直角三角形,最优的路径是以底边为初始方向,你发现虽然你微调初始方向后上边底边的路变长,上面的路变短,但是这是不优的。因此大胆猜测结论正确?

关键是如果没有这个结论,你没法做啊。所以结论是对的。。。

题解写得挺好。

在计算器上画出 \(y=\sin x + \cos x\) 函数图像。

长这样。其实应该是 \(y=\sin x + \cos x\):

这是个分段的凸函数,当 \(x=0\) 的时候取得最小值。所以它们加起来的最小值一定是在某个 \(x=0\) 的位置取到,因为如果你取其他位置,一定可以选择旁边的位置使答案更小。

我觉得很难理解。容易想错。只是给出结论再去证明是相对好感性理解的。

嗯没了。

直接枚举遍历顺序是阶乘的,可以状压 DP,状态是初始方向,哪些点已经经过,最后一个点是什么,其中初始方向可以循环数组,时间 \(O(n^3 2^n)\),空间 \(O(n 2^n)\),转移枚举下一个点,总时间是 \(O(n^4 2^n)\)。

标签:cos,越野,len,walk,beta,alpha,tan,sin,SS241112A
From: https://www.cnblogs.com/liyixin0514/p/18542596

相关文章

  • Shiftdel walkthrough Intermediate
    点击查看代码nmap-p--A192.168.167.174StartingNmap7.94SVN(https://nmap.org)at2024-11-1200:09UTCNmapscanreportfor192.168.167.174Hostisup(0.071slatency).Notshown:65532closedtcpports(reset)PORTSTATESERVICEVERSION22/tcpop......
  • Cockpit pg walkthrough Intermediate
    nmap发现两个web站80和9090还有22端口dirsearch发现80端口有login.php登录界面发现没有弱口令测试sql注入测试了一会发现密码password='#就绕过了不过我没搞懂为啥就绕过了要后面拿了root权限才知道登录之后发现密码james Y2FudHRvdWNoaGh0aGlzc0A0NTUxNTI=......
  • Educated PG walkthrough Intermediate
    nmap扫到8022dirsearch扫描发现┌──(root㉿kali)-[~]└─#dirsearch-uhttp://192.168.167.13//usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23:DeprecationWarning:pkg_resourcesisdeprecatedasanAPI.Seehttps://setuptools.pypa.io/en/latest......
  • law Intermediate walkthrough pg
    靶场很简单分数只有10分跟平常做的20分的中级靶场比确实简单我拿来放松的算下来30分钟解决战斗nmap扫到80端口web界面是个框架搜exphttps://www.exploit-db.com/exploits/52023他的脚本可能有点问题看不到回显我们审脚本直接看到漏洞点所在命令执行curl-s-d"sid=foo......
  • Groove Intermediate pg walkthrough
    80端口web站点dirsearch没发现啥有用信息感觉就是让我们突破登录框进后台的https://github.com/ChurchCRM/CRM/issues/137上网查到默认密码登录后台跟具cms查exp发现有个SQL注入payload找半天找到一个可以直接sql注入http://192.168.167.44/EventAttendance.php?Actio......
  • Python(os.walk())
    目录1.函数定义2.示例代码3.使用场景4.注意事项5.总结os.walk()是Python中os模块提供的一个用于递归遍历目录树的函数。它生成一个三元组(dirpath,dirnames,filenames),分别包含当前目录路径、子目录列表和文件列表。os.walk()非常适合用于文件系统操作,比如查找特定......
  • 4、.Net 快速开发框架:WalkingTec.Mvvm - 开源项目研究文章
    WalkingTec.Mvvm框架(简称WTM)是一个基于.NETCore的快速开发框架,它支持Layui(前后端不分离)、React(前后端分离)、Vue(前后端分离)等多种前端UI框架,并内置了代码生成器以提高开发效率。WTM的核心特点包括:多前端UI支持:支持Layui、React、Vue等前端UI框架,满足不同开发需求......
  • [ARC185D] Random Walk on Tree 题解
    一个很套路的做法。思路题目要求走完整个树的时间,这并不好算,容易想到min-max容斥。依据min-max容斥,我们可以轻松把它转化成第一次走到所有子集的时间。考虑在这道题中,有什么特殊的。第一,任何包含根节点的子集答案都是零。第二,由于我们只关心第一次走到的点的时间,因此假......
  • 一文弄懂 Python os.walk(),文件处理和目录遍历
    ......
  • SkyWalking应用部署案例
       SkyWalking是一个开源的可观测性平台,特别针对云原生和容器化分布式系统设计。它的目标是帮助用户收集、分析并可视化来自多语言服务(如Java、C#、Node.js等)和云基础设施的数据,实现跨云的系统监控。它提供了一个全面的解决方案,适用于现代APM的需求,包括自动仪器代理和对......