
位运算
基础算法---位运算
(xsj)
模拟只会猜题意
贪心只能过样例
DP一般看规律
数论只会gcd
计算几何瞎暴力
图论只会匈牙利
数据结构没学过
字符串只能干输入
展开
-
acwing 85 不用加减乘除做加法
题面 题解 代码 class Solution { public: int add(int num1, int num2){ while(num2){ int sum = num1 ^ num2; //不进位加法 int carry = (num1 & num2) << 1; num1 = sum; num2 = carry; }原创 2021-04-14 16:21:41 · 93 阅读 · 0 评论 -
剑指 offer acwing 26 二进制中1的个数 (位运算)
题面 题解 int 和 unsigned int 的转换 int n = -2; //二进制表示不变,值得含义发生变换,如果是有符号,还表示-2,如果是无符号,表示一个很大的数 unsigned int c = n; //4294967294 int b = c; //-2 二进制位运算 //返回x的最后一位1 int lowbit(int x) { return x & -x; } //求n的第k位数字(n是二进制数) n >> k & 1原创 2021-03-17 11:25:51 · 88 阅读 · 0 评论 -
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南) G Xor Transformation
题面 题意 给你一个x和y,最多通过5次,使得x = y ,每次 x = x ^ d (d>=0 && d <= x) 题解 x ^( x ^ d) = d d ^ ( d ^ y) = y 所以我们只需要操作两次即可 ,第一次异或一个( x ^ d)得到 d , 第二次异或 一个 ( d ^ y)得到 y 接下来就是求出一个 d ,使得 x ^ d 要小于等于 x 并且 d ^ y 要小于 d ,我们可以找和x(二进制)相同的位数全为1的数,那么异或之后一定小原创 2021-02-06 16:13:35 · 214 阅读 · 1 评论