Processing math: 1%

North American Invitational Programming Contest 2018

A. Cut it Out!

枚举第一刀,那么之后每切一刀都会将原问题划分成两个子问题。

考虑DP,设f[l][r]表示l点顺时针一直到r点还未切割的最小代价,预处理出每条边的代价转移即可。

时间复杂度O(n^3)

  

B. Double Clique

一个方案合法当且仅当团点数\times (团点数-1)+独立集度数和=团度数和,且存在可行方案满足团是度数最大的若干个点。

找到可行方案后,要么是团里出去一个点,要么是独立集里出去一个点,要么两边各出去一个点。

时间复杂度O(n\log n)

  

C. Flashing Fluorescents

注意到答案不超过n,枚举答案ans,则任何一个可行方案可以由若干个长度互不相等且不超过ans的区间异或得到。

f[ans][S]表示长度不超过ans能否异或出S,枚举当前长度的区间位置转移即可。

时间复杂度O(2^nn^2)

  

D. Missing Gnomes

按题意模拟。

  

E. Prefix Free Code

建立Trie将字符串映射为数字,从前往后枚举LCP,那么这一位能填的数要小于某个值,且前面没出现过,可以用树状数组加速统计,后面能填的数可以用组合数计算。

时间复杂度O(n\log n)

  

F. Probe Droids

即求斜率第k小的坐标,首先特判掉斜率=0或者斜率不存在的情况。

在Stern-Brocot Tree上枚举互质数对作为斜率,然后用类欧几里得算法在O(\log n)的时间内统计出直线下方的点数,以此来判断往左走还是往右走。

考虑二分往左往右走的拐点位置,则每次询问的复杂度降低至O(\log^3n)

  

G. Rainbow Graph

若只有一个限制,满足拟阵。

对于两个限制,则是两个拟阵的交。

首先特判全部都无解的情况,并将全集E作为k=m的解。

M_1为限制1的拟阵,一个方案合法当且仅当在限制1下连通,同理定义M_2为限制2的拟阵。

建立有向图,原图每条边作为一个点,并添加源汇ST

对于上一个k的一组最优解E中的某条边x,如果去掉它后仍然满足M_1,则由Sx连边;若去掉它后仍然满足M_2,则由xT连边。

对于E中某条边x和不在E中的某条边y,若将x换成y后满足M_2,则由xy连边;若满足M_1,则由yx连边。

用SPFA求出ST的最短路,就能得到边数恰好减少1的最优解。

时间复杂度O(n^4)

  

H. Recovery

将所有位置都设成1,然后贪心配对行列使得满足条件。

  

I. Red Black Tree

f[i][j]表示考虑i的子树,里面选了j个红点的方案数,转移时只枚举有效的j即可得到O(nm)的时间复杂度。

  

J. Winter Festival

因为所有简单环边权和都要是奇数,因此当两个简单环有公共边时不可能满足条件,所以当且仅当图是仙人掌的时候才有解。

f[i][j][x][y]表示考虑DFS生成树中i的子树,ii父亲的边的边权为jii父亲的边所在环的边权和模2xii父亲的边所在环的非树边边权为y的最小代价。

转移时需要通过另一个辅助数组h[S][j][x][y]来进行不同子树的合并,其中j,x,y含义与f相同,而S表示x点周围存在的边权集合。

时间复杂度O(n+m)

  

K. Zoning Houses

若不删除任何点,则答案为区间x坐标的极差与y坐标极差的较大值。

若删除一个点,则最优方案下一定是删除x或者y坐标最小或者最大的4个点之一,线段树维护即可。

时间复杂度O(n\log n)

  

posted @   Claris  阅读(2078)  评论(2编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
历史上的今天:
2017-04-07 BZOJ4083 : [Wf2014]Wire Crossing
2017-04-07 BZOJ4081 : [Wf2014]Skiing
点击右上角即可分享
微信分享提示