BZOJ 1035: [ZJOI2008]Risk 题解

这题做的神尴尬?

 开始的时候很无脑的就用简单的卷包裹瞎搞,想到找当前联通块的某一个边就好了,然后各种bug搞法果断WA。

突然发现有坑,样例二没好好看。。。MDZZ又调了半天,突然发现不止一个坑。。。哭晕。。。

于是前前后后花了一天时间调一个错误的算法。MDZZMDZZMDZZ

(下次一定要想清楚了再敲)

但仔细想想,MD这不是计算几何的码农题么?那本超厚的计算几何黄书上不给出了找坑的方法么?不就是扫描线瞎搞么?

(害怕写代码的蒟蒻开始不自觉的自发颤抖了(´・_・`))

但是还有更快捷一点的搞法。参考了一篇参考了Claris的题解的题解,嗯,只要添加几条线段手动填坑就可以了。

(可惜蒟蒻不会写扫描线只好 \( O(m^2) \) 暴力了( ̄▽ ̄))

前后花了一天半的时间(算上第二天早上去看《侏罗纪世界2》的时间和第三天早上睡懒觉到十点的话)对着数据用几何画板调在学校OJ上提交十次终于AC了好激动好激动^o^

而且理论 \( O(m^2) \) 的复杂度实际上跑得很快(404ms)

实际上复杂度应该是 \( O(m\ \times 环的个数 + m\ n) \),而环的话看数据中给的甚至不会到 \( O(log\ m) \)。

大体思路是先dfs每个边联通块,找到最左边的点 \( t \),然后作一条向左的射线,找到最近的相交线段 \( s \),连接 \( t \) 和 \( s \) 的任意一个端点,这样就填上坑了。

坑填好后对每个点用一样的方法找到水平距离最近的线段(左右都可以),然后就可以随便卷包裹了(因为没有坑,所以毫无顾虑放心跑)。

不过我好像哪里写挂了,像这样:

假如 \( A \) 是一个最左侧的点,然后要连接 \( A - BC \),会跨过其它的线段,看起来不像是理想中的面剖分。

我的程序跑出来是 \( 0\ 0 \)。我果然是个大蒟蒻啊!

目测是因为我没有用扫描线的原因,如果用扫描线的话。。。

等等,突然发现原话是“向交点连边”。恍然大悟。。。

要把原来的边拆成两条新的线段啊。怎么没想到呢。话说题目数据好水啊^_^

不过这样又有新麻烦了。如果连的边经过某个队伍怎么办?既然连的边只经过一个联通块,而且就是那支队伍所在的联通块,目测瞎搞是可以的( ̄▽ ̄)

不过又有麻烦了。如果两条边共线怎么办?必须要拆。但是我实在是懒得改了。

可能还有我没想到的细节。如果用扫描线的话,感觉方便多了。。。

必须要学扫描线了(T ^ T)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值