模板
阿狸是狐狸啦
这个作者很懒,什么都没留下…
展开
-
二分总结-.-
弄了一天的二分模板 orz// 查找第一个相等的元素int find(int n, int key,int *a) { int l=0,r=n-1; while(l<=r) { int mid=(l+r)/2; if(a[mid]>=key) r=mid-1; else if(a[mid]<key) l=mid+1; } if(l<n&&a[l]==key)ret原创 2017-11-23 20:06:14 · 195 阅读 · 0 评论 -
BZOJ 3527: [Zjoi2014]力 [FFT]
题意:令Ei=Fi/qi,求Ei.思路:首先注意E的下标是i,F的下标是i。然后化简一下这个式子。 #include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>#include <math.h>using n...原创 2018-08-07 15:44:04 · 124 阅读 · 0 评论 -
hdu2665 spoj3267 (主席树入门)
主席树实质相当于每个前缀建立一颗线段树,因为相邻的前缀相比较只是差了一个数字,所以可以利用上一个前缀的线段树的有用信息来构成当前缀的线段树。主席树查询静态区间第k大。#include<stdio.h>#include<algorithm>#define N 100010using namespace std;struct TR{ int sum,l,r;...原创 2018-08-30 12:03:19 · 132 阅读 · 0 评论 -
2018 沈阳网络赛E The cake is a lie(最大圆覆盖)
完全是个板子题,二分半径套一个套一个最大圆覆盖的板子即可。#include <bits/stdc++.h>using namespace std;#define Mn 305const double eps = 1e-7;const double pi = acos(-1.0);#define sqr(x) ((x) * (x))struct Point{ do...原创 2018-09-08 22:55:53 · 413 阅读 · 0 评论 -
HDU - 5934 (缩点)
题意:每个炸弹都有一个花费,一个炸弹爆炸,在他的爆炸范围内炸弹都会爆炸,让你花费最少让所有的炸弹爆炸。思路:1000个点可以n方判断两个炸弹之间的关系。如果A爆炸会导致B爆炸,那么A向B连一条边。可以发现一个强连通分量里的炸弹只要一个爆炸就可以了,所以先缩点。因为入度为0的点不能被其他炸弹引爆。所以我们在入度为0的点中选择一个花费最小的即可。#include <iostream&g...原创 2018-09-03 18:29:56 · 185 阅读 · 0 评论 -
杜教BM(解决线性递推式的模板)
把递推式前几项扔进去就行了,至少扔个8项,然后mod根据题意改改,就能出结果了。太神奇了。#include<bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb...原创 2018-09-18 20:20:56 · 471 阅读 · 0 评论 -
hdu 5919(主席树)
思路:主席树的模板题目,我们倒着插入题目就变成了,查询区间不同数的个数k,然后查询区间第(k+1)/2大。写了一下午,发现初始化写错了,初始化的cnt应该是1,还有数组大小要开36倍左右,我刚开始开的20倍一直tle。#include <stdio.h>#include <string.h>#include <algorithm>;const int...原创 2018-09-14 19:15:41 · 397 阅读 · 0 评论 -
树分治-点分治入门
poj1741题意:给你一颗有边权的树,询问满足i点到j点距离不大于k的二元组个数。点分治的入门题目。前置技能:树的重心:即以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。在对树进行分治的时候可以避免N^2的极端复杂度(从退化链的一端出发),保证NlogN的复杂度。会求以当前树为根节点的子树中节点个数,会求以当前节点为根的子树中所有节点到当前节点的...原创 2018-09-27 18:50:57 · 153 阅读 · 0 评论 -
sscanf,scanf输入string类型
sscanf函数//取出前4个字符1234#include<stdio.h>#include<string.h>int main(){ char str[100]; sscanf("12345","%4s",str); printf("%s\n",str); return 0;}//字符串读入#include<stdio.h>..原创 2019-02-19 14:52:53 · 2292 阅读 · 0 评论 -
hdu1695 bzoj2301(莫比乌斯反演)
hdu1695 题意求:思路:看到gcd求和的式子基本都是莫比乌斯反演。那么我们对原式除以k,就变成,我们设f[k]=(gcd(i,j)=k),F[x]=(k|gcd(i,j)).那么我们求得ans=f[1]。易得F[k]=(n/i)*(m/k)利用莫比乌斯第二条公式反演得到所以#include <bits/stdc++.h>using names...原创 2019-03-14 15:28:26 · 167 阅读 · 0 评论 -
两球体积并
求两个球体积的并,分三种情况,两球有交集,两球相离,包含情况。#include <bits/stdc++.h>using namespace std;int main(){ double pi=acos(-1.0); double x1,y1,z1,r1,x2,y2,z2,r2; cin>>x1>>y1>>z1>>r1...原创 2019-03-13 13:47:32 · 206 阅读 · 0 评论 -
fzu-2105(线段树区间更新)
题意:区间有三种二进制操作,区间中的值不超过16,然后查询区间和。因为每个数很小,所以区间内存在大量重复值,并且经过二进制操作后区间中相等的值会越来越多。我们只需要记录当前区间中的值是否相等即可。#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm...原创 2019-03-26 14:45:40 · 237 阅读 · 0 评论 -
读入优化
我只是想单纯存个板子//普通读入优化void read(int &x){ int f=1;x=0;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){x=x*10+s-'0';s=getcha...原创 2018-08-14 13:43:30 · 224 阅读 · 0 评论 -
Wannafly挑战赛20 D挑选队友
D 挑选队友 点击查看 进入讨论 77/304 通过 链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 Applese打开了m个QQ群,向群友们发出了组队的邀请。作为网红选手,Applese得到了n位选手的反馈,每位选手只会在一个群给Applese反馈现在,Applese要挑选其中的k名选手组队比赛...原创 2018-08-10 15:44:05 · 208 阅读 · 0 评论 -
HDU 1402(FFT,NNT)
题意:大数相乘。主要是存板子的,一个FFT,一个NNT。其中FFT可能存在精度问题。有的时候会被卡精度,比如题目要求取模时,这时我们一般用NNT。//FFT#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>using namespac...原创 2018-08-10 13:21:35 · 282 阅读 · 0 评论 -
大素数模板
求[1,n]的质数有多少个 (n代码一:复杂度大概O(n^(3/4))#include #define ll long long using namespace std; ll f[340000],g[340000],n; void init(){ ll i,j,m; for(m=1;m*m<=n;++m)f[m]=原创 2018-01-31 11:31:29 · 122 阅读 · 0 评论 -
LightOJ - 1319 (中国剩余定理,满足模数满足互质关系)
模板题注意用long long#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll Extended_Euclid(ll a,ll b,ll &x...原创 2018-02-26 10:35:58 · 196 阅读 · 0 评论 -
poj 2891(中国剩余定理,模数可能不互质)
【题意】给出k个模方程组:x mod ai = ri。求x的最小正值。如果不存在这样的x,那么输出-1.【题解】由于这道题目里面的ai、ri之间不满足两两互质的性质,所以不能用中国剩余定理直接求解,套模板。#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;typed...原创 2018-02-26 10:13:30 · 338 阅读 · 0 评论 -
LightOJ - 1067 (卢卡斯定理,打表法)
题意:求C(m,n)%p;题解:因为n (1 ≤ n ≤ 106), k (0 ≤ k ≤ n).T (≤ 2000)所以用到卢卡斯定理。#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include &l...原创 2018-02-27 11:38:05 · 208 阅读 · 0 评论 -
逆元
求除法取模(a/b)%c要用到逆元即 (a/b)%c=a*(b关于模c的逆)%c逆元类似于实数运算中的倒数,因为乘法是可以直接取模的,所以我们可以将除法转换成乘法,用a乘b的倒数即a乘b的逆元然后去取模就可以了。逆元怎么求呢?(a和p互质,a才有关于p的逆元)1:根据费马小定理,我们可得出当p是素数时,对任意x,都有x^(p)≡ x(modp),若x无法被p整除,那么x^(p-1)≡ 1(mo...原创 2017-09-02 23:34:23 · 672 阅读 · 0 评论 -
LightOJ - 1102 (组合数取模逆元,当n和m小于1e6,p为任意素数时,打表法)
题意:n分为k部分有多少种方法.题解:显然隔板法C(n+k-1,k-1)%mod,用到组合数逆元求法。#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostre...原创 2018-02-28 20:23:27 · 269 阅读 · 0 评论 -
卢卡斯定理模板(当n和m很大,p为素数时)
#include <string.h> #include <stdio.h> #include <iostream> #include <algorithm> typedef long long ll; using namespace std; ll quick_mod(ll a,ll b,ll m){ ll...原创 2018-03-01 14:56:28 · 281 阅读 · 0 评论 -
LightOJ - 1124 同codeforce-451E (隔板法,卢卡斯定理,当n和m很大,p为任意素数时)
题意:n个区间,每个区间可以取区间中的任意一个数,问取的数和为m的方案数。题解:先看codeforce上的451E的区间都是从0开始,所以我们先看code上的题。我们可以把m分为n份。那么利用隔板法,总的取法为C(n+m-1,n-1)。因为这样分的话,肯定有一些区间取的数多于那个区间的最大值,我们把这一部分减去就是我们要求的答案,怎么求多的那一部分呢,利用容斥原理,他超出的最小值为1,我们让sum...原创 2018-03-01 15:38:05 · 301 阅读 · 0 评论 -
LightOJ - 1045 求N!在k进制下的的位数(斯特林公式)
题意:求n的阶乘k进制下的位数。题解:斯特林公式可以求N!在k进制下的的位数。#include<cstdio> #include<iostream> #include<cmath> using namespace std; double pi =acos(-1.0);//πdouble e =exp(1);//e int t; ...原创 2018-03-02 15:21:21 · 262 阅读 · 0 评论 -
第一,二类斯特林数 Bell数 Stirling公式
斯特林数是组合数学的内容。第一类斯特林数可以处理下面的问题:把N个不同元素分为k个环,每个环非空,问有多少分法,记为S(p,k),S(p,p)=1S(p,0)=0递推公式为:S(p,k)=(p-1)*S(p-1,k)+S(p-1.k-1)。p个人排k个圈,第一种方法是,第k个圈只有p自己,所以加上S(p-1,k-1),还有一种方法是p加入p-1人组成的k个圈,排在任意一个人的左边,加上(p-1)*...原创 2018-03-29 22:28:48 · 1850 阅读 · 0 评论 -
拉格朗日插值法求自然数幂和(模板)
拉格朗日插值法可以理解为当我们确定n+1个x坐标不同的点时,我们可以用确定唯一的一个n次多项式。然后我们就可以求出这个多项式的任意一项了。求自然数幂和: //拉格朗日插值法,自然数幂和。#include <bits/stdc++.h>using namespace std;#pragma comment(linker, "/STACK:1024000000,102400...原创 2018-07-22 16:54:31 · 988 阅读 · 0 评论 -
FZU - 2295 (最大闭合权子图)
题意:给你n个技能,m个工作,k个互斥关系。每个技能需要花费,并且学习一个技能可能需要先学会其他技能。完成一个工作需要前置技能,完成一个工作你会获得赏金。有k对工作不能同时完成。问你能获得多少赏金。思路:因为我们完成一个工作需要一些前置技能,所以我们把工作向他所需要的前置技能建立一条边。每个技能向他的前置技能建一条边。那么我们可以发现。我们如果需要完成一个工作。那么该工作的所有后继边所连接的技...原创 2019-04-19 13:48:01 · 221 阅读 · 0 评论