首页 > TAG信息列表 > SDOI2019
[SDOI2019] 热闹的聚会与尴尬的聚会
前言 在洛谷题解逛了一圈,不是随机化乱搞就是带log的做法,这里来一个线性且正确性有保证的做法。 人傻常数大,打不过随机化/kk 题目 洛谷 LibreOJ 讲解 做法是每次删除度最小的点,贪心加入独立集。因为很多题解都证过了,这里就不证正确性了。 讲一下实现。 我们对每个点按度数桶排,然后洛谷 P5360 - [SDOI2019]世界地图(最小生成树+虚树)
洛谷题面传送门 好题。 首先看到抠掉一个区间的限制,我们很自然地想到对前后缀跑一遍 MST 后把左右两半的信息合并起来的想法,于是问题转化为怎样维护前后缀的最小生成树。 直接做复杂度 \(nm^2\log n\),显然无法通过,乍一眼貌似也需要可持久化 LCT / 树状数组套 LCT 等奇奇怪怪的数P5358 [SDOI2019]快速查询
传送门 做法: 记全体加法标记,全体乘法标记,数值总和 为 \(qa,qm,sum\),单个修改用 \(map\) 存。 操作一:将其数值赋为 \((x-qa)/qm\),修改 \(sum\)。(需预处理逆元)。 操作二:修改 \(qa\),\(sum\)。 操作三:修改 \(qa\),\(qm\),\(sum\)。 操作四:\(qa=x,qm=0\)。 操作五:找到 map 里的值乘上#离线#洛谷 5358 [SDOI2019]快速查询
题目传送门 分析 由于询问次数很多,只能离线去做,考虑全局的操作都可以打标记。 对于单点的操作,实际上的数为 \(x'=x*Mul+Add\) 由于这两个标记单独撤销比较困难, 不妨开一个数组直接维护 \(x=\frac{x'-Add}{Mul}\), 单点赋值就直接加上 \(\frac{x_q-x'}{Mul}\),单点查询再把标记乘回P5360 [SDOI2019]世界地图 虚树+最小生成树
题意: 戳这里 分析: 暴力: 每一次拿出对应的边,跑最小生成树,复杂度 \(O(qnm\log)\) 正解: 我们有一个很容易得到的想法就是,维护一个前缀 \(mst\) 和一个后缀 \(mst\) 每次将他们两个合并起来,树的动态合并可以通过 \(lct\) 做到,但是我们可能需要一个可持久化 \(lct\) 来维护前后缀(也Luogu5358 [SDOI2019]快速查询
Luogu5358 [SDOI2019]快速查询 不敢压行了,调不动\(QAQ\)。 注意查询散列表时,如果已经找到了数,但是是在覆盖以前的,直接返回找不到即可,因为散列表的特点是后插入的数先访问到。 #include<iostream> #include<cstdio> #include<algorithm> #define N 100005 #define M 105 #define ll[SDOI2019] 热闹的聚会与尴尬的聚会
题意: 你有n个好友,他们之间有m对关系$(u,v)$表示u和v互相认识,认识没有传递性。 现在你想组织一场热闹的聚会和一场尴尬的聚会,定义如下: 一场热闹度为p的聚会请来了任意多位好友,对于每一位到场的好友来说都有至少p位他认识的好友也参加了聚会,且至少对于一位到场的好友来说现场恰好有[SDOI2019] 快速查询
首先,这是一道省选可以切的题(虽然我其实一开始并不会)。 分析6个操作,不难发现其实所有的操作要么是单点修改/查询,要么是整个序列的修改/查询。而众所周知,只对整个序列进行操作有些优美的性质。 首先我们维护3个标记,\(add\),\(mul\),\(sum\),分别是加法标记,乘法标记,以及整个序列的和。类Luogu P5363 [SDOI2019]移动金币
话说这题放在智推里好久了的说,再不写掉对不起自己233 首先你要知道一个叫做阶梯Nim的东西,具体的可以看这篇博客 那么我们发现这和这道题的关系就很明显了,我们把两个金币之间的距离看作阶梯Nim的每一堆的石子个数 考虑阶梯Nim的结论:奇数编号堆的石子异或和为\(0\),发现我们可以搞一[SDOI2019] 移动金币
分析 阶梯NIM模型:共有m+1堆石子,石子总数不超过n-m,求必胜的,即奇数堆石子数目异或和非零的局面数。补集转化,答案C(n,m)-奇数堆石子数目异或和位0的局面数。 可以想到按位dp,设f[i,j]表示已经考虑了前i位(异或和0),石子和为j的方案数;转移时考虑下一位出现的被统计1的个数k,k为偶数,带系数C((【SDOI2019】世界地图 - 题解
题目链接 【SDOI2019】世界地图 做法 因为 $ n $ 很小,所以问题可以从 $ n $ 入手。 发现询问不会删除第一列和最后一列,那么最后的结果为合并地图 $ [1, l_i - 1] $ 和 $ [r_i + 1, m] $ 的 $ MST $ 得到的 $ MST $ 大小。所以预处理只要求地图前缀/后缀 $ MST $ 即可。 考虑如何合[SDOI2019]快速查询
题目 就是一个签到题啊,然而没有判乘0于是签到失败成功退役 模数只有\(1e7+19\)于是我们可以线性求所有逆元了 我们只需要考虑如何解决操作1和操作5即可,其余的操作就是简单的模拟一下即可 发现操作1和操作5还是本质上就是询问一个单点的值 注意到实际上有用的位置只有\(1e5\)个,于是[SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)
首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异或和为0。具体证明:参考这篇博客,当然不是我写的。如果不知道结论,里面有例题POJ1704可以做一下SDOI2019游记
Day0 一大早就起床,结果忙活了整整一上午。 12:20从gryz出发,路上发现把耳机和笔忘另一个背包里了(都怪老爸非得让我换背包),15:30差不多就到山师了。 山师也是蛮漂亮的,花开得挺好。到处是牵着手的小情侣。啧啧啧~。恰逢清明,给他们烧柱香吧 一时间难以表达内心的欢愉(第一次带着这么轻松