自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Studio安装和配置

一、下载Android Studio下载链接:http://www.androiddevtools.cn/ 进去下载自己喜欢的版本二、安装Android Studio.exe是安装版,zip是直接解压版,安装版安装完后里面的文件基本和解压版一样,所以下载哪个都行 我这里下载的安装版,双.exe文件进行安装 第一个是Android Studio的基础安装文件,第二个是安卓...

2018-07-19 14:18:24 471

原创 Eclipse配置Android开发环境

Android SDK 安装ADT 安装Eclipse 配置Android SDK 安装下载Android SDK 无需翻墙:http://www.androiddevtools.cn/ 找到SDK tools,下载对应电脑版本的android-sdk 下载后解压到自己喜欢的文件夹 点击SDK Manager.exe运行 (1)Tools选择前面三个就行,如...

2018-07-17 20:03:38 223

原创 SQL语句 生成随机整数

update 表名 set 列名 = (select cast(ceiling(rand(checksum(newid()))*随机数的范围)as int ))例如:update tb_News set Clickvolume = (select cast(ceiling(rand(checksum(newid()))*100)as int ))在tb_News中的Clickvolume生成1

2017-12-28 13:27:14 4174

原创 51Node 1499图

1499 图 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 收藏 关注 给一个无向图,你要将这些点分成A、B两个集合,使得满足A的导出子图是一个完全图,而B的导出子图是一个没有边的图。 但是事实上你不一定能够做到,所以你允许有错误。我们定义一个完美值为: 1.如果A中两点有边相连,则增加|i-j|的完美值。 2.如果B中两点无边相连,则增加|i-j|

2017-10-11 20:51:40 395

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

//无向图版本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 352

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

#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 2377

原创 无向图寻找是否存在长度为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 1291

原创 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 422

原创 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 371

原创 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 333

原创 大组合数取模模板

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 881

原创 区间重叠的合并模板

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 594

原创 51Nod 1475 建设国家

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

2017-08-09 17:19:40 300

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

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

2017-08-08 10:50:25 626 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 332

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

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 2472 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 683

原创 51Nod 1596 搬货物

思路:题目要求每次搬的货物的重量和必须是2的次方数,给出得数据也是2的次幂,显然,两个货物的重量和为2的次方数,当且仅当这两个货物的次幂相等,所以我们始终保持数组是升序的,当w[i]==w[i+1]时,去掉w[i],w[i+1]++后保留,否则去掉w[i],保留w[i+1],方案数+1。可以用优先队列优化。 但这题卡了输入,需要使用输入挂。。。。。。。#include <map>#include

2017-07-31 20:26:23 238

原创 POJ 1459 Power Network

(记录这题纯粹是因为输入格式很有趣 0.0) 题意:输入分别为m个点,a个发电站,b个用户,n条边;接下去是n条边的信息(u,v)cost,cost表示边(u,v)的最大流量;a个发电站的信息(u)cost,cost表示发电站u能提供的最大流量;b个用户的信息(v)cost,cost表示每个用户v能接受的最大流量。 思路:应为发电站有输出限制,用户也有接受限制,所以可以建立一个超级源点和一个超级

2017-07-21 16:27:31 196

原创 最大流算法(Ford-Fulkerson)

struct edge{ int to,cap,rev;//终点,容量,反向边};vector<edge>G[N];//图的邻接矩阵表示bool used[N];//dfs中用到的访问标记//向图中增加一条从s到t容量为cap的边void addedge(int u,int v,int w){ G[u].push_back((edge){v,w,G[v].size()}

2017-07-21 14:32:43 755

原创 二分图最大匹配算法

/*该模板不用建立超级源点和超级汇点,直接把二分图中对应的边连接即可*/int V;//顶点数vector<int> G[N];//图的邻接表表示int match[N];//所匹配的点顶点bool used[N];//dfs中用到的访问标志//向图中增加一条连接u和v的边void addedge(int u,int v){ G[u].push_back(v);

2017-07-20 16:49:11 530

原创 Floyd-Warshall算法求矩阵的传递闭包

有向图的传递闭包表示从邻接矩阵A出发,求的所有节点间的路径可达情况int vis[N][N];//邻接矩阵,vis[i][j]=1表示i到j可达;void warshall(int x,int y) //warshall算法实现过程;{ for(int i = 0; i <= N; i++) vis[x][i] += vis[y][i];}void slove()

2017-07-20 16:01:58 1940

原创 51NOD 1213 二维曼哈顿距离最小生成树

因为是二维平面图,所以点很多,如果全部点都连边,将有N*(N+1)/2条边,数组肯定存不下,所以要想办法减少边数。题目要求的是最小生成树的权值,又是曼哈顿距离,可以发现,对于平面上的某个点,以该点为原点建立直角坐标系,则我们只需要连接四个象限中每个象限离它最近的那个点即可,所以边的数量减少到4*N。 对于每个点,用树状数组维护每个象限离它的最近的那个点的权值就好了#include <map>#i

2017-07-19 18:21:12 317

原创 最小生成树算法

常用的最小生成树算法主要有两种,Prim算法和Kruskal算法。Prim算法的原理是从一个顶点出发,贪心地选取当前点集中权值最小的边,知道所有的点都加入该点集中,算法结束 Prim算法:int cost[N][N];//无向图,双向连边,cost[u][v]表示e=(u,v)的权值,不存在时为INF;点从(1,1)开始int mincost[N];//从集合x出发的变道每个顶点的最小权值bo

2017-07-19 12:32:10 772

原创 全图最小割(Stoer-Wagner算法)

全图最小割大致是来解决这样一类问题: 给定一个n个点m条边的无向图,每条边有一个最大流量,给定一个源点s,求以哪个点作为汇点可以使整个图的最大流最小。思路分两步(引用网上的普遍解析): 一:找到S - T的最小割Mincut,其中S 和 T为最后并入集合的两个点。 1,初始化数组vis 和 wage; 2,遍历所有不在集合且没有被合并的点,找到最大wage值的点Next,并记录Mincut、

2017-07-18 20:15:56 969

原创 结构体优先队列自定义优先度

bool operator ()(int &a,int &b){ return a>b;//最小值优先 } bool operator ()(int &a,int &b){ return a<b;//最大值优先 } int x; bool operator < (const number1 &a) const {

2017-07-18 17:32:49 579

原创 XTU OJ Highway(树的直径)

树的直径是指树的最长简单路。 求法: 两遍DFS :先任选一个起点DFS找到最长路的终点,再从终点进行DFS,则第二次DFS找到的最长路即为树的直径; 原理: 设起点为u,第一次DFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于DFS找到了v矛盾) 2) 如果u不是

2017-07-18 15:14:39 350

原创 树状数组模板

从图中可以看到,树状数组中用的C[ ],每个点都有一定的管辖范围; 如C[1]=a[1]; C[2]=a[1]+a[2]; C[3]=a[3]; C[4]=a[1]+a[2]+a[3]+a[4];等等;基础模板:int lowbit(int x){ return x&(-x);}这个函数主要是用来求的是某个点管辖范围; 如果是x+=x&(-x);就是得到的改点的父节点的值;比如

2017-07-13 18:24:03 322

原创 Ignatius and the Princess III (母函数)

题目大意是给出一个数,求这个数能分解出来的加法算式的个数(加数顺序不分前后)母函数模板请看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/75041050这题的模板套得有点玄学,我是逐个参数试出来的,因为确实不知道怎么确定循环条件……………..#include<iostream>#include<cstdio>#include<cst

2017-07-12 21:12:26 1186

原创 Holding Bin-Laden Captive!(母函数)

题目大意是给出面值分别为1 2 5的硬币的数量,求用这些硬币不能搭配出来的总面值的方法数。母函数模板请看我的另一篇文章http://blog.csdn.net/rcy_zhu/article/details/75041050#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string

2017-07-12 21:07:34 3419

原创 Square Coins (母函数)

题目大意为:有1,4,9,16……..289(17^2)共17中不同的硬币,问有几种方法组成所给的数字。母函数模板请看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/75041050在这题上,可以轻易得出价值数组v[i]为每种硬币的面值; 共17种,所以K=17; 因为每种硬币无限,所n2[i]数组省略; 每种硬币可取可不取,所以n

2017-07-12 21:03:03 3497

原创 母函数

母函数是一个很神奇的东西。 详细请看某位大牛的文章,模板挺好的 http://blog.csdn.net/xiaofei_it/article/details/17042651模板: K对应具体问题中物品的种类数。 P对应具体问题的最大指数(通常是问题的最大解) v[i]表示该乘积表达式第i个因子的权重,对应于具体问题的每个物品的价值或者权重。(有时v[i]可以省略) n1[i]表示该乘

2017-07-12 20:54:24 331

原创 区间第k大的数(主席树)

套主席树求区间第k小的数的模板,然后求区间[l,r]第k大的数就等于求区间[l,r]第r-l+1-k小的数(下标从1开始)区间第K小值问题 有n个数,多次询问一个区间[L,R]中第k小的值是多少。查询[1,n]中的第K小值 我们先对数据进行离散化,然后按值域建立线段树,线段树中维护某个值域中的元素个数。 在线段树的每个结点上用cnt记录这一个值域中的元素个数。 那么要寻找第K小值,从根结点开

2017-07-10 21:10:05 681

原创 判断一个数是否包含平方因子

int miu(int num){ int cnt1=0,cnt2=0; for(int i=2;i*i<=num;i++) { cnt2=0; if(num%i==0) { cnt1++;//质因子个数 while(num%i==0)//判断该因子出现的次数

2017-07-10 17:43:16 1858

原创 判断四点共面

四个点构造三个向量,形成一个行列式 若行列式的值为0,则共面;不为0,则不共面 #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>using namespace std;struct Point{ int x,y,z;} p[5];int main()

2017-07-10 16:53:12 4829

原创 51Nod 旋转字符串

水题一道。 不难发现,一个字符串由对串旋转而来,其本身也是一个对串,所以直接判断给出的字符串是不是对串就好。 这里判断对串用到了KMP算法中的Next数组 (参考本人另一篇文章:http://blog.csdn.net/rcy_zhu/article/details/53105405) Next数组可以求出最大字符匹配数,所以只要截取给出字符串的一半求一遍Next数组就好。#include<

2017-07-10 16:00:36 271

原创 Bicycle Race

Bicycle Race

2017-03-23 19:42:49 472

转载 高斯消元模板

高斯消元求异或方程组int equ,val;//equ:方程数,val:变元int a[Max][Max];//增广矩阵int x[Max];//解集int free_x[Max];//自由变元int free_num;//自由变元的个数int Gauss()//返回-1表示无解;0表示有唯一解,生成解集x[];否则返回自由变元个数{ int max_r,col,k;//max_r

2016-11-21 20:18:20 287

原创 n!的长度

//给一个数X,len=log10(X)+1就是X这个数的长度 //当N的值不超过10^6时 //那么N的阶乘长度=log10(1*2*3*4*……*N)+1=log10(1)+log10(2)+log10(3)+log10(4)+……+log10(N)+1sum=0; for(int i=1;i<=n;i++) sum=sum+log10(i*1.0);

2016-11-09 21:10:55 374

原创 线段树

线段树主要用于多次查询和更改操作,时间复杂度是o(nlog(n)),n为区间长度ll

2016-11-09 20:48:30 83

空空如也

空空如也

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

TA关注的人

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