
总结
Aurora141592
这个作者很懒,什么都没留下…
展开
-
洛谷NOIP提高组训练吊打记录(动态规划)
没错,是我被吊打。洛谷 – P1970 – 花匠(递推dp)https://www.luogu.org/fe/problem/P1970被NOIP普及难度的dp吊打?我咋那么菜?int a[maxn], dp[maxn], dp2[maxn];//dp:波峰,dp2:波谷int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 1; i <= n;原创 2021-01-14 12:34:48 · 202 阅读 · 0 评论 -
[计算几何]极角排序
Amphiphilic Carbon Moleculeshttp://fastvj.rainng.com/contest/304637#problem/A保存个极角排序的板子。极角排序有两种。一种是atan2,速度快,但是有精度误差。另一种是叉积,速度慢但是只用进行整数运算。注意用叉积极角排序的时候,要把上半区和下半区分开来排,而且每个点所在的半区要唯一。struct point{ int x, y, c; double rad;//atan2(y, x) bool ope原创 2021-01-14 12:28:27 · 193 阅读 · 0 评论 -
final – 概率期望
http://codeforces.com/gym/101606#include<stdio.h>double dp[405][405];int main(){ int n,k; scanf("%d%d",&n,&k); //dp[i][j]翻i次j个朝上的概率 //翻i次最多只有min(i, n)个朝上 //当朝上的已经等于n了,再翻就是选一个朝上的翻了 dp[0][0]=1; for (int i=1;i<原创 2021-01-09 09:45:28 · 67 阅读 · 0 评论 -
知识点总结
其他技巧:莫队、前缀和、栈、队列、分块、(st表)、差分、(博弈)、倍增、离散化、哈希、(随机)、(FFT)、(NTT)、(FWT)、位运算、(构造)、二分、三分网络流(模板基本上齐了):字符串:trie、(AC自动机)、KMP、manacher、(SA)、(SAM)动态规划:背包、环形、数位、区间、(插头)、树形、概率、优化搜索:DFS、BFS、迭代加深、双向DFS、剪枝、记忆化搜索、启发式搜索数论:整除、素数、gcd与lcm,扩欧、同余、逆元、CRT、积性函数、线性筛、莫比乌斯反演、杜教筛组原创 2021-01-08 13:58:14 · 106 阅读 · 0 评论 -
[组合数学]组合数有关的公式及常用求和
O(logn)求组合数fac[maxn] = {1, 1, 2};ll C(int n, int m){return (fac[n] * quickpow((fac[m] * fac[n - m]) % mod, mod - 2)) % mod;}for (int i = 3; i < maxn; ++i) fac[i] = (i * fac[i - 1]) % mod;O(n^2)递推求组合数for(int i = 0; i < maxn; ++i){ CC[i][0] =原创 2021-01-08 13:55:00 · 2329 阅读 · 0 评论 -
final-数论(积性函数、线性筛、杜教筛、莫比乌斯反演)
数论分块:(\lfloor \frac n i \rfloor)最多只有(2 · \lfloor \sqrt n \rfloor)个取值。for(ll l = 1, r; l <= n; l = r + 1) { r = n / (n / l); res -= (r - l + 1) * S(n / l);}常见的积性函数:φ(n) -欧拉函数μ(n) -莫比乌斯函数,关于非平方数的质因子数目gcd(n,k) -最大公因子,当k固定的情况d(n) -n的正因子数目σ(原创 2021-01-06 21:24:37 · 128 阅读 · 0 评论 -
final-计算几何
判断是否是整数:fabs(x – (int)x) > epsdouble精度1e9,long double精度1e18实数比较:eps为精度,sign返回正负,cmp返回大小typedef double db;const db eps=1e-6;const db pi=acos(-1);int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0;}int cmp(db k1,d原创 2021-01-06 21:23:44 · 150 阅读 · 2 评论 -
[计算几何]模板
#define mp make_pair#define fi first#define se second#define pb push_backtypedef double db;const db eps=1e-6;const db pi=acos(-1);int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0;}int cmp(db k1,db k2){return sign原创 2021-01-06 21:13:29 · 64 阅读 · 0 评论 -
[数据结构]单调栈
https://cn.vjudge.net/contest/244153#problem/I最经典的,求最大长方形面积#include<stdio.h>#include<math.h>#include<algorithm>#include<stack>#define maxn 100005#define inf 0x3f3f3f3f#define eps 1e-6using namespace std;typedef long int ll原创 2021-01-04 10:36:12 · 74 阅读 · 0 评论 -
[数论]数的分解
约数枚举vector<int> vi;void dis(int x){ for (int i = 1; i * i <= x; ++i){ if (x % i == 0){ vi.push_back(i); if (i != x / i) vi.push_back(x / i); } }}整数分解map<int, int> mii;void dis(int x){原创 2021-01-04 10:35:26 · 136 阅读 · 0 评论 -
[算法]矩阵快速幂
注意:如果有n的k次方,那就把n的k次方写成k个n相乘,然后补k行k列就好了。求(a_n = a_{n – 1} + 2 * a_{n – 2} + n^3)首先我们需要知道立方和完全展开式:((a – b)^3 = a^3 – 3 a^2 b + 3 a b^2 – b^3)然后配就行了((i + 1)^3 = i^3 + 3 i^2 + 3 i + 1)。有一个要注意的地方是,最后要拿转移矩阵的n次方的第一行乘上初始列才是答案。(推完之后发现这矩阵好像杨辉三角形,如果有更高次项应该能按杨辉三角原创 2021-01-03 14:39:13 · 227 阅读 · 0 评论 -
[算法]LCS及输出LCS
最长公共子序列https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1006#include<bits/stdc++.h>using namespace std;typedef long long ll;char a[1005], b[1005];//pos[i][j]的三个值1,2,3分别表示左、左上和上//pos记录当前LCS是从哪个点过来的,如果不等于2说明当前值是继承自上一个相等的点//所以如果不等于原创 2020-12-31 09:56:19 · 465 阅读 · 0 评论 -
[黑科技]线性递推板子
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <vector>#include <string>#include <map>#include <set>#include <cassert>using namespace std;#define rep(i,a,n) fo原创 2020-12-31 09:54:42 · 88 阅读 · 0 评论 -
[黑科技]pb_ds库(G++)
This is a library of policy-based elementary data structures: associative containers and priority queues. It is designed for high-performance, flexibility, semantic safety, and conformance to the corresponding containers in std and std::tr1 (except for som原创 2020-12-31 09:52:36 · 479 阅读 · 1 评论 -
[数据结构]树状数组
单点修改区间和查询#include<bits/stdc++.h>using namespace std;typedef long long ll;#define maxn 500005int n;ll a[maxn];ll query(int x){ ll sum = 0; while(x){ sum += a[x]; x -= x & -x; } return sum;}void add(int x,原创 2020-12-30 13:01:26 · 55 阅读 · 0 评论 -
[图论]最小生成树
kruskal算法#include<bits/stdc++.h>#define maxn 10005struct edge{ int u, v, c;}g[maxn];int par[maxn];int find(int x){return par[x] < 0 ? x : par[x] = find(par[x]);}bool comp(edge a, edge b){return a.c < b.c;}int main(){ int n, m;原创 2020-12-30 12:59:48 · 163 阅读 · 0 评论 -
[图论]最短路径
如果边权都是1直接bfs求最短路即可。如果边权是1/0,那么就把0在队头插入即可,相当于跳过了这条边,时间复杂度O(m)。SPFA:就是把优先队列改成队列,然后while改成下面的就可以了,松弛操作和dijkstra一样,就是多了个used数组,SPFA可以处理有负权边的最短路。while(!qi.empty()){ int u = qi.front(); qi.pop(); used[u] = false; for (int i = 0; i < g[u].size();原创 2020-12-29 14:01:02 · 99 阅读 · 0 评论 -
[数据结构]线段树
区间修改区间和:#include<stdio.h>#include<algorithm>#define maxn 50005using namespace std;ll a[maxn << 2], lazy[maxn << 2], n;void pushup(int k){ a[k] = a[k << 1] + a[k << 1 | 1]; }void pushdown(int k, int m){ if (la原创 2020-12-29 13:59:33 · 65 阅读 · 0 评论 -
[动态规划]动态规划的优化
目前知道四种方法:单调队列优化,树状数组优化,四边形不等式优化,dp套dp优化。有时间来个总结。还有啥决策单调性啊,保存最优值啊。还有改变dp对象啊。原创 2020-12-29 13:58:15 · 180 阅读 · 0 评论 -
[动态规划]区间型dp
区间型dp:for (int i = 1; i <= n; ++i) scanf("%d", &w[i]);for (int l = 1; l < n; ++l){//枚举区间长度,隔板在右。 for (int i = 1; i + l <= n; ++i){//枚举区间起点,满足i + l <= n //区间右端点直接就是i + l int j = i + l; dp[i][j] = 0x3f3f3f3f;//初始原创 2020-12-29 13:57:40 · 119 阅读 · 0 评论 -
[技巧]高精度
//高精度乘法string mul(string a,string b){ string s; int na[maxn]={},nb[maxn]={},nc[maxn]={},La=a.size(),Lb=b.size(); for(int i=La-1;i>=0;i--) na[La-i]=a[i]-'0'; for(int i=Lb-1;i>=0;i--) nb[Lb-i]=b[i]-'0'; for(int i=1;i<=La;i++)原创 2020-12-29 13:56:42 · 97 阅读 · 0 评论 -
[技巧]输入输出外挂
正整数fread版:inline char nc(){ //快的一批的fread快读 static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline int read(){ char ch=nc(); int sum=0; while(!(ch>='0'&原创 2020-12-29 13:56:02 · 87 阅读 · 0 评论 -
[技巧]编译器自带的函数
注意:set/map自带的iterator lower_bound (const value_type& val);函数比下面这个块十倍template <class ForwardIterator, class T, class Compare> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T&原创 2020-12-29 13:53:53 · 220 阅读 · 0 评论 -
ACM单词
set 集合grid 网格coordinate 坐标rectangle 矩形polygon 多边形convex 凸parallelogram 平行四边形circle 圆形clockwise 顺时针counterclockwise 逆时针loop 环,循环maximize 最大化maximum 最大量minimal 最小的probability 概率independent 独立that is 就是说exactly 确切地integer 整数real 实数positive原创 2020-12-28 14:08:04 · 126 阅读 · 0 评论 -
[结论]一些结论
(gcd(2^a – 1, 2^b – 1) = 2^{gcd(a, b)} – 1)(gcd(fib[a], fib[b]) = fib[gcd(a, b)])斯特林公式:(n!)约等于(\sqrt{2 · \pi · n} · (\frac e n)^n)(\pi = 3.14159265358979, e = 2.71828182845905)a & b <= min(a, b) ∑i=1ni2=n⋅(n+1)⋅(2⋅n+1)6\sum_{i = 1} ^ {n} i^2 = \原创 2020-12-28 14:04:17 · 100 阅读 · 0 评论 -
保存一下,以后用
poj试题分类:http://exp-blog.com/2018/06/28/pid-38/恐怖到爆炸的树套树:https://www.cnblogs.com/LadyLex/p/8006478.替罪羊树(平衡树):https://www.cnblogs.com/Hero-of-someone/p/7260332.html动态区间第k大:https://blog.youkuaiyun.com/qq_24855707/article/details/78069710静态区间第k大:https://blog.csd原创 2020-12-28 13:51:03 · 86 阅读 · 0 评论 -
final-数论(积性函数、线性筛、杜教筛、莫比乌斯反演)
数论分块:⌊ni⌋\lfloor \frac n i \rfloor⌊in⌋最多只有2⋅⌊n⌋2 · \lfloor \sqrt n \rfloor2⋅⌊n⌋个取值。for(ll l = 1, r; l <= n; l = r + 1) { r = n / (n / l); res -= (r - l + 1) * S(n / l);}常见的积性函数:φ(n) -欧拉函数μ(n) -莫比乌斯函数,关于非平方数的质因子数目gcd(n,k) -最大公因子,当k固定的情况原创 2020-11-04 21:26:56 · 134 阅读 · 0 评论