自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

On the way

blog

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

原创 URAL-1627-Join(生成树计数模板)

URAL-1627-Join(生成树计数模板)生成树计数ppt题目链接:URAL-1627-Join对于度数矩阵 DD 。Dij={d[i],0,if i=j,d[i]为点i的度数elseD{ij}= \begin{cases} d[i], & \text {if $i=j$,$d[i]$为点i的度数} \\ 0, & \text{else} \end{cases} 对于邻接矩阵AA 。Aij={1

2017-02-28 14:14:39 581

原创 矩阵行列式计算

矩阵行列式计算要求矩阵行列式,需要通过初等变换使得矩阵变为三角矩阵,然后对角线元素之积就是矩阵行列式的值。但是一般的初等变换可能导致浮点数的产生从而影响精度。因此这里使用辗转相除法进行初等变换。本算法是将其转化为上三角矩阵。因此从第一行开始,处理第 ii行 时,要将第 (i+1)(i+1) 行到第 nn 行的第 ii 列的元素转化为 00 ,这样处理完成后就是上三角矩阵了。对于第 ii 行,处理第

2017-02-27 20:45:24 17299

原创 Codeforces-766D-The Door Problem(2-SAT-并查集解)

题目链接:Codeforces-766D-The Door Problem首先可以知道一个钥匙只能使用0或1次。使用多次时与使用0或1次等效。如果一个门状态是1,那么与这个门关联的两个钥匙要么都使用1次,要么都使用0次。如果一个门状态是0,那么一个钥匙使用1次,另一个钥匙使用0次。用u表示钥匙u使用0次,用u+m表示钥匙u使用1次。然后使用并查集维护。如果u和u+m在同一个集合

2017-02-25 22:21:15 884

原创 Codeforces-776C-Molly's Chemicals(前缀和)

题目链接:Codeforces-776C-Molly's Chemicals首先考虑到任意一个区间和都等于两个前缀和之差。区间和为sum。sum=pre[r]-pre[l] 。要求sum是k的幂次。我们可以枚举sum。最多有log_2(10^14)中可能的sum。然后找满足r>l&&sum=pre[r]-pre[l]的个数即可。#include#define mp m

2017-02-25 22:15:51 2452

原创 HDU - 4009-Transfer water (最小树形图)

题目链接:HDU - 4009-Transfer water最小树形图模板。 二重循环下标写同样的WA了好久。。。#include<bits/stdc++.h>using namespace std;int n,x,y,z,m;const int maxn=1007;const int INF=2e9+7;struct Edge{ int u,v; int d;};E

2017-02-21 23:05:09 404

原创 HDU-2121-Ice_cream’s world II 9(不定根最小树形图)

题目链接:HDU-2121-Ice_cream’s world II 9给定一个图,要求找到其最小树形图,并给出其权值以及最小树形图的根。思路是设置一个人造根,这个根对所有点都有一条出边,权值大于原图所有边的权值sum。 这样原图的树形图再加上一条人造边就是新图的最小树形图。 这样我们可以得到权值,如果权值>=sum*2,则说明引入了大于等于两条人造边,这说明原图无法构成一个树形图。否则权值-s

2017-02-21 21:49:33 355

原创 UVA-11183- Teen Girl Squad(最小树形图模板)

题目链接:UVA-11183- Teen Girl Squad最小树形图,套模板即可。#include<bits/stdc++.h>using namespace std;const int INF=1e9+7;int n,m;struct Edge{ int u,v,d;};Edge edges[40007];int in[1007],vis[1007],id[1007

2017-02-21 18:08:22 528

原创 POJ-3164- Command Network(最小树形图)

题目链接:POJ-3164- Command Network最小树形图的算法: 1. 找出除根之外每个点的 in[i] , in[i] 表示点i所有入边的最小值。 2. 检测图中是否有环,若无环,则已经找到最小树形图。若有环,则将环染色缩点,若u与v在同一个环中,中,那么 id[u]==id[v]id[u]==id[v] 。 3. 缩点,对于边 (u,v,d)(u,v,d) ,将其转化为 (i

2017-02-21 14:38:02 252

原创 HDU-4081-Qin Shi Huang's National Road System (次小生成树)

题目链接:HDU-4081-Qin Shi Huang’s National Road System题意是给定坐标系上的n个点的坐标和人口,要求这 nn 个点之间构成一棵树, AA 定义为该边两端点的人口数之和, BB 定义为除了该边外其他边的长度。求 AB\frac{A}{B} 的最大值。考虑到 n<=103n<=10^3 ,那么边的数量 e<106e<10^6 ,所以枚举每一条边,每一条边的 A

2017-02-20 20:57:38 310

原创 UVA-10462-Is There A Second Way Left? (次小生成树带重边)

题目链接:UVA-10462-Is There A Second Way Left?有重边的次小生成树。。。所以用了邻接表的Prim。。不过边很少用Kruskal应该也能过。#includeusing namespace std;int n,m;const int INF=0x3f3f3f3f;int Max[107][107];bool vis[107],evis[

2017-02-17 18:41:33 441

原创 UVA-10600-ACM Contest and Blackout (次小生成树三种解法)

题目链接:UVA-10600-ACM Contest and Blackout次小生成树有两种算法,一种是先跑一次最小生成树并记录下每条边,然后每次仅删去一条边,跑n-1次最小生成树取最小值为次小生成树,这样的时间复杂度是O( n∗m∗logmn*m*logm ) (Kruskal) 还有一种就是跑一次最小生成树的过程中得到 MaxMax 数组,Max[i][j]Max[i][j] 的值为i到j的

2017-02-17 17:53:07 431

原创 POJ - 1679 - The Unique MST (检验最小生成树是否唯一)

POJ - 1679 - The Unique MST 检验最小生成树是否唯一 首先生成一个最小生成树,将他的所有边记录下来,然后每次单独删去其中一条边,若删去边后图联通且最小生成树的权值与没删去边时相等,那么不唯一。然后再放回。#include<vector>#include<algorithm>#include<iostream>using namespace std;int fat

2017-02-16 22:26:42 361

原创 Codeforces Round #397 - E - Tree Folding (找树中直径,dfs)

题目链接: Codeforces Round #397 - E - Tree Folding题意:给定一棵树,每次操作可以选择一个点 rtrt ,然后选择 rtrt 的两条链(这两条链长度相同,且除了rtrt外的所有点都不与不是自己链的点相交),然后合并这两条链。求能否通过有限次操作使得最后得到一条链,并输出这条链的最小长度。解法:先找到树中直径(树中最长路径)的中点,将这个中点当成根,然后通过

2017-02-16 20:38:47 345

原创 Codeforces Round #396 (Div. 2)

比赛链接:Codeforces Round #396 (Div. 2)A:找最长不公共连续子序列。显然若s!=t,输出s和t最大长度,否则输出-1.#includeusing namespace std;typedef long long ll;int main(){ string s,t; while(cin>>s>>t) { if(s.length()>t.len

2017-02-09 20:24:03 104

原创 Weekly Training Farm 22 - B - ACM-ICPC Contest (背包)

题目链接:Weekly Training Farm 22 - B - ACM-ICPC Contest可以看成背包问题,每道题看成一个物品。对于相同的问题组,当按完成时间升序做题时,罚时最小。所以先对所有问题排一下序。然后就是普通的0-1背包。不过要重定义一下max函数,当做题数最多,罚时最小时,是所要求的最值。然后dp就行了。#includeusing namespac

2017-02-04 21:08:32 252

原创 Weekly Training Farm 23

比赛链接:Weekly Training Farm 23A:优先队列乱搞:#includeusing namespace std;typedef long long ll;struct cmp{ bool operator () (const ll a,const ll b) { return a>b; }};int main(){ int n; while(c

2017-02-04 16:21:50 311

原创 HDU-4553-约会安排(线段树维护最长连续区间)

题目链接:HDU-4553-约会安排线段树维护最长连续区间,query用来找长度=dur的区间左端点,update更新区间内的ll,rr,mm,ill,irr,imm的值 。#includeusing namespace std;typedef long long LL;const int maxn=1e5+7;int ll[maxn<<2],rr[maxn<<2],mm[

2017-02-02 17:08:35 659

空空如也

空空如也

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

TA关注的人

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