【ACM之路Bryce模板】
Bryce1010_贤哉回也
github: https://github.com/Bryce1010
\n
e-mail: bryceyx@gmail.com
展开
-
二分法模板
int n,k; const int maxn=1000; int a[maxn]; void solve() { int lb=-1,ub=n; while(ub-lb>1) { int mid=(lb+ub)/2; if(a[mid]>=k) ub=mid;原创 2017-11-15 21:11:49 · 347 阅读 · 0 评论 -
二分答案模板
ForwardIterlower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。 ForwardIter upper_bound(ForwardIter first, ForwardIter last, const...原创 2017-11-15 21:08:24 · 1078 阅读 · 0 评论 -
莫比乌斯函数求法
一、单独求解#include using namespace std;typedef long long ll;//计算a是否可以mod bint MOD(int a,int b){ return a-a/b*b;}//计算莫比乌斯函数//如果一个数包含平方因子,那么miu(n)=0//如果哟个数不包含平方因子,且有k个不同的质因子,那么miu(n)=(-1)^k原创 2017-11-04 20:40:05 · 1582 阅读 · 0 评论 -
二维曼哈顿最小生成树
所以我们只要求一个点在其45°角的区域内离他最近的点就行了,而这可以用线段树或树状数组解决我们以y轴正半轴往右偏45°角的区域为例:点j在点i的这个区域要满足的条件是:yj-xj>yi-xi且xj>xi那么我们将点以x为第一关键字,y为第二关键字,排序后倒序插入线段树线段树的线段这一维是离散后的y-x,值是y+x我们要求的是大于yi-xi的最原创 2017-11-04 20:18:35 · 566 阅读 · 0 评论 -
最小生成树的解法
一、Prim算法/*下标为1-n返回最小生成树的权值,返回-1说明无连通*/#define inf 0x3f3f3f3fint G[1001][1001];int vis[1001],lowc[1001];void init(int x,int y,int v){ G[x][y]=v; G[y][x]=v; return;}int prim(原创 2017-11-04 20:07:28 · 575 阅读 · 0 评论 -
greater<int>()和less<int>()的使用
greater和less是头文件中定义的两个结构。下面看它们 的定义,greater和less都重载了操作符()。 // TEMPLATE STRUCT greater emplate struct greater : public binary_function { // functor for operator> bool operator()原创 2017-11-03 11:37:47 · 988 阅读 · 0 评论 -
线段树最全模板
一、模板#include#include#includeusing namespace std;#define MAXN 200010#define lson l,mid,p<<1#define rson mid+1,r,p<<1|1int sum[MAXN<<2];void pushUp(int p){ sum[p]=max(sum[p<<1],sum[p<<1原创 2017-11-02 15:10:47 · 649 阅读 · 0 评论 -
树状数组模板
#include#include#include#includetypedef long long ll;using namespace std;const int maxn=50010;ll N,army[maxn];ll lowbit(ll k){ return k&(-k);}void modify(ll x,ll add){ while(x<=N)原创 2017-10-20 16:35:11 · 276 阅读 · 0 评论 -
矩阵运算
1、矩阵乘法#include #include #include #include #include #include #include #include using namespace std;#define INF 0x3f3f3f#define pi acos(-1.0)#define MAX 1000010#define N 105struct Mat{原创 2017-11-02 11:08:34 · 668 阅读 · 0 评论 -
欧拉函数模板
1、直接求欧拉函数,返回N的欧拉函数值#include using namespace std;int euler(int n){ int res=n,a=n; for(int i=2;i*i<=a;i++) { if(a%i==0) { res=res/i*(i-1);//先进行除法是为了防止溢原创 2017-10-25 13:44:17 · 720 阅读 · 0 评论 -
素数测试(判断素数)模板
1、素数测试:#include#includeint modularExponent(int a, int b, int n) { int ret = 1; for (; b; b >>= 1, a = (int) ((long long) a * a % n)) { if (b & 1) { ret = (int) ((long long) ret * a % n);原创 2017-10-21 15:52:43 · 1178 阅读 · 0 评论 -
最长回文串的四种解法
Manacher算法详解const int maxn=1000010; char str[maxn];//原字符串 char tmp[maxn<<1];//转换后的字符串 int Len[maxn<<1]; //转换原始串 int INIT(char *st) { int i,len=strlen(st); tmp[0]='@';//原创 2017-10-10 16:47:15 · 820 阅读 · 0 评论 -
最长上升子序列模板
1、动态规划法#include #define MAX 1000 int seq[MAX+10]; int seqlen[MAX+10]; int main() { int i,j,k,N,max,maxlen=1; for(i=1;i<=9;i++) seqlen[i]=1; //seqlen数组原创 2017-10-20 17:19:57 · 339 阅读 · 0 评论 -
hdu1166 敌兵布阵(树状数组)
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 99696 Accepted Submission(s): 42212Problem DescriptionC国的死对头A国这段时间正在进行军事演原创 2017-09-14 14:33:37 · 678 阅读 · 0 评论 -
ACM数论-求组合数
我们利用这个公式求阶乘和逆元求阶:#include<cstdio>const int N = 200000 + 5;const int MOD = (int)1e9 + 7;int F[N], Finv[N], inv[N];//F是阶乘,Finv是逆元的阶乘void init(){ inv[1] = 1; for(int i = 2; i < N; i ++){原创 2017-12-08 20:48:45 · 1141 阅读 · 0 评论 -
线段树模板(单点更新,区间更新,RMQ)
1.单点更新说明单点更新,区间求和(你问我单点求和??你就不会把区间长度设为0啊?) • sum[]为线段树,需要开辟四倍的元素数量的空间。 • build()为建树操作 • update()为更新操作 • query()为查询操作 时间复杂度:O(nlogn)使用方法build(1, n); 建立一个叶子节点为n个的线段树update(pos...原创 2018-06-16 17:08:06 · 1901 阅读 · 1 评论 -
ACMer需要的 java基本知识
1、基本定义import java.util.*;import java.io.*;public class Main { public static void main(String[] args) { Scanner cin1 = new Scanner(System.in); Scanner cin2 = new Scanner(...转载 2018-03-13 14:50:54 · 519 阅读 · 0 评论 -
ACM复习专项
资料整理ACM训练营 邝斌的ACM模板 牛客网哈理工ACM教学视频 视频网盘资料(密码:kntr)1. 训练阶段第一阶段:练习经典常用算法(本周任务) 1. 最短路(Floyd、Dijstra、BellmanFord) 2. 最小生成树(先写个prim、kruscal要用并查集,不好写) 3. 大数(高精度)加减乘除 4. 二分查找(代码在五行以内) ...原创 2018-03-04 18:09:52 · 2086 阅读 · 0 评论 -
Bryce1010 Acm模板
目录STL标准模板库 STL简介 STL pair STL set STL vector STL string STL stack STL queue STL map upper_bound和lower_bound STL bitset STL iterator简介 STL a原创 2017-09-20 20:47:33 · 5288 阅读 · 2 评论 -
DFS和BFS模板
DFS:该DFS框架以2D坐标范围为例,来体现DFS算法的实现思想 #include#include#includeusing namespace std;const int maxn=100;bool vst[maxn][maxn]; //访问标记int map[maxn][maxn]; //坐标范围int dir[4][2原创 2017-10-10 17:12:24 · 588 阅读 · 0 评论 -
ACM输入外挂
一、什么是输入挂scanf的输入速度不cin快得多,那么有没有比scanf更快的东西呢?这就是要用到输入挂了。二、什么时候使用输入挂当输入规模达到1x10^6次方的时候,就需要输入挂,否则很可能会超时。三、代码实现(一)整数inline bool scan_d(int &num) { char in;bool IsN=false;原创 2017-10-10 16:24:25 · 1023 阅读 · 0 评论 -
模板--快速幂及矩阵快速幂
快速幂typedef long long ll;ll fun(ll x,ll n){ ll res=1; while(n>0) { if(n&1) res=(res*x)%Max; x=(x*x)%Max; n>>=1; } return res;}原创 2017-10-03 11:40:24 · 440 阅读 · 0 评论 -
线段树
F. Building Numberstime limit per test3.0 smemory limit per test256 MBinputstandard inputoutputstandard outputIn this problem, you can build a new number starti原创 2017-10-08 10:29:51 · 302 阅读 · 0 评论 -
最长公共子序列lcs
分析:动态规划 dp[i][j] 表示字符串A以第i个位置,字符串B以第j个位置的最长公共子序列的长度dp[i][j] = dp[i - 1][j - 1] + 1 if a[i] == a[j]else dp[i][j] == max(dp[i - 1][j] , dp[i][j - 1]);最大长度就是 dp[n][m] ,n 为A的长度,m为B的长度还原字原创 2017-10-07 11:29:18 · 424 阅读 · 0 评论 -
51nod 1046 A^B Mod C
1046 A^B Mod C基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出3个正整数A B C,求A^B Mod C。例如,3 5 8,3^5 Mod 8 = 3。Input3个正整数A B C,中间用空格分隔。(1 Output输出计算结果原创 2017-09-20 21:04:56 · 418 阅读 · 0 评论 -
递推公式黑科技
//递推公式黑科技#includeusing namespace std;#define X first#define Y second#define PB push_back#define MP make_pair#define MEM(x,y) memset(x,y,sizeof(x));#define bug(x) cout<<"bug"<<x<<endl;typedef原创 2017-09-27 11:17:58 · 644 阅读 · 0 评论 -
求逆元
求逆元第一种方法:扩展欧几里得法/*扩展欧几里得法(求ax+by=gcd)返回d=gcd(a,b);和对应等式ax+by=d中的x、y*/typedef long long ll;ll extendGcd(ll a,ll b,ll &x,ll &y){ if(a==0&&b==0) { return -1; }原创 2017-09-27 10:47:18 · 904 阅读 · 0 评论 -
hdu6198 number number number(递推公式黑科技)
number number numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 192 Accepted Submission(s): 126Problem DescriptionWe defi原创 2017-09-11 00:19:41 · 815 阅读 · 0 评论 -
hdu1754 I Hate It
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 83361 Accepted Submission(s): 32057Problem Description很多学校流行一种比较的习惯。原创 2017-09-14 15:55:10 · 373 阅读 · 0 评论