摘要:
目录题面链接题意题解代码 题面 链接 B. Equalize 题意 给一个数组\(a\),然后让你给这个数组加上一个排列,求出现最多的次数 题解 赛时没过不应该。 最开始很容易想到要去重,因为重复的元素对于答案是没有贡献的。 去重后排序。,然后维护一个极差小于n-1的区间,,区间长度就是可能的答案。 阅读全文
摘要:
目录题目链接题意题解代码 题目链接 C. Digital Logarithm 题意 给两个长度位\(n\)的数组\(a\)、\(b\),一个操作\(f\) 定义操作\(f\)为,\(a[i]=f(a[i])=a[i]\)的位数 求最少多少次操作可以使\(a、b\)两个数组变得完全相同 题解 性质: 阅读全文
摘要:
如果在遍历set的时候去erase很容易出事 事故代码: multiset<int>a; for(auto it=a.begin();it!=a.end();it++){ a.erase(it); } 原因:我们删除了it之后指针不知道下一个位置应该去哪了,就寄。 两种比较正确的写法是 multis 阅读全文
摘要:
很意思的一道构造题 题意:给一个\(n、k\),让构造长度为n的数组满足,子数组为整数的个数为k个,负数的为\(k-(n+1)* n/2\),每个数的范围为\([-1000,1000]\) 这种构造题可以考虑就是前一段可以一直用一样的、最小的。 我们观察可以发现\(k+k-(n+1)* n/2= ( 阅读全文
摘要:
这道题目比较经典,或者说这种思想比较经典。 这种筛法的思想。 我们正着想对于每一个\(n、 n-1、n-2、...、2、1\)都分解一遍质因数显然是来不及的时间复杂度达到\(O(n \sqrt{n})\) 我们考虑对于每一个1e6以内的质因数的个数 跑了一下程序是\(78498\)个 素数定理告诉我 阅读全文
摘要:
最开始写了一发贪心wa了,然后这种选和不选的组合优化问题,一般是考虑动态规划 \(dp[i][0]:\)表示第i个数不选的最大值 \(dp[i][1]:\)表示第i个数选的最大值 考虑转移: \(dp[i][0]=max(dp[i-1][1],dp[i-1][0])\) \(dp[i][1]=dp[ 阅读全文
摘要:
目录埃氏筛线性筛 埃氏筛 埃氏筛是一种筛素数的方法,埃氏筛的思想很重要,主要是时间复杂度 朴素的埃氏筛的时间复杂度是\(O(nlogn)\) 这个复杂度是调和级数 vector<int>p; int vis[N]; void solve() { rep(i,2,n){ if(!vis[i]) p.p 阅读全文
摘要:
目录容斥原理的引入从集合的角度考虑推广例子不被2、3、5整除的数错排问题求不定方程的解Devu和鲜花 容斥原理的引入 从一个小学奥数问题引入: 一个班级有50人 喜欢语文的人有20人 喜欢数学的人有30人 同时喜欢语文数学的人有10人。 问题: 两门都不喜欢的有多少人 至少喜欢一个的有多少人 至少喜 阅读全文
摘要:
A. Watchmen 当欧几里得距离和曼哈顿距离相等时,\(x1==x2||y1==y2\) 这两个条件满足其一。这和容斥原理一样,至少选择一个的条件。 我们可以计算xi,以及小于i之前的这些,这样可以保证只计算一次。 然后容斥一下计算答案。 #include <bits/stdc++.h> #d 阅读全文
摘要:
目录ABCDEF A #include <bits/stdc++.h> #define int long long #define rep(i,a,b) for(int i = (a); i <= (b); ++i) #define fep(i,a,b) for(int i = (a); i >= 阅读全文