摘要:
A. Guess the Maximum 因为\(i < j\),所以所有的\([i, j]\)区间中都至少包含两个相邻元素,所以只要求出所有相邻元素中较大值的最小值即可。 int n; int a[N]; void solve() { cin >> n; int min_v = 1e9 + 1; 阅读全文
摘要:
A. Turtle and Piggy Are Playing a Game 首先\(p\)选\(2\)的话除得最慢,得的分多。考虑二进制表示,如果\(x = (1000000000)_{bin}\),则每次除以\(2\)都是相当于右移一位,除完之后仍然是\(2\)的倍数,变成\(1\)的步数就是把 阅读全文
摘要:
D. Masked Popcount 按位考虑 + 排列组合 考虑\(M = 10110111001\) \(i\)从\(0\)循环到\(N\) 因为求的是所有\(i \& M\)的二进制表示中1的个数,所以可以按位考虑,考虑有多少个\(i\)的\(bit\)位与\(M\)的\(bit\)位\(\& 阅读全文
摘要:
int n; int ans = 0; PII a[N]; // 定义priority_queue的比较函数 struct cmp { bool operator() (PII a, PII b) { return a.second > b.second; } }; priority_queue<P 阅读全文
摘要:
E. Divide 首先,将一个数字\(x\)不断进行\(/2\)操作最终会变成\(0\), 这个操作只会执行\(log(x)\)次。因此可以将原数组\(a_1, a_2, ..., a_n\)分解为\(a_1, a_1/2, a_1/4, ..., 0, a_2, a_2/2, a_2/4, .. 阅读全文
摘要:
题目大意: 求区间\([l, r]\)中有多少正整数满足\(\phi(\phi(n)) = \phi(n) - 1\),其中\(\phi\)为欧拉函数。 解: 设\(y=\phi(n)\),则上式变为\(\phi(y) = y - 1\),易证\(y\)为质数(注意\(\phi(1) = 1\),\ 阅读全文
摘要:
注:此教程针对的是UEFI+GPT分区表的环境下进行安装,目的是安装Windows10+ArchLinux双系统,且是单硬盘安装,本人的本地环境是intel + nvidia。 参考资料:https://www.youtube.com/watch?v=JRdYSGh-g3s 安装前确保 本地已经安装 阅读全文
摘要:
C++算法模板 基础算法 排序 快速排序 void quickSort(int q[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ 阅读全文
摘要:
部分代码define了long long,请记得开long long A. Calandar 把年份、月份、单个的天数全都乘以对应的系数转化成单个的天数即可,注意最后的结果有可能是负数,要转化成正数。发现技巧是:(ans % 5 + 5) % 5。? 还有注意不能这样写,答案不正确。或许是因为取模运 阅读全文
摘要:
莫队 基础莫队 本质是通过排序优化了普通尺取法的时间复杂度。 考虑如果某一列询问的右端点是递增的,那么我们更新答案的时候,右指针只会从左往右移动,那么i指针的移动次数是$O(n)$的。 当然,我们不可能让左右端点都单调来做到总体$O(n)$。 考虑对左端点进行分块。 莫队排序: 左端点按照分块的编号 阅读全文