BZOJ4811 [Ynoi2017]由乃的OJ】的更多相关文章

原文链接http://www.cnblogs.com/zhouzhendong/p/8085286.html 题目传送门 - BZOJ4811 题意概括 是BZOJ3668长在树上并加上修改和区间询问. 一棵树,n个节点,每一个节点有一个位运算符和一个运算数. 现在要你支持两种操作: 1. 单点修改. 2. 现在你有一个数字v,让他从x走到y,每到达一个节点进行相应的运算.v在0~z之间,让你使得运算结果最大,问v为何值. 题解 我们考虑树链剖分+线段树. 假设某一位为0或者1,那么经过一定的操…
起床困难综合症那题,只要从高往低贪心,每次暴力跑一边看这一位输入0和1分别得到什么结果即可. 放到序列上且带修改,只要对每位维护一个线段树,每个节点分别记录0和1从左往右和从右往左走完这段区间后变成的数即可. 放到树上,只要树链剖分即可.但这里有一个很大的常数k,实际上我们只需要一个数就可以记录64个二进制位的信息,于是复杂度$O(n\log^2 n)$ 小错误毁一生. #include<cstdio> #include<cstring> #include<iostream&…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目链接:BZOJ4811 正解:树链剖分+线段树 解题报告: 因为位与位之间互相独立,考虑直观做法,对于每一位维护两个变量,分别表示这一位输入$0$.$1$之后会变成的值. 这个复杂度是$O(knlog^2n)$,显然不能通过. 但是我们不难发现,对于不…
先考虑NOI2014的水题,显然从高位到低位贪心,算一下该位取0和1分别得到什么即可. 加强这个水题,变成询问区间.那么线段树维护该位取0和1从左到右和从右到左走完这个节点表示的区间会变成什么即可,也滋磁修改了. 然后上树,显然树剖即可.非常惨的变成了O(nklog2n).压一下位就不惨了,变成O(n(k+log2n)). 树剖lca都能写挂调一天,不会熟练剖分,退役了. #include<iostream> #include<cstdio> #include<cmath&g…
传送门 题意:给出一个$N$个点的树,树上每个点有一个位运算符号和一个数值.需要支持以下操作:修改一个点的位运算符号和数值,或者给出两个点$x,y$并给出一个上界$a$,可以选取一个$[0,a]$内的整数值,在从$x$到$y$的路径上,每走到一个点就与这个点对应的数值进行对应的位运算,求到达$y$点时数字的可能的最大值.$N,\text{操作数} \leq 10^5$,数字在$unsigned long long$范围内. 可以先去做NOI2014的起床困难综合征 考虑用起床困难综合征的贪心策略…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4811 因为位运算的结果有可合并性,所以可以树链剖分,线段树维护: 细节很多,特别要注意从左往右运算和从右往左计算是不同的,在不同条件下一定要区分!!! 这篇博客写得很好(我就是模仿它写的):https://blog.csdn.net/a1799342217/article/details/78818480 代码如下: #include<iostream> #include<cstd…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4811 题解 我现在为什么都写一题,调一天啊,马上真的退役不花一分钱了. 考虑这道题的弱化版 NOI2014 起床困难综合证的做法. 分成每一位来考虑,如果高位可以是 \(1\) 的话,那么尽量让高位为 \(1\). 求出当前位为 \(0/1\) 时,最终得到的是 \(0\) 还是 \(1\).因为要保证选的数小于 \(z\),所以对于都可以得到 \(1\) 的情况,尽量选择 \(0\) 可以…
[BZOJ4811][Ynoi2017]由乃的OJ Description 由乃正在做她的OJ.现在她在处理OJ上的用户排名问题.OJ上注册了n个用户,编号为1-",一开始他们按照编号排名.由乃会按照心情对这些用户做以下四种操作,修改用户的排名和编号:然而由乃心情非常不好,因为Deus天天问她题...因为Deus天天问由乃OI题,所以由乃去学习了一下OI,由于由乃智商挺高,所以OI学的特别熟练她在RBOI2016中以第一名的成绩进入省队,参加了NOI2016获得了金牌保送 Deus:这个题怎么做…
题解: 好像和noi那题并没有什么区别 只是加上了修改和变成树上 比较显然我们可以用树链剖分来维护…
Description 给你一个有n个点的树,每个点的包括一个位运算opt和一个权值x,位运算有&,l,^三种,分别用1,2,3表示. 每次询问包含三个数x,y,z,初始选定一个数v.然后v依次经过从x到y的所有节点,每经过一个点i,v就变成v opti xi,所以他想问你,最后到y时,希望得到的值尽可能大,求最大值?给定的初始值v必须是在[0,z]之间.每次修 改包含三个数x,y,z,意思是把x点的操作修改为y,数值改为z. Input 第一行三个数n,m,k.k的意义是每个点上的数,以及询问…