位运算求最值 学习笔记 (待补充QAQ)
没有什么前言?直接进入正题qwq
俩俩异或 求最值:
建trie树
O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return?
void Insert(int val)
{
;
<<;i>=;i>>=)
{
:;
if(!ch[x][to]) ch[x][to]=++node;
x=ch[x][to];
}
}
//建树,懒得说
int Que(int val)
{
,bs=;
<<;i>=;i>>=)
{
:;
]) x=ch[x][to^],bs+=i;
else x=ch[x][to];
}
return bs;
}
//查询,懒得说
;
;i<=k;i++)
{
Ans=max(Ans,Que(A[i]));
Insert(A[i]);//就想说下因为a^b b^a结果一样所以我们可以边查询边加点,over
}
cout<<Ans<<endl;
//对了这个并不是自己的代码鸭...有时间自己坐下典型题然后把自己代码放上来qwq
代码在这儿!
俩俩或 求最值:
还没懂,在网上也没找到什么学习笔记?只能硬啃今天考试的代码尝试理解QAQ等我理解了再回来写QAQ
ummm先推翻我的一错误想法,是这样的:
我选一个最大的,肯定不会更劣,所以我就选最大的然后再O(n)算一遍它和每个数的或起来的值就可以了
然后成功hack掉了:110010 100001 011110 此时显然选后俩更优不应该选max
所以还是乖乖学正解去趴qwq
;i<=k;i++) f[A[i]]=;//A[i]:原来的所有数
;p<=(<<);p<<=)
<<)-;i>=;i--);//如果能构出i 并且 i和p有交集 那么i^p就也能构造出来?ummm还是没懂x
;
;i<=k;i++)
{
;
<<;p>=;p>>=)
if(!(A[i]&p))if(f[bs|p]) bs|=p;
Ans=max(Ans,bs|A[i]);
}
cout<<Ans<<endl;
先放个保证正解的代码qwq
然而事实是这个代码我还是没懂啊...没办法先放上来然后有空想想在NOIp前回来填坑趴QAQ
俩俩并 求最值:
从高位到低走,若这位有>=2个1则可以是1然后暴力把所有这位不是1的数全删了,直接暴力走一遍
; i<=k; ++i)a[].push_back(atk[i]);
; p; --p)
{
;
; i<tot; ++i)) ++cnt;
); i<tot; ++i)) a[p-].push_back(a[p][i]);
; i<tot; ++i)a[p-].push_back(a[p][i]);
}
].size(), cnt=;
; i<tot; ++i)][i]&)++cnt;
)
{
cnt=;
; i<tot; ++i)
) break;
else
][i]&)
{
]=a[][i];
]&=a[][i];
++cnt;
}
}
]=a[][]&a[][];
printf(]);
还是比较好理解的趴我觉得?就懒得放注释了qwq
多个异或 求最值(还没学会qwq待补充):
线性基经典问题了,但是我线性基还没学会?等学会了把主要思想放线性基学习笔记里这里就放个模板代码趴qwq
位运算求最值 学习笔记 (待补充QAQ)的更多相关文章
- [note]一类位运算求最值问题
[note]一类位运算求最值问题 给定一些数,让你从中选出两个数a,b,每次询问下列中的一个 1.a and b的最大值 2.a xor b的最大值 3.a or b的最大值 神仙们都是FWT,小蒟蒻 ...
- STL库学习笔记(待补充QAQ
几百年前就说要学STL了然后现在还没动呢QAQ总算还是克服了懒癌决定学下QAQ 首先港下有哪几个vector listset map stack queue,大概就这些? 然后因为有几个基本操作每个都 ...
- C语言学习笔记之位运算求余
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. ...
- c语言小技巧:C语言学习笔记之位运算求余
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效 ...
- 通过位运算求两个数的和(求解leetcode:371. Sum of Two Integers)
昨天在leetcode做题的时候做到了371,原题是这样的: 371. Sum of Two Integers Calculate the sum of two integers a and b, b ...
- 用位运算实现四则运算之加减乘除(用位运算求一个数的1/3) via Hackbuteer1
转自:http://blog.csdn.net/hackbuteer1/article/details/7390093 ^: 按位异或:&:按位与: | :按位或 计算机系统中,数值一律用补码 ...
- 莫队学习笔记(未完成QAQ
似乎之前讲评vjudge上的这题的时候提到过?但是并没有落实(...我发现我还有好多好多没落实?vjudge上的题目还没搞,然后之前考试的题目也都还没总结?天哪我哭了QAQ 然后这三道题我都是通过一道 ...
- Python运算和和表达式 学习笔记
光荣之路Python公开课第二讲 Python运算符和表达式. 一 Python运算符 Python运算符包括 算术运算符,赋值运算符,位运算符,逻辑运算符,身份运算符,成员运算符. 1. 算术运算符 ...
- hdu 4336 Card Collector (概率dp+位运算 求期望)
题目链接 Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
随机推荐
- Splash jsfunc() 方法
jsfunc()方法可以直接调用 JavaScript 定义的方法,但是所调用的方法需要用双中括号包围,这相当于实现了 JavaScript 方法到 Lua 脚本的转换 function main(s ...
- 初步总结javascript中学习DOM之前的知识
嘿嘿,又到了周末时间,周六其实就是总结这周的学习的,记得周二周三刚开始接触javascript时间,还是不知道怎么学习的,就感觉找不到方向,那时间学习的只是总结了一些简单的定义或者是学习结构,今天就把 ...
- 深入理解Auto Layout 第一弹
本文转载至 http://zhangbuhuai.com/2015/07/16/beginning-auto-layout-part-1/ By 张不坏 2015-07-16 更新日期:2015-07 ...
- 《Lua程序设计》第6章 深入函数 学习笔记
在Lua中,函数是一种“第一类值(First-Class Value)”,它们具有特定的词法域(Lexical Scoping).“词法域”:函数可以潜逃在另一个函数中,内部的函数可以访问外部函数中的 ...
- 从Eclipse转移到IntelliJ IDEA的一点心得
IntelliJ使用指南—— 深入理解IntelliJ的Web部署逻辑 Intellij IDEA 部署Web项目,解决 404 错误 Intellij IDEA快捷键的使用 本文转载地址 本人使用I ...
- 【转载】6种.net分布式缓存解决方案
. 使用内置ASP.NET Cache (System.Web.Caching) : https://msdn.microsoft.com/en-us/library/system.web.cachi ...
- Python学习(24):Python面向对象(2)
转自 http://www.cnblogs.com/BeginMan/p/3191037.html 一.类 类就是一个数据结构,封装了数据和操作. 类的声明与函数的声明十分类似: class newC ...
- springboot---->springboot中的格式化(一)
这里面我们简单的学习一下springboot中关于数据格式化的使用.我以为你不是个好人,没想到你连个坏人都不是. springboot中的格式化 我们的测试环境是springboot,一个将字符串格式 ...
- 【linux系列】yum安装报错 no mirrors to try
执行以下命令去重新生成缓存 yum clean all yum makecache 更换源重新下载repo文件 重新生成缓存
- 解决Ubuntu刚装好的时候su命令密码错误的问题
Ubuntu刚安装后,在terminal中运行su命令会要求输入密码,然而无论输什么都会错,直接回车也是错,这因为root没有默认密码,需要手动设定.以安装ubuntu时输入的用户名登陆,该用户在ad ...