这道题思路很简单,我们拆分考虑每一个二进制位
由于有些二进制位需要饲料有些不用,我们就直接把所有动物的编号按位或起来,并得到饲料列表(其实饲料列表不用计算,记录一下对应的位就好了。
从高往低考虑每一位,若这一位已经买过饲料,或者指南上面没有提到需要这一位买饲料,那么这一位就是任选的,计任选的位有个
把所有任选的位组合, 可以得到 个答案
再减去原有的 n 个就可以了
NOIP2020微信步数
发表于
更新于

直接从每个点开始走肯定超时,也没有什么办法可以优化
关键的是整体思路,让所有点一起走。
最开始,所有点塞满了整个空间,是一个k维的超立方体
然后,所有点一起移动,显然也是一个k维超立方体。
于是就一直维护这个超立方体的边界。
-1特判就是看一个点在一个维度所能到达的最左与最右的差值是否小于这个维度上限。
NOIP2020移球游戏
发表于
要将所有同种颜色的球移到同一根柱子上, 所能进行的操作只有把一个柱子上的球移动到另一个柱子上。
关键操作:
借助空栈C和满栈B, 把所有A的x移动到顶
1 | int excute(stk &A, stk &B, stk &C, int x) |
想到了这一点就可以做出了
一种可行的方法是对着样例2模拟
zroicspday3T2
发表于
CSP 7 连测 day3 T2 总结
PS: 此题就是点灯游戏的最小步数问题
算法很简单,由于第一行确定后,下面的怎么放就确定了
于是,就只要枚举第一行,就可以确定以后的行,然后判断有没有成功就可以了。
时间复杂度 O(2nn2) , n≤17 因此可以过
当时在赛场上面没有考虑到点当前行会影响下一行,只得了10分.
满分代码:
1 | #include <bits/stdc++.h> |
zroi-8-15-total
发表于
zroi-8-13
发表于
更新于
本篇博文主要讲解一些数论相关知识。
zroi-8-12
发表于
更新于
zroi-8-10
发表于
更新于
zroi-8-09
发表于
更新于
day22-part2-集合幂级数-8-07
发表于
更新于