洛谷P2114起床困难综合征】的更多相关文章

从高位到低位按位枚举,贪心.如果该位填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[…
呃...这道题算是noi中比较简单的题吧...... 众所周知,位运算是个好东西,它就是对应的位进行运算,跟其他的位没有关系. 我们要选取一个m值使最后的攻击力最大,对于这个m,从高位开始枚举,判断该位选0更优还是选1更优,怎么判断呢?把该位进行n次运算不就行了吗,看最后的数是1还是0. .................位运算中的DP? 1 #include<bits/stdc++.h> 2 using namespace std; 3 pair<string,int> a[10…
题目:https://www.luogu.org/problemnew/show/P2114 题意:有n个操作,每个可以是与.或.异或 一个数. 初始值是0~m之间的一个数,问经过n个运算之后,可以得到的最大值是多少. 思路: 这个数的某一位不是0就是1,所以我们可以用一个全为1的数和一个全为0的数做n次操作.然后判断这个数的每个位应该是0还是1就行了. 从高位到低位开始贪心.如果0和1都可以得到1的话,就选0,因为这样数比较小之后贪心的选择比较多. 如果只有1可以得到1的话,看看选1的时候这个…
洛谷题目传送门 膜拜神犇出题人管理员!!膜拜yler和ZSY!! 没错yler连续教我这个蒟蒻写起床困难综合症和睡觉困难综合症%%%Orz,所以按位贪心的思路可以继承下来 这里最好还是写树剖吧,不过我根本不会,于是只好来个LCT,用unsigned long long维护链上双向的按位操作.具体方法yler已经讲得很好啦 注意因为信息的维护是有方向性的,所以pushdown要写规范...... #include<cstdio> #define RG register #define R RG…
题目背景 刚立完Flag我就挂了WC和THUWC... 时间限制0.5s,空间限制128MB 因为Claris大佬帮助一周目由乃通过了Deus的题,所以一周目的由乃前往二周目世界找雪辉去了 由于二周目世界被破坏殆尽,所以由乃和雪辉天天都忙着重建世界(其实和MC差不多吧),Deus看到了题问她,总是被告知无可奉告 Deus没办法只能去三周目世界问三周目的由乃OI题... 三周目的世界中,因为没有未来日记,所以一切都很正常,由乃天天认真学习... 因为Deus天天问由乃OI题,所以由乃去学习了一下O…
题目大意:给出一棵n个点的树,每个点有一个运算符(与.或.异或)和一个数,支持两种操作,第一种修改一个点的运算符和数,第二种给出x,y,z,询问若有一个0~z之间的数从点x走到点y(简单路径),并且对路径上经过的点做对应的运算,最终最大能是多少.(n,操作数<=100,000,数字在[0,2^64)之间) 思路:洛谷改编NOI的一道神题,树剖/LCT维护若一开始全是0/全是1,经过一条链后各位会变成什么,用位运算合并信息,然后每个询问,从高位往低位贪心,每次取0和1中经过这条链后得到的较大值,若…
题目: 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…
传送门 题解 人生第一道由乃…… 做这题之前应该先去把这一题给切掉->这里 我的题解->这里 然后先膜一波zsy大佬和flashhu大佬 大体思路就是先吧全0和全1的都跑答案,然后按位贪心 我一开始想到的是每一次split,然后直接一个一个跑 后来发现时间复杂度肯定爆炸…… 看了看网上其他的,发现说的都不怎么清楚……结果硬是理解了好久才明白…… 先考虑一下LCT维护什么 定义$f0$为全0走过一条路径之后的答案,$f1$表示全1走过一条路径之后的答案 LCT需要维护的是splay中以x为根的子…
这个题目还是很好啊QWQ很有纪念意义 首先,如果在序列上且是单次询问的话,就是一个非常裸的贪心了QWQ这也是NOI当时原题的问题和数据范围 我们考虑上树的话,应该怎么做? 我的想法是,对于每一位建一个LCT来做,然后对一个点x维护,当前是0到链顶的结果,当前是1到顶的结果,当前是0到底的结果,当前是1到底的结果(之所以维护后两个是因为\(reverse\)操作的存在) 这样的话,对于每次询问,我就可以直接\(split\),然后贪心的询问. 不过很可惜,这个算法的复杂度是\(O(qklogn)\…
Luogu P2114/ACAG 0x01-5 起床困难综合征 本题的关键之处在于,题目中给定的三种位运算--AND,OR,XOR,在二进制下皆是不进位的.这说明每一位都是独立的,启发我们可以按位考虑. 因此我们从最高位向最低为依次考虑,每一位应该填$0$还是$1$. 因为题目中$m \leq 10^9$,所以最多有$30$位.($10^9<2^{30}-1$) 对于第$k$位(最低位为第$0$位),改为应该填$1$,当且仅当满足下列两个条件: 已经填好的更高位构成的数值加上$2^k (1<&…