上一页 1 2 3 4 5 6 7 ··· 65 下一页
摘要: 原题链接 题解 根据哥德巴赫猜想,任意大于2的偶数都可以表示为两个质数的和 因此,对于大于二的偶数,总有办法拆成两个质数,也就是只需要交两元钱 如果是质数,只用交一元钱 如果一个数减二后是质数,也只需要交两元 否则交三元 code #include<bits/stdc++.h> using name 阅读全文
posted @ 2024-08-13 20:38 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 如果在升区间内包裹降区间,那么这个降区间是不合法的 如果两个升区间有重叠,那么这两个升区间将合并成一个大的升区间 这种合并的操作让我们想到了并查集,我们用并查集维护升区间,如果一个降区间内的点不属于一个集合,代表不存在一个升区间包裹了这个降区间 yes or no的问题解决了,如何构 阅读全文
posted @ 2024-08-13 00:26 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 比较套路化的处理,将后半部分翻转过来乘二,查看前半部分是否有匹配的地方 阅读全文
posted @ 2024-08-12 23:46 纯粹的 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 分类讨论 1.如果 \(b\) 是 \(a\) 的倍数,答案为 \(b\) 2.否则,至少要经过两次转换,而 \(a\) 转换一次最少要花 \(a\) , \(b\) 转换一次最少要花费 \(b\) ,所以,如果 \(a,b\) 有公因子,那么只需要两次转换 \(a+b\) 3.否则 阅读全文
posted @ 2024-08-12 23:29 纯粹的 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 方法1.遍历所有子集,查看是否合法 \(O(2^n\cdot n)\) 方法2:观察到 \(a_i\leq 70\) ,而七十内的质数有19个,可以状态压缩dp code 阅读全文
posted @ 2024-08-12 15:10 纯粹的 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 方法1: 每次询问,每次遍历 \(O(q\cdot n\cdot \log n)\) 方法二:利用大随机数代表每个数,异或哈希代表每个数出现的状态 \(O(q+n\cdot\log n)\) code #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2024-08-12 00:06 纯粹的 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 多想几种暴力 1.遍历所有数对: \(O(n^2)\) 2.求有多少数对其乘积为平方数 \(\to\) 求有多少平方数能被数对乘积: \(O(n^2)\) 3.如果两个数的乘积为平方数,代表他们的质因数,要么都是奇数,要么都是偶数 : \(O(?)\) 4.如果 \(a \times 阅读全文
posted @ 2024-08-11 22:53 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 比较套路性的题 由于 \(k\geq 10\) ,所以我们可以建立分层图,第 \(i\) 层的点代表使用 \(i-1\) 次免费航线后到达该点的最小花费 阅读全文
posted @ 2024-08-11 22:02 纯粹的 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 原题链接 分析 很逆天的一道题 设 \(dp[i][j]\) 为到达第 \(i\) 个点的时刻 \(t\) 且满足 \(t\mod k=j\) 的最小 \(t\) 则有答案为 \(dp[n][0]\) 更新也很简单,设当前点为 \(u\),当前时间为 \(t\) 需要遍历的下一个点 \(v\),则有 阅读全文
posted @ 2024-08-11 20:28 纯粹的 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 暴力想法: 每次枚举每次查询 \(O(q\cdot n)\) 进阶想法:对查询按 \(r\) 排序,用树状数组维护 \([1,r]\) 内,该范围内每个数最后一次出现的位置 code #include<bits/stdc++.h> using namespace std; /* #d 阅读全文
posted @ 2024-08-11 17:09 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 65 下一页