摘要: 原题链接 题解 1.如果没有不能表示出 \(k\) 的限制,那么数组由一众二次方构成 2.对于小于 \(k\) 的数,考虑 \(k\) 的最高位 \(i\) 由于 \([0,i-1]\) 最多为 \(2^i-1\) 所以可以考虑添加一个 \(k-2^i\) 来表示完 \([1,k-1]\) 内所有的 阅读全文
posted @ 2024-07-10 22:48 纯粹的 阅读(29) 评论(0) 推荐(0)
摘要: 原题链接 题解 \(ans=\sum_{i=1}^{n} i*sum[i]\) 其中 \(sum[i]\) 为最大公约数为 \(i\) 的对数 令 \(f[i]\) 为最大公约数为 \(i\) 的倍数的对数 则有 \(sum[i]=f[i]-sum[2i]-sum[3i]-...-sum[ki]\) 阅读全文
posted @ 2024-07-10 17:50 纯粹的 阅读(16) 评论(0) 推荐(0)
摘要: 原题链接 题解 \(a,n\) 互质,所以 \(d(n·a)=d(a)d(n)\) ,即 \(n\ mod\ d(n)==0\) 是否成立。(总是能构造出一与 \(n\) 互质,且 \(d(a)\) 任意的 \(a\) ) 由于 \(n\) 会很大,所以我们将 \(n\) 质因子分解,\(n=p_1 阅读全文
posted @ 2024-07-10 17:16 纯粹的 阅读(12) 评论(0) 推荐(0)
摘要: 原题链接 题解 每次操作都会是排序后的元素差值减一,所以答案为初始序列最大值加上最大差值 用STL的multiset维护差值和序列值 注意特判n=1时没有差值 code #include<bits/stdc++.h> #define ll long long using namespace std; 阅读全文
posted @ 2024-07-10 16:41 纯粹的 阅读(13) 评论(0) 推荐(0)
摘要: 原题链接 题解 仔细研究样例,发现扣除的娱乐值与看多少电影无关,只与看的最后一部电影是什么时候看的有关 code #include<bits/stdc++.h> #define ll long long using namespace std; ll solve() { ll n,m,d; cin> 阅读全文
posted @ 2024-07-10 15:34 纯粹的 阅读(11) 评论(0) 推荐(0)
摘要: 原题链接 题解 \(\gcd(a+x,m) = \gcd((a+x)mod\ m,m)\) 由于 \(x\in[0,m-1]\),所以 \((a+x)mod\ m\) 一定能遍历完 \([0,m-1]\) 里的所有数 所以 \(\gcd(a+x,m)\) 等价于 \(\gcd(x,m)\) 接下来, 阅读全文
posted @ 2024-07-10 14:24 纯粹的 阅读(19) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.一定是一部分怪物被水属性咒语打死,另一部分被火属性咒语打死 2.遍历所有“部分”,然后看各部分被水属性咒语打死需要累积多少秒的水咒语 这里用到了背包数组,(1e6·100)也可以? code #include<bits/stdc++.h> #define ll long long 阅读全文
posted @ 2024-07-10 12:25 纯粹的 阅读(22) 评论(0) 推荐(0)
摘要: 原题链接 题解 不要犯复制黏贴的错误 code #include<bits/stdc++.h> #define ll long long using namespace std; struct op { ll id,len; }; ll a[105][105]; ll dp[105][105][15 阅读全文
posted @ 2024-07-10 11:59 纯粹的 阅读(20) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.如果两个障碍物之间的助跑距离不足,那么这两个障碍物只能一次跳过去 2.由于可以自由选择跳跃距离,所以我们可以在第一个障碍物之前起跳,最后一个障碍物之后落地,这样留给助跑的距离就会多 3.小细节注意一下 code #include<bits/stdc++.h> #define ll 阅读全文
posted @ 2024-07-10 11:10 纯粹的 阅读(21) 评论(0) 推荐(0)