
牛客寒假训练营
文章平均质量分 76
算法
沫刃起
计算机科学与技术22级
展开
-
2024牛客寒假算法基础集训营6
其他情况下可以进行贪心,将所有的节点赋值为1,然后根据红色节点的子节点权值和来修改该红色节点和它的任意一个白色节点。然后优先选大的(利用二分),然后选小的,选三个数,并减去,如果最后剩下的数大于0,那么无解。如果一个红点的儿子全是红点,那它必须也是3的倍数,不可能,这样是无解的,因为只能赋值1和2。利用二分,先将b升序,枚举a中的每一个数,在b中二分出离a最近的数,然后找到差值最小的。如果相乘不能为正,那么特判有没有0,如果有0,答案为0。求出数组a连续子段为正的最大,为负的最小,同理,对b。原创 2024-02-24 22:07:47 · 1291 阅读 · 0 评论 -
2024牛客寒假算法基础集训营5
有若干种物品,每种物品体积为bi,代价为ai,每种物品可以用无限次,问装满体积为n-1的背包最少代价是多少(这里一定可以刚好装满,因为可以花费p代价通知1个人,一定可以1个1个将剩余的补满)枚举第一行 ,然后看它左下,正下方,右下方,如果有相同的数字,那么只有一次就行,可以斜着断开或竖着断开,当然第一列和最后一列不能看正下方,因为并不能将连通块分成两块。如果n为奇数,从后往前,把第n-1个数变大 ,大到不能再大,不超过第n个数,同理,让第n-2个数,变大。贪心,从前往后枚举,能插入0就插入0。原创 2024-02-24 16:21:52 · 516 阅读 · 0 评论 -
2024牛客寒假算法基础集训营4
对于每个星号(x,y),以它为顶点,往左下方(x+1,y-1)和右下方(x+1,y+1)拓展,如果两个都为星号(分别记为l,r),说明有机会可以拓展下去,然后看预先记录的区间有没有包含此区间,如果包含了,说明[l,r]全是星号,那么产生一个等腰三角形。一堆石子x可以分成1和x-1,那么就枚举每堆石子,可操作次数为ai-1,总操作次数如果为奇数,那么gui赢,否则sweet赢。动态前缀和,一边遍历,一边看前面是否出现过sum,如果出现,说明以当前为右端点,有一个数组和为k的倍数,那么就断开,成为一组。原创 2024-02-19 18:00:41 · 773 阅读 · 0 评论 -
2024牛客寒假算法基础集训营1
然后,考虑最后或起来是比m小的值,那么肯定需要把某位1变成0,这样才能变小,但是想要能或上的数很多,那么1肯定要多,所以把该位后面的位全变成1,这样仍然是小于m的,是合法的,即为m1,如果m1或上一个数还是等于m1的话,那么就可以或上。可以用set存下所有位置,然后对于第一行的(1,y),看(2,y-1),(2,y),(2,y+1)有没有着火点,以此判断左半边和右半边有没有被堵死。首先,如果最后或起来的值刚好为m,肯定是合法的,如果m或上一个数还是等于m的话,那么就可以或上。数据比较小,直接暴力,dfs。原创 2024-02-03 17:55:59 · 776 阅读 · 0 评论