test0411

本文是欢乐(?)模拟赛Day_2的题解,涵盖T1-T3题目分析。T1通过树链剖分解决询问与修改问题,T2利用递推公式得出座位安排规律,T3借助差分思想处理树上询问。文章强调了比赛中的思考过程与问题本质理解的重要性。

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

同步于洛谷

欢乐(?)模拟赛Day_2

人入從衆,衆從入人(人入从众,众从入人):
一個人要是開始跟隨大衆,那麼大衆的思想就會因此潛移默化這個人。

現在看到數據結構就怕= =

題目分析

T1 decomposition

題意:(抄的)给一棵以1为根的有根树,开始只有1有标记。每次操作可以给某个点打上标记,或者询问从某个点开始向上跳,遇到的第一个有标记的点。
思路:揣測了出題人的良心,覺得可能是樹鏈剖分,然後放棄了想了一下打了暴力,因爲某個點的答案就是最近有標記的點,所以暴力處理修改,可以做到 O ( 1 ) O(1) O(1)查詢。
正解:需要將均衡一下查詢和修改的複雜度——變成 O ( l o g 2 n ) O(log_2n) O(log2n)。(抄的)分析性质, 如果一个点 x 从始至终都没有被标记, 就可以把 x 合并到 x 的父亲上去。而並查集從來都是往上走,那——過來做,由于当前询问的答案只和前面的修改有关,沒有打過標記的點的案可以直接併入父親。那麼增標記就變成了刪標記和合併。
模型:Pay phone packing sequence

T2 tenki(AC)

題意:第1个人选择第1个座位坐下。之后的每个人进入时, 他会选择一个离最近的已经坐下的人尽可能远的空位。如果有多个空位使得离最近的人同样远, 则从中随机选取一个。若有两个人选择的位置相邻, 他们就会不满意。为了让所有人都满意, 至少需要几个座位?
正解:發現前兩個人一定佔據最左和最右。第三個人會佔據最中間,第四個人會佔據第一/二個人和第三個人的最中間……那麼除了前兩個人是特殊情況,可以推出一個式子——n個座位可以坐的人數 f ( n ) f(n) f(n)的遞推式:

	if(n<=0) return 0;
	if(n<=3) return 1;
	if(n&1) return 2*f((n>>1)-1)+1;
	return f((n>>1)-2)+f((n>>1)-1)+1;

二分答案,我們可以得到n個人需要的座位數。顯然,這不夠快。
利用這個遞推式打表——然後發現了規律:每第 2 n + 2 2^n+2 2n+2項出現斷層(積累兩位空隙到飽和狀態),很容易(高中必修五)得到通式: f ( x ) = x + 2 1 + ⌊ l o g 2 ( x − 2 ) ⌋ f(x)=x+2^{1+\lfloor{log_2(x-2)}\rfloor} f(x)=x+21+log2(x2)(但是我的通式比這個麻煩多了艹)
高精度。

T3 mafumafu

看 都 沒 看 但是mafumafu是小天使
高精度掛了很多次,沒時間了。
題意:(抄的)给定一个正整数 k , 以及一棵n个节点的以1为根的有根树, 边有长度.
L C A ( a , b ) LCA(a,b) LCA(a,b)表示 a a a b b b在树上的最近公共祖先, d i s t ( x ) dist(x) dist(x)表示树根到 x x x的距离.
每个节点可以是黑色或白色, 初始时每个节点的颜色为白色.进行 m m m次操作, 每次操作是以下两种形式之一:
修改操作: 给出一个修改节点 x x x,将节点 x x x染上黑色.
询问操作: 给出一个询问节点 x x x, 记所有黑点形成的集合为 S S S, 求出下面式子的值:
∑ y ∈ S F ( d i s t ( L C A ( x , y ) ) ) \sum\limits_{y\in S}^{} F(dist(LCA(x, y))) ySF(dist(LCA(x,y)))
其中F函數爲
F ( x ) = ∑ i = 1 n i k F(x)=\sum\limits_{i=1}^ni^k F(x)=i=1nik
答案對998244353取模。
正解:先從k=0入手,那麼只要求
∑ y ∈ S d i s t ( L C A ( x , y ) ) \sum\limits_{y\in S}^{} dist(LCA(x, y)) ySdist(LCA(x,y))
由于LCA到根的距离就是x,y到根的路径交集的长度,所以每加入一个点y时,利用差分的思想,就将y到根的路径上所有边的覆盖次数+1,询问时答案就是x到根的路径上每条边的长度 × \times ×它的覆盖次数。(k=0時,長度增加1,權值亦只增加1,因此權值即長度)
k$\not= 0 的 情 況 就 很 顯 然 了 , 長 度 從 i − 1 增 加 到 i , 權 值 增 加 0的情況就很顯然了,長度從i-1增加到i,權值增加 0i1ii^k , 那 麼 也 可 以 差 分 , 那 麼 邊 ,那麼也可以差分,那麼邊 (u,v) 權 值 也 是 固 定 的 , 爲 權值也是固定的,爲 F(dist(v))-F(dist(u)) 。 維 護 一 個 樹 上 邊 有 權 值 的 區 間 的 查 詢 和 修 改 , 用 樹 鏈 剖 分 。 關 於 。維護一個樹上邊有權值的區間的查詢和修改,用樹鏈剖分。 關於 F(x) 的 預 處 理 , 若 的預處理,若 f(n)=nk,n=xy$,則,$f(n)=nk=(xy)k=xky^k=f(x)f(y)$,即積性函數,可以用線性篩處理合數。

考試總結

自閉了,其實比較有性質的題目但是沒有去鑽。大衆分也沒有把握拿到。運氣成分偏大。
屬於那種見過的可能會做,沒見過的一定不會做。
但是不得不說,寫代碼前捋一捋思路還是有好處的雖然還是寫到一半懵了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值