ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

THUWC前集训9

2020-12-28 22:02:33  阅读:245  来源: 互联网

标签:THUWC 边权 复杂度 mathcal y1 alpha 矩形 集训


THUWC前集训9

T1

毒瘤题,不管它。

T2

分两种情况,即不使用优惠和支付最贵的\(k\)条边。

第一种情况的最优方案不优于最短路。

考虑第二种情况,我们枚举第\(k\)条边的边权\(w\),将不足\(w\)的边边权设为0,其余边权减去\(w\),用求出的最短路+\(kw\)更新答案。

简单证一下正确性:首先一条路径显然当其第\(k\)大是我们枚举的权值时取得最小值。然后对于最优的路径\(P\),其一定会贡献\(len(P)\).

T3

从NOI网格那题魔改过来的。

首先点权可以放到边权上。

考虑将整个矩形作为一个元素放进优先队列。每次取出一个矩形,那么就相当于将矩形中还没有确定最短距离的点都确定最短距离(注意,由于现在没有点权所以是对的),然后将这些点可达的矩形放进队列。

这样还是很暴力,拉一个kdt/树套树上去显然过不了\(10^6\)。考虑一维怎么做,要求尽量接近线性。

这东西是可以套路并查集的。将所有连着的已经被确定掉的点和右边第一个还没被确定的点构成并查集上一个连通块并钦定最右边那个是根。然后就不断往右跳顺带合并即可。复杂度\(\mathcal O(n\alpha(n))\) (然后那个\(\alpha\)其实可以干掉,懂的都懂)

变成二维就外面套个线段树即可。如果要处理\((x1,y1,x2,y2)\)这个矩形:若当前线段树节点的并查集上\((y1,y2+1)\)已经在同一集合就结束,否则跳过去合并掉并且递归下去。

显然只能合并\(O(nm)\)次。总复杂度\(\mathcal O(nm\log n\cdot \alpha(m))\).有点卡常(但hehezhou就说了这一个做法啊。。)

My code

标签:THUWC,边权,复杂度,mathcal,y1,alpha,矩形,集训
来源: https://www.cnblogs.com/oierwanhong/p/14203872.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有