test0411

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

同步于洛谷

欢乐(?)模拟赛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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值