这个题目还是很好啊QWQ很有纪念意义 首先,如果在序列上且是单次询问的话,就是一个非常裸的贪心了QWQ这也是NOI当时原题的问题和数据范围 我们考虑上树的话,应该怎么做? 我的想法是,对于每一位建一个LCT来做,然后对一个点x维护,当前是0到链顶的结果,当前是1到顶的结果,当前是0到底的结果,当前是1到底的结果(之所以维护后两个是因为\(reverse\)操作的存在) 这样的话,对于每次询问,我就可以直接\(split\),然后贪心的询问. 不过很可惜,这个算法的复杂度是\(O(qklogn)\…
题目背景 刚立完Flag我就挂了WC和THUWC... 时间限制0.5s,空间限制128MB 因为Claris大佬帮助一周目由乃通过了Deus的题,所以一周目的由乃前往二周目世界找雪辉去了 由于二周目世界被破坏殆尽,所以由乃和雪辉天天都忙着重建世界(其实和MC差不多吧),Deus看到了题问她,总是被告知无可奉告 Deus没办法只能去三周目世界问三周目的由乃OI题... 三周目的世界中,因为没有未来日记,所以一切都很正常,由乃天天认真学习... 因为Deus天天问由乃OI题,所以由乃去学习了一下O…
洛谷题目传送门 膜拜神犇出题人管理员!!膜拜yler和ZSY!! 没错yler连续教我这个蒟蒻写起床困难综合症和睡觉困难综合症%%%Orz,所以按位贪心的思路可以继承下来 这里最好还是写树剖吧,不过我根本不会,于是只好来个LCT,用unsigned long long维护链上双向的按位操作.具体方法yler已经讲得很好啦 注意因为信息的维护是有方向性的,所以pushdown要写规范...... #include<cstdio> #define RG register #define R RG…
题目: P3613 睡觉困难综合症 解题思路: LCT,主要是维护链上的多位贪心答案,推个公式:分类讨论入0/1的情况,合并就好了(公式是合并用的) 代码(我不知道之前那个为啥一直wa,改成结构体就好了QAQ: #include<cstdio> #include<cstring> #include<algorithm> #define lll tr[spc].ch[0] #define rrr tr[spc].ch[1] #define lls tr[spc].dt[0…
来自FallDream的博客,未经允许,请勿转载,谢谢. 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间.正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在世界上传播.为了彻底消灭这种病,atm 决定前往海底,消灭这条恶龙.历经千辛万苦,…
题目大意:给出一棵n个点的树,每个点有一个运算符(与.或.异或)和一个数,支持两种操作,第一种修改一个点的运算符和数,第二种给出x,y,z,询问若有一个0~z之间的数从点x走到点y(简单路径),并且对路径上经过的点做对应的运算,最终最大能是多少.(n,操作数<=100,000,数字在[0,2^64)之间) 思路:洛谷改编NOI的一道神题,树剖/LCT维护若一开始全是0/全是1,经过一条链后各位会变成什么,用位运算合并信息,然后每个询问,从高位往低位贪心,每次取0和1中经过这条链后得到的较大值,若…
传送门 题解 人生第一道由乃…… 做这题之前应该先去把这一题给切掉->这里 我的题解->这里 然后先膜一波zsy大佬和flashhu大佬 大体思路就是先吧全0和全1的都跑答案,然后按位贪心 我一开始想到的是每一次split,然后直接一个一个跑 后来发现时间复杂度肯定爆炸…… 看了看网上其他的,发现说的都不怎么清楚……结果硬是理解了好久才明白…… 先考虑一下LCT维护什么 定义$f0$为全0走过一条路径之后的答案,$f1$表示全1走过一条路径之后的答案 LCT需要维护的是splay中以x为根的子…
Description 给定一棵 \(n\) 个点的树,每个点上有位运算 \(opt\) 和一个权值 \(x\),位运算有 &,|,^ 三种. 要求支持: 修改点 \(v\) 的 \(opt\) 和 \(x_v\) 确定一个初始点权在 \([0,z]\) 之间的 \(v_0\),然后依次经过从 \(x\) 到 \(y\) 的所有节点.每经过一个节点 \(i\), \(v\) 就变成 \(v\;opt\;x_i\) 请回答最后到 \(y\) 时可能的最大的 \(v\) . Solution 首先五…
\(\color{#0066ff}{ 题目描述 }\) 由乃这个问题越想越迷糊,已经达到了废寝忘食的地步.结果她发现--晚上睡不着了!只能把自己的一个神经元(我们可以抽象成一个树形结构)拿出来,交给Deus. 这个神经元是一个有n个点的树,每个点的包括一个位运算opt和一个权值x,位运算有&,l,^三种,分别用1,2,3表示. 为了治疗失眠,Deus可以将一些神经递质放在点x上,初始的刺激值是\(v_0\).然后v依次经过从x到y的所有节点,每经过一个点i,v就变成v opti xi,所以他想问…
从高位到低位按位枚举,贪心.如果该位填1比填0结果优且填1不会超出m限制,那就填1,否则填0 /*by SilverN*/ #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; ; int n,m; ]; int op[mxn],a[mxn]; ; int pro(int x){ ;i<=n;i++){ )x=x&a[…