首页 > 其他分享 >JOISC 2023 记录

JOISC 2023 记录

时间:2023-03-24 15:55:07浏览次数:43  
标签:10 le 记录 可以 mid times JOISC 2023 区间

目前 4/6/12 (code/sol/problem)

D1T1 Two Currencies

给定一棵大小为 \(n\) 的树 \(T\),树上有 \(m\) 条关键边,经过关键边要么缴纳一枚金币要么缴纳 \(c\) 枚银币。

有 \(Q\) 组询问,每次询问从 \(a\) 走到 \(b\) 带 \(x\) 枚金币 \(y\) 枚银币能否到达,如果可以到达还需最大化剩下的金币数。

\(n,m,Q\le 10^5\)。

使用可持久化线段树记录下每个点向上到根的边权,那么 \(a\to b\) 可以用三棵线段树做差得到。

我们希望金币最多,那么希望银币带走尽可能多的关键边,于是二分查一下能够处理掉多少关键边就行了。

时间复杂度线性对数。

D1T2 Festivals in JOI Kingdom 2

称 \(n\) 个区间组成的区间组 \([a_i,b_i]\) 是好的,当且仅当:

  • \(1\sim 2n\) 在 \(a,b\) 中各只出现一次。

  • \(a_i<b_i\),\(a_i<a_{i+1}\)。

  • 下列算法计算「选出尽可能多的区间它们两两之间无交」的答案错误:

    • 按顺序扫描区间,如果当前区间与之前选择的区间均无交,则将其加入答案。

对好的区间组计数,\(n\le 2\times 10^4\)。

不会。

如果暴力枚举括号序列,然后再枚举每一个左括号的归属的话,可以拿 \(10\) 分。

D1T3 Passport

有 \(n\) 个点,初始时只能访问某一个点,在 \(i\) 可以花费一的代价使得你可以访问 \([L_i,R_i]\) 这些点,满足 \(L_i\le i\le R_i\)。

\(q\) 次询问,每次询问从某一个点出发,最少需要花费多少代价可以访问所有点。

\(n\le 2\times 10^5\)。

对每个点建虚点表示买不买票,那么可以得到一种做法是原本的点连向虚点,这个边有代价,然后虚点再向对应区间的原点连边。

「向区间连边」,可以想到线段树优化建图,访问所有点,其实只要访问 \(1\) 和 \(n\) 就行了。

建反图从 \(1\) 和 \(n\) 分别跑最短路,那么可以得到初始答案 \(d_{1,u}+d_{u,n}\),注意到两边方案可能有重边,对重边的处理类似三角不等式 \(d_{u}+w<d_v\),再跑一遍最短路就行了。

时间复杂度线性对数平方,实现的不好可能会被卡常。

D2T1 Belt Conveyor

交互题,给定一棵 \(n\) 个点的树,边有方向,但是不知道方向。

每一次询问,你可以指定一个边集和一个点集,翻转边集的所有边之后,将你指定的点集中的点上各放置一个棋子,将棋子向任意一条所在点的出边移动一步,返回有棋子的点,并将树还原。

在 \(30\) 步内确定边的方向,\(n=10^5\),交互库自适应。

所有的一度点可以同时确定,所有的二度点可以同时三步确定。

那么同时确定所有一度点和二度点之后,可以将他们删除,然后确定新的一度点和二度点。

很难卡,估计卡不到 \(30\) 步。

另一种做法是,按 \(dep\bmod 3\) 分组,每次选最大的一组来确定一条边,当一个点的所有边都被确定就把它删掉。

这样做是 \(\log _{1.5} n=29\) 次,是标算。

写点实现细节:上述做法会出现两个点的祖先被走到,但是一个点其实是走到儿子的情况,实现中,可以先写点的边均为出边,然后写走到儿子,最后讨论祖先,这样就可以规避了,样例很强。

D2T2 Council

给定一个 \(n\) 行 \(m\) 列的 \(01\) 矩阵 \(a\),先删去其中的第 \(x\) 行,然后你再选择删除一行,最大化剩下的 \(n-2\) 行 \(m\) 列矩阵中 \(\sum_{j=1}^m [\sum_{i=1}^{n-2}a_{i,j}\ge \lfloor\frac n2\rfloor\ ]\)。

对 \(x\in[1,n]\) 求解,\(n\le 3\times 10^5\),\(m\le 20\)。

对于每一个 \(a_i\),考虑求出一个 \(b_i\),满足删除 \(i\) 之后个数恰好为 \(\lfloor\frac n2\rfloor\) 的列的集合。

如果删掉的另一行是 \(1\),那么这个就不会被通过,所以也就是对于每个 \(i\) 找出一个 \(j\) 满足 \(\text{popcount}(b_i\And a_j)\) 尽可能小,\(a_j\) 取反之后就是取最大值,满足 \(i\not= j\)。

首先求出 \(f_S\) 表示对于某一个 \(S\) 是否存在 \(S\subset a_j\),这个可以高维后缀和,然后求出 \(g_{i,S}\) 表示是否存在 \(S\) 的子集满足 popcount 为 \(i\),这个可以高维前缀和。

注意到满足 \(i\not= j\),记一下每一个 \(1\) 来自哪里就行了,记两个本质不同的。

D2T3 Mizuyokan 2

给定一个长为 \(n\) 的序列 \(d\),支持如下操作:

  • 单点修改。

  • 区间查询,对于区间 \([l,r]\),最少需要如下操作几步,可以得到一个 zigzag 序列:

    • 操作:选择 \(i\),删除 \(d_i,d_{i+1}\),在 \(i\) 这个位置插入 \(d_i+d_{i+1}\)。

    • zigzag 序列:升降相间的序列。

  • 上述操作的出现情况一定是先修改一次再查询一次,如此反复。

\(n\le 2.5\times 10^5\),\(5\times 10^4\) 次修改查询。

D3T1 Chorus

给定一个长为 \(2n\) 的 \(01\) 串,有 \(n\) 个 \(0\),\(n\) 个 \(1\),你需要将他们划分成 \(k\) 个子序列,且 \(k\) 个子序列均可以划分成长度相等,先是均为 \(0\) 再是均为 \(1\) 的两个子段。

当然有的时候这不可行,你可以交换相邻的字符,在最小步数内使得存在一种划分方案。

\(n\le 10^6\)。

D3T2 Cookies

有 \(n\) 种物品,每种物品有 \(a_i\) 个,你要把他们都装进盒子里,满足:

  • 盒子里的物品各不相同。

  • 盒子里的物品个数必须属于一个集合 \(b\)。

求一组方案,如果存在多种,求出盒子最少的一种方案。

\(|b|\le n\le 1.5\times 10^4\),\(\sum a_i\le 1.5\times 10^4\)。

D3T3 Tourism

区间询问虚树所占连通块的大小。

\(n\le 10^5\)。

一个普通的想法是莫队,每次暴力用 set 查 dfn 的前驱后继,然后统计答案,这个是 \(O(n\sqrt{n} \log n)\) 的,不能过。

如果改成回滚莫队即只删不加,用链表维护 dfn 的前驱后继,就可以做到 \(O(n\sqrt{n})\),应该能过。

考虑猫树分治,对于关键点来处理,对于每一层,对 \([l,r]\) 建虚树,我们希望求出跨越 \(mid\) 的答案:

  • 将点划分成两类 \([l,mid]\) 和 \([mid+1,r]\),下文将这两类点叫做一类二类。

  • 考虑一条虚树上的边,它将虚树分为了两个连通块 \(S_1,S_2\),他的边权为 \(w\),那么,\(w\) 会被算入贡献的询问有:

    • 注意到 \(mid\) 和 \(mid+1\) 一定得在 \(w\) 的一边,否则这条边一定会被计入答案。

    • 设在的那一边为 \(S_1\),另一边是 \(S_2\),那么记 \(S_2\) 中最大的一类点是 \(u\),最小的二类点是 \(v\),那么类似 \(l'\le u\lor r'\ge v\) 会被加上 \(w\),可以拆成 \(l'\le u\),\(r'\ge v\),\(l'\le u\land r'\ge v\) 容斥。

  • 上述三种询问均可以使用 \(l'\in[L_1,R_1],r'\in[L_2,R_2]\) 的形式描述,是二维数点,扫描线树状数组即可。

每次分治的时间复杂度是 \(O(L\log L)\) 的,所以总时间复杂度是 \(O(n\log n)\) 的。

D4T1 The Last Battle

通信题,小 A 和小 B 利用一个 \(8\times 8\) 的格子通信,小 A 可以向格子里除了第 \(x\) 行和第 \(y\) 列的数填上 \(01\),第 \(x\) 行和第 \(y\) 列将由交互库填上,小 A 需要传递给小 B 一个长度为 \(n\) 的 \(01\) 串,小 B 只知道 \(n\) 和这个 \(8\times 8\) 的格子。

正确传输 \(n=43\) 的串。

D4T2 Security Guard

不写了,鸽。

D4T3 Bitaro's travel

以前这里有题意的,但是被不小心删了,所以鸽了。

绝对值的 beat,有意思,注意到反方向的一方距离一定会翻倍,所以转向走不超过 \(\log V\) 次。

假设现在访问了 \([l,r]\),在 \(u\),那么转移也就是比较 \(u-x_{l-1}\) 和 \(x_{r+1}-u\),我们希望求出一直走的终止点,以向左为例就是找到 \(i\) 满足 \(x_i-x_{i-1}<x_{r+1}-x_i\),是一个偏序问题,在线回答偏序问题选择主席树,从而在 \(O(n\log V\log n)\) 的时间复杂度内解决。

标签:10,le,记录,可以,mid,times,JOISC,2023,区间
From: https://www.cnblogs.com/cnyzz/p/17252198.html

相关文章

  • day9记录_idea上传文件接口调用
    day9_idea上传文件接口调用,如下图,调用成功注:pom文件需要增加以下代码:<dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artif......
  • wgcloud项目经验记录 - 可以监测进程IO吗
    可以的WGCLOUD可以监测进程的进程ID,cpu使用率,内存使用率,吞吐量,线程数量,进程启动时间等指标数据......
  • CSP20230319-4 星际网络II 题解
    〇、题目题目描述随着星际网络的进一步建设和规模的增大,一个新的问题出现在网络工程师面前——地址空间不够用了!原来,星际网络采用了传统的IPv6协议,虽然有\(2^{128}\)级......
  • 2023/3/24日寄
    今日目标\(1.\)反悔贪心\(\times1\)\(2.\)数链剖分\(\times1\)\(3.\)考试总结\(\times1\)\(write1\)上午考试。\(T1,T2\)两构造。\(T3\)诡异题。先开\(T2\),尝试......
  • 美团 2023-3-11
    第一题:字符串修改题目描述小美有一个由数字字符组成的字符串。现在她想对这个字符串进行一些修改。具体地,她可以将这个字符串中任意位置字符修改为任意的数字字符。她......
  • mac版photoshop 2023存储为窗口显示空白、黑屏如何解决
    photoshop2023更新后,很多朋友在安装使用中发现,Mac版的photoshop2023再点击存储后弹出的保存窗口里没有文字内容,只有一个黑色的方框,这个问题怎么解决呢?一起来看看吧!按照......
  • jmeter清除脚本历史记录
    获取许多朋友跟我一样有个疑问,那就是jmeter保存的脚本历史记录究竟如何删除,在下图中:“文件—>最近打开—>历史记录”便可以看到我们之前操作过的脚本,确实脚本的保留对......
  • Apinto网关导入Swagger报错问题记录
    问题描述ApintoDashboard已经部署完成,想通过导入Swagger文件的方式快速把接口同步到ApintoDashboard,但此时导入报错:CLUSTERDOWNHashslotnotserved,如下问题原因Re......
  • algorithmicx(use algpseudocode as layout)学习记录
    这几天写算法作业,提供的tex文件中使用algorithmicx书写伪代码,虽然也会用algorithm2e,但技多不压身,现在就来学一学。目录概述ExampleDetails行号行注释引用Commandsifblock......
  • C4D 2023.1.3最新版本一键安装永久使用!
    今天给大家带来的是最新版本MAXONCinema4DC4D2023.1.3安装包下载,支持电脑系统Win和Mac!Cinema4D2023为所有Cinema4D用户带来了出色的功能,并整合了整个Maxon家族的......