自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码中转站

学习的时候随便写一些

  • 博客(69)
  • 收藏
  • 关注

原创 高斯消元模板

//f(n)=f(n-1)*a+f(n-2)*b+f(n-3)*c+f(n-4)*d情况下的高斯消元const int Matsize=5;double mat[Matsize][Matsize]={ 95,36,11,5,281, 281,95,36,11,781, 781,281,95,36,2245, 2245,781,281,95,6336};vo

2017-09-02 13:39:06 277

原创 bitset模板

const int M=3200;//M=N/32struct Bitset{ unsigned v[M]; void Reset() {for(int i=0;i<M;i++) v[i]=0;}//整体置0 void Set() {for(int i=0;i<M;i++) v[i]=-1;}//整体置1 unsigned Test(int x) {return

2017-08-17 09:02:46 247

原创 中国剩余定理模板

ll m[N],p[N];//p是质数,m是余数ll Exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1; y=0; return a; } ll x1,y1; ll d=Exgcd(b,a%b,x1,y1); x=y1; y=x1-a/b*y1;

2017-07-25 08:43:26 322

原创 最大流Dinic模板

const int N=210;const int M=40010*2;const int inf=0x3f3f3f3f;struct Edge{ int v,cap,nxt;}e[M];int src,des,dis[N],head[N],ecnt;int n,m;void Addedge(int u,int v,int w){    e[ecnt].v=v;

2017-04-27 12:40:06 440

原创 树链剖分&树状数组区间加减区间求和模板

#pragma comment(linker,"/STACK:100000000,100000000")#include#include#include#includeusing namespace std;const int N=50010;#define ll long longint n,m,p,a[N];int ti[N],idx,par[N],son[N],sz[N],

2017-04-26 22:55:48 392

原创 博弈论

SG函数模板const int N=1010;int f[N],sg[N],s[N],cnt;void MakeSG(){ memset(sg,0,sizeof(sg)); for(int i=1;i<N;i++) { memset(s,0,sizeof(s)); for(int j=0;j<cnt&&f[j]<=i;j++) s[

2017-04-14 14:17:50 458

原创 自适应辛普森模板

//求椭圆与两竖线相交形成的面积#include#include#includeusing namespace std;double aa,bb,l,r;double F(double x){ return sqrt(bb*bb-x*x*bb*bb/(aa*aa));//F(x)的公式}double Simpson(double a,double b){ dou

2017-03-23 17:54:27 940

原创 组合数模板

n,m大,MOD小#include using namespace std;#define ll long longconst int N=1000100;const int MOD=99991;ll f[N];ll Fp(ll a,ll n){ ll ans=1; while(n) { if(n&1) ans=(ans*a)%MOD;

2017-03-22 14:03:26 311

原创 字典树模板

struct trie{ int cnt; trie *nxt[26]; trie() { cnt=1; for(int i=0;i<26;i++)nxt[i]=NULL; }};trie *root,*p,*q;void Insert(char *str){ p=root; for(int i=0;

2017-03-17 16:07:10 228

原创 二分图匹配模板

二分图最大匹配①Hopcroft-Carp算法时间复杂度O(sqrt(n)*m)struct edge{ int v,nxt;}e[M];int n,m;int head[N],e_cnt;int mx[N],my[N],dx[N],dy[N],vis[N],dis;queue q;void Init(){ e_cnt=0; memset(v

2017-01-09 22:42:18 456

原创 最短路模板

dijkstra+heap优化int n,m,vis[N];vector >g[N];ll dis[N];void Dijkstra(int s){ priority_queue >q; memset(dis,127,sizeof(dis)); memset(vis,0,sizeof(vis)); q.push(MP(0,s)); dis[s]=

2017-01-09 19:16:42 325

原创 tarjan&&LCA模板

//求强连通分量int n,m;int dfn[N],low[N],instk[N],sccno[N],index,scc_cnt;stack stk;vector e[N],scc[N];void Init(){ for(int i=0;i<N;i++) dfn[i]=low[i]=sccno[i]=instk[i]=0; memset(e,0,siz

2017-01-02 18:51:55 389

原创 数位DP模板

int dig[20];ll dp[20][10];ll Dfs(int pos,int pre,int lim,int first){ if(pos==-1) return 1; if(!lim&&!first&&dp[pos][pre]!=-1) return dp[pos][pre]; int upper=lim?dig[pos]:9; ll res=0

2017-01-02 18:40:40 285

原创 最小生成树模板

Kruskalstruct edge{ int u,v,w; edge(int _u=0,int _v=0,int _w=0):u(_u),v(_v),w(_w){} bool operator < (edge t) const {return w<t.w;}}e[M];int n,m;//n是点数,m是边数,点编号从1开始,边编号从0开始int par[N];

2017-01-02 17:57:45 451

原创 SA后缀数组模板

下标都是从1开始的计数排序const int N=100010;#define MS(x,y) memset(x,y,sizeof(x))int sa[N],rnk[N],height[N],tax[N],tp[N],n,m,k;char str[N];void rsort(){ for(int i=0;i<=m;i++) tax[i]=0; for(int i=

2016-12-16 20:12:00 382

原创 Sam后缀自动机模板

const int maxn = 112345 ,mlen = 26;struct Sam{ int len[maxn*2],fa[maxn*2],nex[maxn*2][mlen]; int _cnt,root,omg; int newNode(int L = 0){ len[_cnt] = L; memset(nex[_cnt],fa

2016-12-15 17:15:02 346

原创 Splay模板

POJ 3580 点击打开链接#include #include const int inf=0x3f3f3f3f;const int N=200100;using namespace std;//除了Get_pre和Get_nxt函数,其他节点都是按照下标从小到大排列的struct node{ node *ch[2],*fa; int sz,val,mn,add

2016-12-15 17:13:50 613

原创 HDU 3594 Cactus 【强连通】

题目:点击打开链接题意:求一个图是否为仙人掌图分析:仙人掌图的详细说明见链接:点击打开链接总结下来仙人掌图有三点性质:①没有横向边②对于父节点u和其所有子节点v,low[v]③对于父节点u和其所有子节点v,low[v]对于性质①,可以在dfs时,对于每次引出的一个v,判断dfn[v]>dfn[u]是否成立,若成立,则表示点v是之前已经遍历过的一个点且v是u的一个后继

2016-12-08 13:55:56 266

转载 Egor的java题

http://codeforces.com/contest/549/submission/11468911import java.io.BufferedWriter;import java.util.InputMismatchException;import java.util.NoSuchElementException;import java.math.BigInteger;imp

2016-12-06 19:51:41 267

转载 ACM中java的使用

这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目。1. 输入:格式为:Scanner cin = new Scanner (new BufferedInputStream(System.in));例程:import java.io.*;import java.math.*;import j

2016-12-06 18:18:15 555

原创 HDU 3642 Get The Treasury 【线段树】【扫描线】

题目:点击打开链接题意:求空间内至少三个长方体重叠相交的体积分析:我们可以先把所有的长方体的两点的x,y,z保存下来,因为给出的长方体坐标x,y,z,z很小,所以可以考虑离散化z,然后对于每一个z,利用扫描线计算出所有长方体的高包含z的长方体的x,y面的面积,该面积也要求至少重叠三次,然后这一段的重叠的体积就是重叠面积乘上z与下一个z的高度差。//#pragma comment(lin

2016-11-29 21:59:53 248

转载 头文件和宏模板

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2016-11-28 17:22:16 303

原创 线段树扫描线模板

#include //hdu1542 求平面矩形面积交#include #include #define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int N=1222;using namespace std;int n,cnt;struct node{ double l,r,h; int f; node(

2016-11-28 16:43:53 345

原创 浙江理工大学zstu2016新生赛题解

A:Save the Princess题目:点击打开链接题意:n个人横向排好队,其中左数第k个是公主,LYF和BH分别可以杀掉队列最左边的或者最右边的人,直到某个人拯救公主,两个人都会选择最佳杀人方案,LYF先杀,问谁能拯救公主。分析:当公主在队列两端时,LYF先行动,所以LYF是赢家,其他情况时,当某个人正好杀掉与公主相邻的人时,另一个人肯定是赢家,所以不能先杀公主与公主相邻的人,因

2016-11-21 17:37:05 4690 8

原创 CodeForces 732E Sockets 【贪心】【STL】

题目:点击打开链接题意:

2016-11-19 20:19:03 285

原创 CodeForces 734E Anton and Tree 【连通缩点】

题目:点击打开链接题意:给出n个点,n-1条边构成一棵生成树,每个点都有黑白两种颜色,每次改变颜色都能使同颜色的相邻点改变颜色,求最小改变颜色的次数分析:因为每次改变颜色都能使同颜色的相邻点改变颜色,所以相邻且颜色相同的点可以缩成一点,重新建图,构成黑白相间的点的树,设树的直径(任意两点的最远距离)为d,因为每次改变颜色都会使它与相邻的点的颜色相同,所以取树的直径上的点操作,共有d+1个点

2016-11-18 16:16:41 719

原创 CodeForces 734D Anton and Chess 【模拟】

题目:点击打开链接题意:给定一个白棋坐标,给出n个黑色的棋子的坐标,表示象,车,女王的中的一个,棋子不能越过另一个棋子,问是否白棋能被吃掉分析:以白棋为中心,分散中八条横竖斜的射线,储存与最近的黑棋的距离,再遍历一遍黑棋,看是否满足黑棋距离等于该射线的最近距离且能吃掉白棋#pragma comment(linker, "/STACK:1024000000,1024000000")#i

2016-11-18 10:44:48 372

原创 CodeForces 734C Anton and Making Potions 【二分】【贪心】

题目:点击打开链接题意:要制作n个药,初始制作一个药的时间为x,魔力值为s,有两类咒语可以加速,一类有m种咒语,每种咒语使制作一个药的时间变成a[i],花费b[i]的魔力,二类有k种咒语,每种咒语瞬间产生c[i]个药,花费d[i]的魔力,c[i]和d[i]都是不递减的,求最短时间内产生n个药的时间。分析:总花费的时间ans=(n-c[j])*a[i],b[i]+d[j]#pragma

2016-11-17 22:53:18 292

原创 CodeForces 719E Sasha and Array 【线段树】【快速矩阵幂】

题目:点击打开链接题意:给出有n个元素的数列ai(1分析:容易想到用快速矩阵幂求斐波那契数列,同时用线段树储存和矩阵以及lazy矩阵,如果lazy标记为指数的话每次更新都要用一遍快速矩阵幂,就会超时。因为矩阵乘法满足分配律,且区间[l,r]加上x可以表示为乘上x次q矩阵,所以线段树维护矩阵之和,同时每次更新的时候,x可以先用快速矩阵幂,求出变换x次后的矩阵,然后在线段树中更新,即和矩阵和l

2016-11-17 20:22:44 335

原创 HUST 1214 Cubic-free numbers II 【容斥】

题目:点击打开链接题意:一种数它不能被这样表示n=x*x*x*k(x不为1),求出[l,r)区间内有多少这样的数,区间在64位整数内。分析:显然先求出1~n中有多少这种数,由唯一分解定理得x必定为质因数,所以先筛出小于(1#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #includ

2016-11-16 01:05:46 204

原创 URAL 1036 Lucky Tickets 【dp】【高精度】

题目:点击打开链接题意:每个数都有2*n个数位,数位之和为s,前n部分数位之和等于后n部分数位之和,求有多少个这样的数(包含前缀零)分析:当s为奇数时直接输出零,当n为偶数时,把s除以二先算出一半的个数,另一半的个数也相同,因此答案就是个数的平方。考虑数位前后的关系,可以设dp[pos][num],pos是所在的数位,num是之前数位的和,转移方程为dp[pos][num]=∑dp[pos

2016-11-15 21:45:38 233

原创 URAL 1091 Tmutarakan Exams 【容斥】【组合数】

题目:点击打开链接题意:在不大于s的所有数中,找出k个gcd不为1的数,求组数。分析:因为k>=2,所以必定选择两个数不互质,最大的质因数不超过50/2=25,因此枚举不超过25的质因数,对于每个质因数x,与之不互质的数共有s/x,而要从这s/x个数中选出k个数,用到组合数公式,组合数公式可以通过递推预处理。但是这样取会有重复,比如若s=20,k=3,x=2时,不互质的数有2,4,6,8,

2016-11-15 19:40:32 272

原创 URAL 1114 Boxes 【dp】

题目:点击打开链接题意:有n个盒子,a个红球,b个蓝球,球可以任意放入或者不放入盒子,求放置情况的个数分析:不放球的时候是一种情况,每放一个球,放置情况的个数就等于放这个球之前的情况的个数加上原有情况的个数,因此可以用dp做,dp[i][j][k]表示第i个盒子时,用了j个红球和k个蓝球,状态转移方程是dp[i][j][k]+=∑dp[i-1][jj][kk](0#pragma com

2016-11-15 00:11:10 293

原创 POJ 1091 跳蚤 【容斥】【质因数分解】

题目:点击打开链接题意:中文题分析:题意可转化为,有n个数,每个数都小于等于m且允许重复,gcd(所有数)==1,求这n个数的所有满足条件的排列组合。求出gcd==1的个数难易实现,因此可以先求出gcd!=1的个数,即所有的数都不互质,易得这些数不与m互质,即可以由m的质因数推导出来,把m的质因数保存。取出k个质因数,相乘的数也是不与m互质,然后在1~m内,一共有m/该数 个数于该数不互质

2016-11-13 17:47:56 319

原创 HDU 1695 GCD 【容斥】【质因数分解】【欧拉函数】

题目:点击打开链接题意:给定区间[a,b]和[c,d]和k,求出x∈[a,b],y∈[c,d],使得gcd(x,y)==k的个数,给定a=c=1。分析:对于满足gcd(x,y)==k的x,y的值,都有x,y是k的倍数,且x,y互质。因此可以将b,d各除以k,得到的新的b,d中找出互质的对数即为答案,由于b,d的大小关系可能不同,为统一计算将交换为b#pragma comment(lin

2016-11-13 00:57:52 254

原创 HDU 3208 Integer’s Power 【容斥】

题目:点击打开链接题意:给定一个区间,求出区间内所有数的最大的指数和。分析:可以先求出1~n中有的区间指数和,再取端点相减。考虑到最大的指数不超过60(2^60>1e18),因此可以枚举所有指数,根据指数k对n开根,因为用a=pow(n,i)可能会产生不超过1的精度误差,所以可以每次判断a-1,a和a+1哪个值的k次方不超过n且更接近,并且a+1的k次方可能会超过long long表示的最

2016-11-11 11:50:00 405

原创 HDU 1796 How many integers can you find 【容斥】

题目:点击打开链接题意:给出n和集合m,求出所有满足的x,x分析:考虑到容斥关系,先求出能被任意一个数整除的所有数的数量,减去能被任意两个数整除的所有数的数量,再加上能被任意三个数整除的所有数的数量...即可。注意能被两数整除的数也就是能整除它们最小公倍数的数,集合m中的数可能为0。 #pragma comment(linker, "/STACK:1024000000,10240000

2016-11-10 09:25:27 194

原创 HDU 2204 Eddy's爱好 【容斥】

题目:点击打开链接题意:中文题分析:对于所有满足m^k1e18,所以Ai∩Aj∩Ak不超过60即可,因为2*3*5*7刚好大于60,所以最多有三个集合交。本题还要考虑精度。#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #i

2016-11-08 23:26:54 204

转载 大整数类BIGN的设计与实现 C++高精度模板

转载自郭大侠的博客点击打开链接首先感谢刘汝佳所著的《算法竞赛入门经典》。众所周知,C++中储存能力最大的unsigned long long 也是有着一个上限,如果我们想计算非常大的整数时,就不知所措了,所以,我写了一个高精度类,允许大整数的四则运算这个类利用字符串进行输入输出,并利用数组进行储存与处理,通过模拟四则运算,可以计算很大的整

2016-11-07 17:00:55 563

转载 ACM数学(转)

从放暑假前周sir给我讲了一个用polya计数法和burnside定理做的题目(pku2409)后,突然觉得组合数学挺有意思,然后从那时起到现在几乎都在做这类的题目。  做到现在感觉这类题目的一些基本知识点都差不多有所了解了,水题也刷了不少,但还有很多难题自己实在是做不动,所以准备把这类题目先放一放,然后把前段时间做的水题整理一下(供以后的初学者参考,大牛就不要看了哈,都是水题)。剩下的比较难

2016-11-07 16:55:02 401

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除