位运算:DAY1-3
声明:抽风有点着急看这个位运算,所以今天提前更了。
先介绍两种y总说很可能用的位运算
一、第k位是否为一:
n >> k & 1;
将n>>k为然后判断最后一位是否为1。
二、从最后一个1开始的数字。(lowbit)
x & -x;
具体公式原理为:
x & -x
=x & (~x + 1)
举例子x = 1101……100………0
则~x = 0010……011……1
~x + 1 = 0010……100……0
x & (~x + 1) = 100……0
请看题目: ACWING.801
本题需要用到lowbit
具体做法为每读入一个数我们就把这个数从头到尾便利一遍,然后如果是1就ans++。
法一:
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n --)
{
int x;
cin>>x;
int s = 0;
for(int i = x; i ; i -= i & -i/*lowbit*/) s ++;//每次求出下一个1的位置然后循环到那里s++。
cout << s << ' ';
}
}
法二
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n --)
{
int x;
cin>>x;
int s = 0;
while(x != 0)
{
x -= x & -x;//每次求出lowbit(最后一个1)然后减去。
s ++;
}
cout << s << ' ';
}
}
妈耶,两句话就总结完了
写的粗糙不准备续更嘛qwq
不了,要更新的了,后面有续集哦
位运算有续集嘛qwq
有啊,提高课有的,
大概比这个难3-4倍
那要等到啥时候嘞。。
1.5个月
白期待了QnQ
快的话半个月
因为其实这个比DDP简单
续集快来了
草,续集可还行(
我自己都整理完了(
hhh,只是介绍一下在计算机里二进制的基本实现原理
等出动态dp的
好的!
你说的是提高课的吧。那个得有一会。基础课的Dp争取半个月之内!
提高课一个月之内应该会讲到,
因为我觉得其实有些提高课里的东西很简单(比如Dp和树状数组),准备提前学下,然后发分享~好!
我会先更新里面的Dp和树状数组以及并查集
(这三个巨简单 吗?)加油 !
我想看LCT(真的)
???
我不会
要是真要的话大概2.5个月。
我想看
最小费用可行流
(也是真的)额
啊啊啊出来了nice
我赶工了一晚上。。。難
O,Orz
我看赞那块被您刷屏了
明天更新区间合并以及KMP!
这个赶的很急所以没有引用y总名言。