ACM基础算法
WarYan
这个作者很懒,什么都没留下…
展开
-
gcd综合
1.递推式gcd:int gcd(int a,int b){ while(b>0) { int c=a%b; a=b; b=c; } return a;}2.递归式gcd:int gcd(int a,int b){ return b?gcd(b,a%b):a;}问题:如果正整数大于...原创 2020-01-04 22:59:39 · 108 阅读 · 0 评论 -
快速幂合集
1.普通快速幂快速幂模板:int Quick_pow(int a,int b){ int ans=1; while(b){ if(b&1) ans=ans*a; a=a*a; b>>=1; } return ans;}2.快速幂+求模快速幂求模模板:int Q...原创 2019-12-22 13:29:48 · 153 阅读 · 0 评论 -
最长上升子序列
最长上升子序列动态规划O(n2n^2n2)dp[i]dp[i]dp[i]表示以第iii个数结尾的最长上升子序列的长度容易找到状态转移方程: dp[i]=max(dp[i],dp[j−1])dp[i]=max(dp[i],dp[j-1])dp[i]=max(dp[i],dp[j−1])for(int i = 1; i <= n; ++i) { for(int j = 1; j < i; ++j) { if(a[j] < a[i])原创 2020-07-16 00:04:37 · 116 阅读 · 0 评论 -
Dilworth定理&&导弹拦截
Dilworth定理偏序集能划分成的最少的全序集个数等于最大反链的元素个数也即最长上升子序列的长度就是能构成的不上升序列的个数链接:https://ac.nowcoder.com/acm/problem/16810来源:牛客网题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹原创 2020-07-16 00:04:06 · 314 阅读 · 0 评论 -
01分数规划模板
01分数规划01分数规划问题是求性价比问题,比如说给出总价值和总花费让你求其二者比值的最大值假设价值为a[i]a[i]a[i],花费为b[i]b[i]b[i],求:∑a[i]∑b[i]=ans\frac{\sum a[i]}{\sum b[i]}=ans∑b[i]∑a[i]=ans求其ansansans的最大值。我们移项发现:F(ans)=∑a[i]−ans∗∑b[i]F(ans)=\sum a[i]-ans*\sum b[i]F(ans)=∑a[i]−ans∗∑b[i]变化:F(原创 2020-07-15 17:53:21 · 207 阅读 · 0 评论 -
树状数组求逆序对
kkk树状数组模板:int d[maxn];int n;inline int lowbit(int x){return -x&x;}int get_sum(int x){ int ans=0; while(x){ ans+=d[x];x-=lowbit(x); } return ans;}void update(int x,int y){ while(x<=n){ d[x]+=y;x+=lowbit(x);原创 2020-07-15 17:51:54 · 235 阅读 · 0 评论 -
DFS和BFS
个人DFS模板1.油田连通块链接地址:地址#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;char map[110][110];bool vis[110][110]={0};//布尔类型减少内存浪费i...原创 2019-12-09 17:00:38 · 109 阅读 · 0 评论 -
因子问题集
HUD1215-求因子和#include<stdio.h>#include<string.h>const int N=500000+5;int a[N];int main(){ int t,b; for(int i=1;i<N/2;i++) for(int j=2;j*i<N;j++) a[i*j]...原创 2019-12-09 16:56:02 · 211 阅读 · 1 评论