基本算法
文章平均质量分 57
Weach
学生
展开
-
2020 Jiangsu Collegiate Programming Contest D Delete Prime --分块+二分
2020 Jiangsu Collegiate Programming Contest D Delete Prime#include<bits/stdc++.h>#include <unordered_map>using namespace std;template<class...Args>void debug(Args... args) {//Parameter pack auto tmp = { (cout << args <&l原创 2021-08-09 11:11:58 · 179 阅读 · 0 评论 -
快速幂学习笔记
快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在 Θ(logn)\Theta(\log n)Θ(logn) 的时间内计算 ana^nan 的小技巧,而暴力的计算需要 Θ(n)\Theta(n)Θ(n) 的时间。而这个技巧也常常用在非计算的场景,因为它可以应用在任何具有结合律的运算中。其中显然的是它可以应用于模意义下取幂、矩阵幂等运算,我们接下来会讨论。算法描述计算 aaa 的 nnn 次方表示将 nnn 个 aaa 乘在一起:an=a×a⋯×a⏟n 个&原创 2021-08-25 21:08:31 · 74 阅读 · 0 评论 -
2021 Xinjiang Provincial Collegiate Programming Contest I. chino with mates --二分
#include<bits/stdc++.h>#include <unordered_map>using namespace std;template<class...Args>void debug(Args... args) {//Parameter pack auto tmp = { (cout << args << ' ', 0)... }; cout << "\n";}typedef long lon原创 2021-08-01 11:24:14 · 366 阅读 · 0 评论 -
手写进制转换
任意2-36进制数转化为10进制数//任意2-36进制数转化为10进制数int Atoi(string s, int radix){//s是给定的radix进制字符串 int ans = 0; for (int i = 0; i < s.size(); i++){ char t = s[i]; if (t >= '0' && t <= '9') ans = ans * radix + t - '0'; el原创 2021-07-26 11:23:00 · 218 阅读 · 0 评论 -
AcWing 146. 序列--堆,多路归并
AcWing 146. 序列#include<bits/stdc++.h>using namespace std;template <typename T> void debug(string s,T x) { cout <<s<< "=" << x << "\n"; }typedef long long ll;typedef unsigned long long ull;typedef pair<ll, ll>原创 2021-04-27 20:25:58 · 153 阅读 · 0 评论 -
小圆前辈的数组--前缀和
#include<bits/stdc++.h>using namespace std;template <typename T> void debug(string s,T x) { cout <<s<< "=" << x << "\n"; }typedef long long ll;typedef unsigned long long ull;const ll N = 1e6 + 5;const ll MOD = 1e9原创 2021-04-25 21:15:57 · 99 阅读 · 0 评论 -
最佳牛围栏--二分答案
题目#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N = 1e5+5;ll cows[N];double sum[N];ll n, m;bool check(double avg) { for (ll i = 1; i <= n; i++)sum[i] = sum[i - 1] + cows[i] - avg; double minv = 0; for原创 2021-04-16 21:38:24 · 114 阅读 · 0 评论 -
前缀和与差分
前缀和可以在O(n)时间统计和修改,在O(1)时间内查询统计任意区间之和;差分可看作前缀和的“逆运算”,可在O(1)时间操作任意区间;一.前缀和1.一维前缀和预处理O(n):s[i]统计a[1…i]的值;查询O(1): s[r]-s[l-1];2.二维前缀和例题初始化O(nm):for (ll i = 0; i < n; i++) { ll x, y, t; cin >> x >> y >> t; sum[++x][++y] += t; w原创 2021-04-16 20:08:38 · 70 阅读 · 0 评论