pa2010 切题记

本文记录了作者在Algorithmic Engagements 2010算法挑战中的经历,涉及多种算法问题,如破环成链、蘑菇路径、钱币问题等。通过分析和解题思路,阐述了动态规划、网络流等技术的应用,同时分享了部分问题的简洁解决方案,如枚举断点、最长子串和等。

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

       没有题解好虚啊。。。剩下的题要么不会,要么做起来太慢感觉没意义,弃了吧。

Algorithmic Engagements 2010

Tasks

Rectangles(Round 0)(10/10)
Orienteering [B](Round 1)(10/10)
Mushrooms [B](Round 2)(10/10)
Coins [A](Round 2)(10/10)
Fragments [A](Round 3)(10/10)
Squared Words [B](Round 3)(10/10)
Evacuation [A](Round 4)(10/10)
Map [B](Round 4)(10/10)
The Goat [A](Round 5)(0/10)
Map 2 [B](Round 5)(10/10)
Termites [A](Round 5)(10/10)
Byties Display [B](Round 5)(10/10)
Byton Tree [B](Round 6)(10/10)
Firm [B](Round 6)(10/10)
Planning the Roadworks [A](Round 6)(0/10)
Riddle [A](Round 6)(0/10)
Variable Subsequences(Final round - practice session)(10/10)
Rectangles 2(Final round - practice session)(10/10)
Sweets(Final round)(10/10)
Acyclic Decomposition(Final round)(10/10)
Divisors(Final round)(10/10)
Byteball Match(Final round)(10/10)
Army Training(Final round)(10/10)
Blindfold Nim(Final round)(10/10)
Termites 2(Final round)(10/10)
Rectangles 枚举长宽直接统计即可。

Orienteering [B] 破环成链倍长,然后统计每个点向前最多延伸多少。

Mushrooms [B] 显然他一定是走到一个点i,然后在i-1和i之间来回扭脖。注意在原点和1之间来回扭脖的情况。

Coins [A] 令'R'=k,'O'=-1,然后统计最长的子串使和为0的,hash+扫描即可。

Fragments [A] 对不同的长度分别处理,求出断点以及断点上的增值即可,断点只能为10^k或者某一段的数字。注意略卡空间。

Squared Words [B] 大力枚举断点跑lcs,加一些剪枝O(N^3)过了。。

Evacuation [A] 对于(i,j),如果1和i且j和n连则至少断(1,i)(i,j)(j,n)中的一个。(1,i),(i,n)同理,注意(1,n)的情况。

Map [B] 排序后统计比某个点x小的y的最小最大值;反过来再求一遍即可。

Map 2 [B] 枚举x坐标,则y坐标的范围一定。在相邻x坐标之间的一起统计即可。

Termites [A] 最优决策下不会有个人选相邻的点(否则会被另一个人破坏掉?),然后如果x比两侧都大就用两侧-它替换。

Byties Display [B] 显然越大的越多越好。从9~0枚举,然后二分最多有几个跑网络流。

Byton Tree [B] dp。注意一个点剪掉的时间要比它的子树中其余点要晚,然后求出最优决策的时间段即可。

Firm [B] 离根节点的距离相当于深度。按深度离线,求dfs序然后按时间加入即可。

Variable Subsequences dp。dp[i]的前面一个可以是1~i-1,然后减去和它一样的即可。维护两个前缀和。

Rectangles 2 枚举长,宽是一个范围内的1~k的前缀和。

Sweets 我只会sb做法。首先分成两堆,三个人差分表示成(i,j),然后在另一堆找最小的x+y使x+i>=0且y+j>=0.

Acyclic Decomposition 如果不可以一组,那么所有(i,j)且i<j的分成一组即可。

Divisors 把1和n带进去看是否一样。

Byteball Match 显然每个球队都可以刷净胜球,然后就是网络流经典问题了。

Army Training 用射线法,预处理统计每条(i,j)右侧有多少点,最后加起来在减去反过来右侧的点,这样每个点算了两遍要/2。注意顶点的问题。

Blindfold Nim 打表发现每次都是选最大的-1。实际上如果你不选那么后手就可以这么走不会更差。

Termites 2 挺不错的一道思维题。由于是一棵树,所以一个连通块一定恰好一个点没有被选。对于每个人,维护一个数组表示在最优策略下他能否保住某一个点,并维护一个链表。加入边的时候讨论一下。

       QAQ水平太差了。

       代码戳→  

by lych

2016.1.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值