自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 优先队列优化的求最短路和次短路条数以及长度的模板

//无向图版本struct Edge{ int to; int w;};struct node{ int v; int dist; int mark; bool friend operator <(const node &a,const node &b) { if(a.dist!=b.dist)

2017-08-30 20:00:44 370

原创 并查集判断连通块个数

#include<iostream> using namespace std; int pre[1050]; //保存节点的直接父节点//查找x的根节点 int find(int a){ if(pre[a]!=a) pre[a]=find(pre[a]);//路径压缩,本结点更新为根结点的子结点 return pre[a]; } /

2017-08-27 18:23:49 2408

原创 无向图寻找是否存在长度为k的环

dfs遍历以每一个点为起点是否存在长度为k的环。dfs(now,last,step)中的now表示当前点,last表示上一个访问的点,step一个记录路径长度的计数器,s【i】记录从起点到i点的路径长度。如果某点被访问第二次,则说明出现环,判断当前路径长度和它第一次出现是的长度差是否等于K即可。int k;bool e[N][N];//(1,1)开始,双向建边int s[N];bool dfs

2017-08-19 15:20:01 1355

原创 dfs序

dfs序可以把一棵树区间化,即可以求出每个节点的管辖区间。struct node{ int to; ll val;};vector<node> G[N];int L[N],R[N];int n,m,ti;void addedge(int u,int v,ll w){ G[u].push_back((node){v,w}); G[v].push_back(

2017-08-14 20:53:24 437

原创 51Nod 1199 Money out of Thin Air(dfs序+线段树维护区间和)

一棵有N个节点的树,每个节点对应1个编号及1个权值,有2种不同的操作。 操作1:S x y z,表示如果编号为x的节点的权值 < y,则将节点x的权值加上z。(Single) 操作2:A x y z,表示如果编号为x的节点以及其所有子节点的权值平均值 < y,则将节点x及其所有子节点的权值加上z。(All) 给出树节点之间的关系,进行M次操作,问所有操作完成后,各个节点的权值为多少? 节点的

2017-08-14 20:49:45 389

原创 51Nod1463 找朋友(离线处理+树状数组维护区间最大值)

给定: 两个长度为n的数列A 、B 一个有m个元素的集合K 询问Q次 每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj数据约定: n,Q<=100000 m <= 10 0<=A[i]<=1000000000 1<=B[i]<=n 1<=K[i]<=n 保证B[i]互不相等 Input n Q m A1 A2 ….An B1 B2 ….Bn K1

2017-08-14 15:36:27 352

原创 大组合数取模模板

LL n,m,p = 1e9+7;LL quick_mod(LL a, LL b){ LL ans = 1; a %= p; while(b) { if(b & 1) { ans = ans * a % p; b--; } b >>= 1;

2017-08-13 16:47:03 898

原创 区间重叠的合并模板

struct Day { ll l,r; } day[N]; for(int i=1; i<n; i++) { if(day[i].l<=day[cnt].r+1) day[cnt].r=max(day[cnt].r,day[i].r); else { da

2017-08-13 16:44:08 623

原创 51Nod 1475 建设国家

小C现在想建设一个国家。这个国家中有一个首都,然后有若干个中间站,还有若干个城市。 现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都(首都也是一个中间站)连在这一条直线的左端。然后每个点可以连一个城市,特别的是最右端的点可以连接两个城市。 现在有n个城市的规划供小C选择。但是,他们那儿的交通条件比较差,他们那儿一天是2*H个小时,每个城市里面的人每天都

2017-08-09 17:19:40 315

原创 2017百度之星资格赛 度度熊保护村庄

这题看似是一道凸包计算几何题,但其实是一道图论题。 考虑所有根据房子的位置确定士兵间的连边。暴力枚举任意两个士兵(i , j)组成的线段,如果所有房子都在给线段的右边,或者三点共线但不在线段的中间,则i向j连一条权值为1的边。最后跑一遍Floyd获取最小的环就可以了。#include <bits/stdc++.h>//#define FIN freopen("input.txt","r",st

2017-08-08 10:50:25 715 3

原创 51Nod 1102 面积最大的矩形

1102 面积最大的矩形 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 Input 第1行:1个数N,表示数组的长度(0 <= N <= 50000) 第2 - N + 1

2017-08-07 17:35:53 346

原创 开根号向下取整代码实现

ll sqrt(ll x){ ll l = -1,r = 1e10,mid; while(r-l > 1) { mid = (l+r)>>1; if(mid*mid > x) r = mid; else if(mid*mid < x) l = mid; else

2017-08-04 13:29:09 2529 1

原创 基尔霍夫矩阵计算欧拉回路

Matrix-Tree定理(Kirchhoff矩阵-树定理) *算法思想: *(1)G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数; *(2)G的邻接矩阵A[G]是一个n*n的矩阵,并且满足:如果vi,vj之间有边直接相连,则aij=1,否则为0; *定义图G的Kirchhoff矩阵C[G]为C[G]=D[G]-A[G];

2017-08-02 19:51:09 701

空空如也

空空如也

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

TA关注的人

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