位运算
Cichard
这个作者很懒,什么都没留下…
展开
-
codeforces1303D 贪心+位运算
1303D 1900 题意:给你一个数n和长度为m的数组,同时这m个数保证都是2的幂次方,问你是否可以通过对m中的数除2的操作,然后相加得到m,如果能打印最小的操作数,如果不能打印-1 思路:从题目中2的幂次方可以联想到这是一个和位运算有关的题目,如果分别把n和m中的数变成二进制来计算,从低位到高位,如果m中的数在二进制,该位为0,而n为1,那么就意味着,m中这个位要向前面的取一,即a[pos]–,而为什么是从低位到高位,而不是高位到低位,因为我们的低位是首先要满足的,而你要最优的操作数,如果从最高位开始,原创 2020-09-16 09:21:59 · 125 阅读 · 0 评论 -
codeforces 1383B 位运算
1383B 1900的题 题意:给你n个数,得分为你选的数的异或和,现在小明和小红进行博弈,小明先手,两人的选择都是最优的,问小明能否win 思路:我的想法是看了标程之后做出来的,首先对这n个数进行取异或和ans,如果ans=0那么就意味着,无论两人怎么取,最后的得分都是一样的。然后讨论ans!=0的情况,我们要知道对位的运算,肯定是你取到了最高位的你就肯定获胜了,所以对我们得到的ans进行位运算,从高位开始,如果有高位不等于0,那么对所有的数进行当前所在的位运算,因为只有当前位能对最终的结果造成影响,用一原创 2020-08-07 17:20:37 · 260 阅读 · 0 评论