首页 > 其他分享 >JOI 2018 Final

JOI 2018 Final

时间:2023-07-28 21:25:13浏览次数:28  
标签:前缀 RGW tt 容斥 rightsquigarrow 2018 mathcal JOI Final

T1:注意到 \(i,i+1\) 间的间隔如果选上会增加 \(a_{i+1}-a_i-1\) 的时间,然后消耗一根火柴。那不取最大的 \(k-1\) 个即可。(\(-1\) 是因为一开始用了一根。)

T2:按 \(A\) 排序,算 \(B\) 的前缀和 \(S\),选一个区间 \([l,r]\) 显然比不是区间更优,代价 \(S_r-A_r-(S_l-A_{l+1})\),一个变量记录前缀最小即可。\(\mathcal O(n\log n)\)。瓶颈在排序。

T3:显然的做法是两个团子有重叠就连边,肯定是二分图,跑二分图最大独立集即可。过不去。观察到其实没多少团子会有重叠,因为他限制给的比较强,就三种情况:

RGW    R      R
G     RGW     G
W      W    RGW

然后有一个博特的观察:\(\tt R,G,W\) 都在同一条斜线上。你挑一个出来枚举每条斜线跑线性 dp 就行。\(\mathcal O(nm)\)。具体实现我选择以 \(\tt R\) 为基点,\(f(i,0/1/2,0/1/2)\) 分别记录前面两个位置 不选/选横行/选竖行 的最大独立集大小。转移比较简单。

T4:一开始看这题没啥头绪,瞎猜了一个 \(S\rightsquigarrow T,U\rightsquigarrow V\) 的最短路至多有一段重叠。然后反证一下是对的,感觉牛大了,后来发现这题因为边权会变 \(0\) 所以比较显然。想了个 shaber 贪心写不动,看题解。考虑这种题目的经典做法:分层图。分 \(4\) 层,假设选了 \(P,Q\) 两个端点:\(1,4\) 层跑 \(U\rightsquigarrow P,Q\rightsquigarrow T\) 的最短路,中间两层要分别建好 \(S\rightsquigarrow T\) 最短路的正反图,边权都是 \(0\),表示走了这一段 \(0\) 边。\(\mathcal O((n+m)\log (n+m))\),会带一个 \(4\) 的常数,问题不大。

T5:太人类智慧了。很神奇吧,鸽笼原理!

上来没思路啊!这三个状态我咋压 FWT,肯定要容斥个什么锤子东西然后像 LNR2 D1T3 那样压成两个,这能写?看题解喽。

我们有三种暴力思路,假设 \(\tt 0,1,?\) 的个数是 \(a,b,c\):

  1. 枚举 \(\tt ?\) 的状态,直接加,最暴力的方法,单次 \(\mathcal O(2^c)\)。
  2. 对 \(\tt 0\) 容斥,先把 \(\tt 0\) 全换成 \(\tt ?\),再钦定 \(S\) 位置是 \(1\),容斥系数 \((-1)^{|S|}\),其余部分高维前缀和卷超集。\(\mathcal O(2^a)\)。
  3. 对 \(\tt 1\) 容斥,类似。\(\mathcal O(2^b)\)。

然后最好玩的一步,取 \(a,b,c\) 最小的那个对应的方案,根据鸽笼原理 \(\min(a,b,c)\le \frac{n}{3}\),那么复杂度 \(\mathcal O(q2^{\frac{n}{3}}+2^nn)\)。这么牛!!!

标签:前缀,RGW,tt,容斥,rightsquigarrow,2018,mathcal,JOI,Final
From: https://www.cnblogs.com/Royaka/p/17588909.html

相关文章

  • The Final —— NOI2023
    终于到这一天了。Day0试机的时候讲了有SelfEval这个东西,很好啊!CCF终于愿意改善一点选手参赛体验了。笔试AK了。非常相信日报“不必担心睡不着,因为国赛不可能使人睡着”,似乎睡的还可以?Day1进场看题。T1不是扫描线板子吗?斜线就爆枚一下就行,比去年还简单?T2感觉没啥......
  • c++ std::thread::joinable
    std:......
  • P5369 [PKUSC2018] 最大前缀和 题解
    传送门题目大意给定一个序列,求任意重排\(n!\)中情况所以的最大非空前缀和的和。模\(998244353\)。\(n\e20\),\(\sum|a_i|\le10^9\)题目解析考虑最大前缀和的性质,有:对于最大前缀和部分,所有的真后缀大于等于零。(最大前缀和可能小于零)对于不在最大前缀和的后半部分,所......
  • InDesign (ID) 2018排版设计软件下载和安装教程
    InDesign软件是一个定位于专业排版领域的设计软件,是面向公司专业出版方案的新平台,由Adobe公司于1999年9月1日发布。它是基于一个新的开放的面向对象体系,可实现高度的扩展性,还建立了一个由第三方开发者和系统集成者可以提供自定义杂志、广告设计、目录、零售商设计工作室和报纸出版......
  • [JOI 2022 Final] 自学 题解
    洛谷传送门1.题意简述:一个学期有\(N\)天\(N*M\)节课,每天的第\(i\)节课可以选择效果\(a_i\)的学习与\(b_i\)的自习。问应如何安排每节课,使所有功课最小值最大?2.思路:这道题想直接模拟非常麻烦,但是如果我们能够灵活运用二分算法,这道题就非常简单了。考虑到数据范围较......
  • 【Java异常】Variable used in lambda expression should be final or effectively fi
    https://blog.csdn.net/weixin_44299027/article/details/117333667*lambda表达式中使用的变量应该是final或者有效的final*,也就是说,lambda表达式只能引用标记了final的外层局部变量,这就是说不能在lambda内部修改定义在域外的局部变量,否则会编译错误......
  • Java面试题 P5:简述final作用
    1、简述final作用?final含义是最终的。(1)修饰类:表示类不可被继承,不可以有子类;(2)修饰方法:表示方法不可以被子类覆盖,但是可以重载;(3)修饰变量:表示变量一旦被赋值就不可以更改它的值。(4)修饰成员变量如果final修饰的是类变量,只能在静态初始化块中指定初始值或者声明该类变量时指定初......
  • ClickHouse支持的Join类型
    ClickHouse是一种面向列的开源数据库管理系统,专为需要对大量数据进行超低延迟的分析查询的场景而构建和优化。为使分析应用达到最佳性能,通常会反范式联合表。扁平的表可以避免连接,从而有助于最大限度地减少查询延迟,但代价是ETL的复杂性会增加,而这通常是可以接受的,以换取亚秒级的查......
  • Python【21】 str.join( )方法
    参考:https://www.runoob.com/python/att-string-join.html一种简单的字符串拼接方法''.join......
  • finalShell的安装和使用
    finalshell的下载链接:https://pan.baidu.com/s/17D7oZ3xo24lnmFJ_amXdBA提取码:86ym1、finalshell的安装安装步骤很简单,下一步,下一步,安装完即可,存放路径,建议不要存放在c盘2、操作步骤2.1打开工具 2.2 修改快捷键 获取结束之后,点击确认使用以上方式,将系统原来默认......