poi2011 切题记

博客内容涉及18th Polish Olympiad in Informatics的多个任务解析,包括Conspiracy 2-Set、Lollipop、Lightning Conductor等题目。通过算法和策略分析,如分治、图论、构造、网络流和二分法来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

18th Polish Olympiad in Informatics

Tasks

Conspiracy(Stage I)(100/100)
Lollipop(Stage I)(100/100)
Lightning Conductor(Stage I)(100/100)
Shift(Stage I)(100/100)
Plot(Stage I)(100/100)
Strongbox(Stage II - day 0)(100/100)
Difference(Stage II - day 1)(100/100)
Garbage(Stage II - day 1)(100/100)
Tree Rotations 2(Stage II - day 2)(100/100)
Tree Rotations(Stage II - day 2)(100/100)
Temperature(Stage II - day 2)(100/100)
Dynamite(Stage III - day 0)(100/100)
Party(Stage III - day 1)(100/100)
Inspection(Stage III - day 1)(100/100)
Periodicity(Stage III - day 1)(100/100)
Meteors(Stage III - day 2)(100/100)
Sticks(Stage III - day 2)(100/100)
Programming Contest(Stage III - day 2)(100/100)

         终于切完啦~~~

Conspiracy 2-Set问题。把一个人拆成x0和x1,x0表示support team。x0和x1连边。然后如果x和y认识将x1和y0连边;否则把x0和y1连边。然后跑出一组合法解后看能不能调整,显然只能调整1个人,枚举一下即可。

Lollipop 首先找到1-x使得它们中所有数的和>要求的那个数,然后找到1后面第一个W和x后面第一个W,移过去即可或者无解。

Lightning Conductor 首先令j<i;然后再反过来做一遍。显然满足决策单调性,先找出中点的决策点然后分治解决即可。

Shift 首先固定1的位置;考虑现在把i放到它应该在的位置上,可以用a先把它搞到最上面,然后往上跳两步;重复若干次就可以放好了。最后两个数可能会出现无解的情况。

Plot 二分答案,然后贪心地找。具体可以用倍增,然后求一个类似于最小圆覆盖的随机增量法。但是直接用最小圆覆盖会被卡常数,要用二分出的那个半径去尝试覆盖所有点。

Strongbox 数论题。如果x是密码且y是密码,显然任意gcd(x,y,n)的倍数都是密码;我们现在已知x,也就是求最小的y|n且y|x,使得不存在y的倍数不是密码。此时n/y就是答案。

Difference 假设统计(i,j]中(a,b)的差,就是sa[j]-sa[i]-sb[j]+sb[i]=(sa[j]-sb[j])-(sa[i]-sb[i]),也就是维护一个[a][b]表示a和b的颜色差,那么用[a][b]的当前值-[a][b]历史最小值(合法的话)更新答案。显然每次更新后只会变26个,且只有26个可以更新答案。时间复杂度O(26N)

Garbage 把0,1那个属性不同的边连起来然后跑欧拉回路

Tree Rotations 2 统计当且节点左子节点对右子节点的逆序对数量,如果交换会变少就交换。用树状数组维护一些东西即可。O(Nlog^2N),比标称的O(NlogN)线段树合并快多了。

Tree Rotations 上一题的弱化版

Temperature 单调队列维护一下即可。

Dynamite 首先二分答案,然后贪心往里面加点。然后每个点x有三种状态:有一个距离x为t的点没有被覆盖;没有点未被覆盖且x所在子树有个点可以向外延伸长度为t;不能延伸也唯有未被覆盖的点。dfs一下即可。

Party 如果x和y没有边连,显然存在一个不再大团中,把x和y都删掉即可。

Inspection 如果去掉x后有个连通块大小超过n/2就无解;否则维护一些东西然后讨论一下即可。

Periodicity 神构造题。可以百度vfleaking的题解。

Sticks 整体二分经典题。

Programming Contest 直接费用流建图会被卡常数。。注意到它其实是一个类似于二分图的玩意,用二分图匹配的方法来跑即可。

       代码戳->    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值