划水打了这场比赛,感觉签到题稍有点多,^_^,整体做起来挺舒服的。
北京信息科技大学第十五届程序设计竞赛(同步赛)
珂朵莉 牛客周赛专栏
珂朵莉 牛客小白月赛专栏
式子可以拆为 11145 * (10^5x + 10^(5x - 5) + ... + 10^5 + 1)
所以质数一定小于11145,然后巴拉巴拉一顿分析....
回到正题,因为3是11145的因子,且这个数是奇数
所以3就是天选之子。
如果模数较小,那么一定存在循环节(I题 带猫猫任务也涉及这块)。
所以模拟就行了,因为存在较小的循环节。
可以把 2 4 1 3 作为内核
然后n > 4按奇偶在两边拓展
大概是这样子 2n - 1, 2n - 3, ..., 9, 7, 5, || 2, 4, 1, 3, || 6, 8, 10, ..., 2n - 2, 2n
当n<4时,不存在这样的序列。
模拟题, 可以把ip地址转换为一个32位整数,C语言中有个类型,叫做union,感觉可以简化不少。
这边的思路,是拆位统计,如果所有的ip在i位都相等,则属于CIDR前缀。
属于简单,但是写起来稍头痛。
本质是区间LCM(最小公倍数)最小。
要区间lcm最小,那[l, r]一定是[1, k],这样时间复杂度为
如果小于,求得这个值,那该如何切入呢?
其实是小于等于k的所有质数(带次数)的乘积,这样就能减少时间复杂度。
欧拉筛, 枚举质数及其指数(质数总个数为
), 因此感觉整体接近
分组 + 前缀和预处理 + 滑窗
分组是为了枚举战队,然后模型就转变为
寻求数组中最大的子数组和
这就是经典问题了,DP/双指针都可以。
防AK题,忽视
防AK题,忽视
0-1背包的裸题
每个猫都是独立的,难点在于如何确定猫的最小代价
pos - left * x + right * y = 0 % like
这边有两种方式,至少我这边想到的。
所以整体上,
使用了“珂朵莉树”
我对这个数据结构定义有点模糊
大概的意思,
因为set(java的treeset)支持lower_bound/upper_bound,所以添加和查询相对容易,满足mex操作即可。
当然这题也可以借助
瞄了下官解,好像解法更优,用set存 不存在的数,如果添加就remove,查询就是find first.
LIS的变体
同列的值只能取一个,所以难点其实在这里
如何规避这个问题,可以对同列从大到小进行遍历,然后进行常规的LIS操作
这样就可以得到解了。
从大到小,这个trick技巧,完美避免干扰。
官解说,灵感来自某一场力扣周赛,其实那题我印象很深,为啥呢?因为那题我看错题了,看错的题意就是这个题的弱化版,T_T.
和M一起讲
异或的技巧,因为每个值,参与次数 n - 1次
如果n-1为偶数,那结果一定为0
如果n-1位奇数,那每个值参与异或一次
所以最终结果为 数组整体的异或和。
原神,启动!