随笔分类 -  模板

摘要:1 struct Splay{ 2 int rt,sz; ///根节点,树节点总数 3 int va[N],son[N][2],fa[N];///值,左右儿子,父亲 4 void spin(int t){ ///旋转操作 5 int x=fa[t], f=fa[x], y=son[x][1]==t; 6 son[... 阅读全文
posted @ 2016-10-08 16:53 Kurokey 阅读(209) 评论(0) 推荐(0)
摘要:1 void Solve(LL n){ ///分解质因数保存结果于p 2 p.clear(); 3 for(LL i=2; i*i1) p.push_back(n); 9 } 10 11 void dfs(LL k,LL t,LL s,LL n){ ///求与n互素个数 12 if(k==p.size()){ 13 if(t&1) ans-=... 阅读全文
posted @ 2016-10-03 13:18 Kurokey 阅读(486) 评论(0) 推荐(0)
摘要:#include #include using namespace std; #define LL long long const int N = 5e6 + 2; bool np[N]; int prime[N], pi[N]; int getprime() { int cnt = 0; np[0] = np[1] = true; ... 阅读全文
posted @ 2016-09-20 12:58 Kurokey 阅读(428) 评论(0) 推荐(0)
摘要:#include #include #include #include #include using namespace std; const int MAXN=400; const int INF=0x7fffffff; int N,M,S; int a[MAXN][MAXN],dis[MAXN]; bool visit[MAXN],d[MAXN]; int StoerWagner(in... 阅读全文
posted @ 2016-09-02 20:36 Kurokey 阅读(405) 评论(0) 推荐(0)
摘要:for 所有的组k for v=V..0 for 所有的i属于组k f[v]=max{f[v],f[v-c[i]]+w[i]} 阅读全文
posted @ 2016-08-09 21:58 Kurokey 阅读(134) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2016-08-04 22:45 Kurokey
摘要:/* 01最优(小)比例生成树 求最大比例更改prim即可 poj2728 将图中点连成一棵树满足 总花费/总长度 最小 */ int n,m; double d[1005],cost[1005],ben[1005]; double pic[1005][1005]; ///两点间距离 double cpic[1005][1005]; ///两点间花费 int vis... 阅读全文
posted @ 2016-08-04 22:23 Kurokey 阅读(287) 评论(0) 推荐(0)
摘要:/* 01分数规划模板(Dinkelbach) 01分数规划就是把 sum(a)/sum(b)转换成 f(x)=sum(a)-ans*sum(b); 当f(x)取到0时,ans取到了最大(小)值 poj 2976 两个长度为n的数组a,b 可以除去m个,怎样选择才能使剩下的 sum(a)/sum(b)的百分数最大 */ int ... 阅读全文
posted @ 2016-08-04 22:14 Kurokey 阅读(228) 评论(0) 推荐(0)
摘要:inline void add(int x,int y,int f,int c){ node[hcnt]=Node(y,head[x],f,c);head[x]=hcnt++; node[hcnt]=Node(x,head[y],0,-c);head[y]=hcnt++; } int spfa(){ mst(d,-1);d[S]=0; mst(vis,0);q.p... 阅读全文
posted @ 2016-07-29 16:22 Kurokey 阅读(161) 评论(0) 推荐(0)
摘要:int n,m,x; vectorV[1005]; int dp[105][maxn]; int w[1005],v[1005]; void dfs(int u,int m){/// m当前可用容量,u 父节点 if(m<=0)return; for(int e:V[u]){ ///vector模拟树 for(int k=0;k<=m-w[e];++k)d... 阅读全文
posted @ 2016-07-29 11:18 Kurokey 阅读(193) 评论(0) 推荐(0)
摘要:void solve(){ for(int i=1;i=k*w[i];--j) ///w[i] 是第 i 个物品的重量 dp[j]=max(dp[j],dp[j-k*w[i]]+k*v[i]); ///v[i] 是第 i 个物品价值 k=c[i]+1-k; for(int j=sum;j>=k*w[i];--j) ... 阅读全文
posted @ 2016-07-29 11:18 Kurokey 阅读(151) 评论(0) 推荐(0)
摘要:bool spfa() { for(int i=0;id[e[i].to]) { d[e[i].to]=d[now]+e[i^1].c; if(!mark[e[i].to]) { mark[e[i].to]=1; ... 阅读全文
posted @ 2016-07-13 14:21 Kurokey 阅读(270) 评论(0) 推荐(0)
摘要:struct Matrix { int n , m , a[2][2]; Matrix (int _n = 0, int _m = 0) { n = _n , m = _m; memset(a , 0 , sizeof(a)); } Matrix operator * (const Matrix &R) const { ... 阅读全文
posted @ 2016-07-02 17:11 Kurokey 阅读(110) 评论(0) 推荐(0)
摘要:void exgcb(LL a,LL b,LL &d,LL &x,LL &y){ if(!b){d=a;x=1;y=0;return;} exgcb(b,a%b,d,y,x);y-=x*(a/b); } LL ny(LL a,LL b){ ///求a关于b的逆元(要求a,b互质) LL d,x,y; exgcb(a,b,d,x,y); return d=... 阅读全文
posted @ 2016-06-30 11:32 Kurokey 阅读(238) 评论(0) 推荐(0)
摘要:1 void ins(int k,int x,int t){ 2 for (; x<=tot; x+=x&-x) c[k][x]+=t; 3 } 4 ll getsum(int k,int x){ 5 ll t=0; for (; x; x-=x&-x) t+=c[k][x]; return t; 6 } 7 void mdy(int x,int y,int z){... 阅读全文
posted @ 2016-06-29 22:29 Kurokey 阅读(159) 评论(0) 推荐(0)
摘要:1 int n,m,hcnt,qcnt; 2 int head[maxn],query[maxn],vis[maxn]; 3 int anc[maxn],fp[maxn],indu[maxn],ans[N]; 4 struct Node{ 5 int to,next; 6 }node[maxn]; 7 struct Query{ 8 int to,next,ind... 阅读全文
posted @ 2016-05-30 20:31 Kurokey 阅读(184) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15... 阅读全文
posted @ 2016-05-25 21:01 Kurokey 阅读(326) 评论(0) 推荐(0)
摘要:题目链接:传送门 题目大意:给你一副无向联通图,判断是不是二分图 题目思路:交叉染色法 下面着重介绍下交叉染色法的定义与原理 首先任意取出一个顶点进行染色,和该节点相邻的点有三种情况: 1.未染色 那么继续染色此节点(染色为另一种颜色) 2.已染色但和当前节点颜色不同 跳过该点 3.已染色并且和当前 阅读全文
posted @ 2016-05-24 21:02 Kurokey 阅读(4481) 评论(0) 推荐(1)
摘要:题目链接:传送门 题目大意:给你一副无向图,求有多少个割点 题目思路:tarjan算法(此题读入是字符串读入,需注意) 阅读全文
posted @ 2016-05-23 14:44 Kurokey 阅读(232) 评论(0) 推荐(0)
摘要:题目链接:传送门 题目大意:给你一副无向图,求解图的顶点连通度 题目思路:模板(图论算法理论,实现及应用 P396) Menger定理:无向图G的顶点连通度k(G)和顶点间最大独立轨数目之间存在如下关系: 1.若G是完全图,k(G)=|V(G)|-1 2.若G不是完全图,k(G)=min{P(A,B 阅读全文
posted @ 2016-05-23 14:10 Kurokey 阅读(302) 评论(0) 推荐(0)