自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tystrwor的博客

。。。

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

原创 HDU - 5521 Meeting 【[精]最短路】

HDU - 5521题目大意:有N个点,两个人,其中一个人住在点1,另一个人住在点n 有M个点集,集合内的数表示任意两点的距离为dis 现在问,如果两个人要见面,需要最短距离是多少,有哪几个点能被当成见面点。思路:对两人所在位置求一遍最短路,然后枚举在每个点的相遇时间,求个最大值记录一下。关键是如果直接给每个集内合建边,将会TLE。思路一:对于每个集合建一个点,然后

2017-09-27 21:49:52 167

原创 POJ - 3417 Network 【LCA模板+树形DP】

POJ - 3417入口 题意:先给出一棵n个点的无根树,然后下面再给出m条边,把这m条边连上,然后每次你能破坏两条边,规定一条是树边,一条是新边,问有多少种方案能使树分为两部分。思路:我们知道,这m条边连上后这颗树必将成环,假设新边为(u,v),那么环为u---->LCA(u,v)------->v-------->u,我们给这个环上的边计数1,表示这些边被一个环覆盖了一次。添加

2017-09-22 21:50:55 222

原创 【最小费用流】

一、有时间再完善const int INF=0x3f3f3f3f;const int MAXN=66;struct edge{ int to,cap,cost,rev; edge(int x,int y,int z,int w) { to=x;cost=y;cap=z;rev=w; }};vector g[MAXN];int pr

2017-09-21 22:21:26 213

原创 【排序算法大合集】

一、归并排序#include#include#include#include#includeusing namespace std;typedef long long LL;const int N=110000;int a[N],b[N],n;LL ans;void gsort(int l,int r){ if(l>=r)return; int mi

2017-09-21 22:12:48 135

原创 【最长上升子序列nlog(n)】

#include#include#include#include#includeusing namespace std;typedef long long LL;const int N=1005;int a[N],d[N],n;int LIS(){ d[1]=a[1]; int len=1,p; for(int i=2;i<=n;i++) {

2017-09-21 22:09:41 349

原创 【双连通分量模板】

一、点双联通分量1.调用init()初始化。然后调用find_vbcc();求解。2.N,n是点数,M,m是边数。3.belong表示该点属于哪一个联通分量(割顶无意义),bcc表示该联通分量的点,isc表示该点是否为割顶,bcc_cnt点双联通分支数量。const int N=10010;const int M=200020;struct edge{ int f

2017-09-21 19:57:49 403

原创 HDU6214 Smallest Minimum Cut【最小割-最小边数】

Smallest Minimum CutTime Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 471    Accepted Submission(s): 172Problem DescriptionConsider a

2017-09-17 22:31:40 427

原创 【最大流模板】

一、FF算法1.先调用init()初始化,然后max_flow(s,t)最大流,s为源点,t为汇点。2.N是点数,n是点数,m是边数。3.cap容量,跑完最大流后cap为零即为割边。const int N=500;const int INF=0x3f3f3f3f;struct edge{ int to,cap, rev; edge(int x=0,int

2017-09-17 22:19:47 154

原创 HDU - 5492 Find a path 【DP+数学】

HDU - 5492入口Problem Description题意:给定n*m的矩阵(n(N+M−1)∑N+M−1i=1(Ai−Aavg)2最小。solve这个式子我找不到任何有用的规律。通过化简这个式子变成(n+m-1)*sum(ai*a[i])-sum(a[i])*sum(a[i]).发现当sum(a[i]*a[i])的值固定,sum(a[i])越大,结果越小。但是

2017-09-13 10:37:10 173

原创 HDU - 5489 Removed Interval 【DP经典LIS】

HDU - 5489入口题意:给定n(n分析:假设去掉第k(k>m)项左边的m个数(不包含k)所得到的LIS最长。并且a[k]在最长上升子序列中。倘若去掉当前区间的数的情况下,a[k]在LIS子序列中的答案不是最佳,则a[k]不在最长LIS中,即a[k]可以去掉(去掉的区间右移),去掉k项左边的m个数的最长LIS并没有遗漏。然后就是求出以k为第一项的右区间最长LIS。加上左边小于a[k]的

2017-09-13 10:12:10 232

原创 HDU 6205 card【单调队列思想+暴力】

card card cardTime Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0Problem DescriptionAs a fan of Doudizhu,

2017-09-10 18:48:11 521

原创 HDU 6201transaction 【树形DP】

2017 ACM/ICPC Asia Regional Shenyang Onlinetransaction transaction transactionTime Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total Submission(s): 0    A

2017-09-10 18:02:43 583

原创 考研路茫茫——空调教室【双联通分量+树形DP】

重磅炸弹——网易游戏雷火盘古校园招聘开始!考研路茫茫——空调教室Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3609    Accepted Submission(s): 1100Problem Descri

2017-09-08 11:13:12 319

原创 HDU - 2242M - 考研路茫茫——空调教室【双联通分量+树形DP】

重磅炸弹——网易游戏雷火盘古校园招聘开始!考研路茫茫——空调教室Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3609    Accepted Submission(s): 1100Proble

2017-09-08 11:10:13 277

原创 【STL常用模板】

C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。set&multiset一,

2017-09-07 11:10:59 162

转载 【STL之map总结】

map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有

2017-09-07 10:51:50 228

转载 【STL之set总结】

感谢原作者:点击打开链接1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:

2017-09-07 10:49:29 180

原创 HDU - 3594 Cactus【强连通分量+一条边只能在一个环内】

HDU - 3594入口题意:判断题目中给出的图是否符合,这图只有一个强连通分量 ,一条边只能出现在一个环里。分析:判断只有一个连通分量用Tarjan算法就可以。关键是第二个。我们把对边的判断转化为对点的记录,在tarjan深搜的过程中,使用fa数组记录一下搜索的过程,即每个节点的父子关系,当我们发现一条回边的时候,我们从这个点使用fa向前追溯,追溯过程中建立一个数组记录每个节点的情况

2017-09-06 20:45:22 349

原创 【二分图最大匹配-匈牙利算法及其优化算法模板】

一、匈牙利算法1.N是点数,下标1-n2.用g.push_back建图后,直接调用max_macth()得到最大二分匹配3.最终,liky表示与“y轴”上i匹配的值。const int N=1000;vector g[N];int lik[N],n,m;bool visy[N];bool dfs(int x){ for(int i=0;i<g[x].si

2017-09-06 15:45:05 623

原创 【LCA模板】

倍增法1.N是点数,M是边数.下标范围1-n。2.先init1()初始化-> add(x,y),dfs()->init2()->LCA(x,y)4.dep存的是深度,fa[i][j]存的是j向上走(1<<i)步的祖宗节点为位置const int N=300100;const int M=300100;int fa[20][N],head[N],dep[N];int nu,n

2017-09-06 09:49:00 239

原创 POJ 6184 【三元环 +分治】

POJ6184入口 题意: 给一张图,n(n思路:暴力枚举每一条边(两端点设为x,y) 然后枚举第三个点z。1.当du[y]2当du[y]>sqrt(m) ,枚举与x相连的点z,用二分在y中查找z(可以用set,耗时比二分多),每次查找时间log(g[y].size()).,由于这种点很少。每次时间与x相连的点数*log(与y相连的点数)对于每条边枚举的三元环k,答

2017-09-05 20:32:58 262

转载 Farmer John的故事

从前有个农民,名字叫约翰,于是大家叫他Farmer John(FJ)。FJ养了很多奶牛,这些奶牛很聪明,它们很喜欢看自然科学和数学书,但是它们对书的ISBN码感到奇怪,于是就有了ISBN问题。渐渐的,奶牛们的书多了起来,于是它们决定买背包来放书,然后就有了背包问题。奶牛们又喜欢上了下棋,于是就有了过河卒与骑士巡游问题。奶牛们决定航海去增长见识,在途中它们参与了对一艘名叫铁达尼克号的船的营救。最后,...

2017-09-04 16:57:44 6152 8

原创 【强连通分量模板】

1.调用时先初始化 用add(x,y)增加边,调用solve()后才能缩点2.N是点数 M是边数 (点是从1到n)3.bcc 记录第i个连通分量的点 belong表示点属于哪个连通分量 4.g是缩点后的树 5.du记录缩点后的图的每个联通分支出度(不等于新树的每点的出度)const int N=10010; const int M=100100; vector bcc[N],g

2017-09-04 16:27:43 242

原创 HDU - 3245 Treeland Exhibition【树形DP】

HDU - 3245传送门题意:有n(1分析:这道题最初做,感觉不好下手,拖啦三天,才写出来。先随便找一点作为根把无根树转化为有根树。设d[x][l]表示从x根节点向下延伸l个点(包括x)的最大“节省距离”。(假设x有一根节点y,dp[x][2]延伸到y,那么节省距离就是,原本y子树的点到x为最近点,路径延伸到y,此时最近点为y,节省的距离就是y子树减小的距离和)#

2017-09-03 14:59:33 266

原创 POJ 4899 Hero meet devil 【DP套DP[预处理]】

POJ4899入口题意:一段DNA序列S,只包含字符ATGC,长度不超过15,求有多少种长度为m的DNA序列与s的最长公共子序列长度为0~n。分析:DP,开始用dp[i][s]表示在T串中已排列i个字符,且与S串匹配为状态s时的数量。但是当此时枚举T串的下一个(i+1)字符时。状态怎么转移呢。我开始想的是在s串最后一个字符之后开始匹配。但是这有一个问题(比如设S串为GTC,XXCG

2017-09-01 16:27:42 243

空空如也

空空如也

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

TA关注的人

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