hiho
文章平均质量分 53
_pkm_
love coding
展开
-
#1195 : 高斯消元·一(模板题)
题目链接高斯消元,使用列主元的方法即可。 如果使用浮点数计算的话,要注意精度问题,还有一个题目的讲解有个小问题,我的提问#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#d原创 2016-08-25 20:49:10 · 452 阅读 · 0 评论 -
HIHO #1089 : 最短路径·二:Floyd算法
题目链接 题目的提示,讲解的很好,通过不断增加可以通过的节点的,然后更新最短路#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k)原创 2016-08-10 21:39:06 · 299 阅读 · 0 评论 -
HIHO #1078 : 线段树的区间修改
题目链接 线段树区间修改,使用懒惰标记,向下更新,向上更新#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#原创 2016-08-10 08:27:59 · 254 阅读 · 0 评论 -
HIHO #1077 : RMQ问题再临-线段树
题目链接 线段树入门,单点修改,区间查询 线段树的空间一般开题目数据范围4倍#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<原创 2016-08-10 07:36:41 · 467 阅读 · 0 评论 -
HIHO #1070 : RMQ问题再临
题目链接 小数据暴力,大数据线段树#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vect原创 2016-08-10 07:05:49 · 269 阅读 · 0 评论 -
HIHO #1067 : 最近公共祖先·二(并查集+dfs LCA离线算法)
题目链接l LCA 的算法还是有很多的,这里是并查集+dfs,是离线的算法 参考题目的提示,以及这个可以很好的理解 #include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#in原创 2016-08-09 19:19:34 · 300 阅读 · 0 评论 -
HIHO #1069 : 最近公共祖先·三(RMQ+DFS LCA在线算法)
题目链接 RMQ+DFS 实现在线的算法,dfs把树离散成一棵树,然后跑rmq,这个hihoCoder里面讲解的很好#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#inc原创 2016-08-09 21:52:07 · 322 阅读 · 0 评论 -
HIHO #1068 : RMQ-ST算法
题目链接#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vector>using name原创 2016-08-09 20:22:10 · 369 阅读 · 0 评论 -
HIHO #1062 : 最近公共祖先·一
题目链接题目数据小直接暴力计算小坑点:a==b 的时候输出a就好了#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib原创 2016-08-09 18:01:16 · 388 阅读 · 0 评论 -
HIHO #1190 : 连通性·四(点的双联通分量)
题目链接点的双联通分量,不注意写出了一个bug,找了2个多小时= =,我的边存的是0开始的,然后ans数组一开始也是0,然后就是if的地方。。。。。还是tarjan的算法,结合提示,这里需要存边,然后栈里面保存的是边,而不是点,这里我用边的在边集es中的编号,作为边的标志#include<bits/stdc++.h>using namespace std;#define cl(a,b) mems原创 2016-08-20 20:23:06 · 376 阅读 · 0 评论 -
HIHO #1181 : 欧拉路·二(fleury算法输出欧拉路径)
题目链接点之间可能存在多条边,所以存边,然后标记每条边的标号,还是一个常见的存边的表示法#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j原创 2016-08-18 20:20:07 · 529 阅读 · 0 评论 -
HIHO #1185 : 连通性·三
题目链接先使用tarjan算法,计算强连通分量,进行缩点成DAG,然后在使用拓扑排序计算tarjan中,我们只需要从1号节点计算,因为开始时在1号点。 建立新图的过程中,1号点不能到达的点也不用建立到新图里面#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL lo原创 2016-08-20 15:58:57 · 318 阅读 · 0 评论 -
HIHO #1184 : 连通性二·边的双连通分量
题目链接Tarjan算法,介绍可以看题目讲解,很好很清楚#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j原创 2016-08-20 10:08:06 · 322 阅读 · 0 评论 -
HIHO #1093 : 最短路径·三:SPFA算法
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbi原创 2016-08-10 21:47:41 · 417 阅读 · 0 评论 -
HIHO #1105 : 题外话·堆
题目链接 偷懒直接使用优先队列#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#原创 2016-08-11 06:58:50 · 279 阅读 · 0 评论 -
HIHO #1196 : 高斯消元·二(异或方程组)
题目链接用高斯消元解异或方程组是一个经典的使用。本体是经典的开关问题,我们把每一个位置的开关状态用01表示, 然后可以列出30个方程,30个未知数,未知数表示开关状态,系数表示每个位置的开关的能够影响到的开关,题目给出的状态作为方程式的右边b向量,(Ax = b),然后直接高斯消元解#include<bits/stdc++.h>using namespace std;#define cl(a,原创 2016-08-26 17:12:38 · 517 阅读 · 0 评论 -
#1142 : 三分·三分求极值 ( 三分极值 )
#1142 : 三分·三分求极值时间限制:10000ms单点时限:1000ms内存限制:256MB描述这一次我们就简单一点了,题目在此:[week40_1.PNG]在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d。提示:三分法输入第1行:5个整数a,b,c,x,y。前三个数构成抛物线原创 2015-04-13 22:48:42 · 815 阅读 · 0 评论 -
HIHO #1066 : 无间道之并查集
题目链接并查集入门#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vector>using原创 2016-08-09 18:15:40 · 277 阅读 · 0 评论 -
HIHO #1080 : 更为复杂的买卖房屋姿势(线段树双标记)
题目链接两种操作, 0)区间加减,记add标记 1)区间设置为某一个值,记set标记使用2个懒惰标记,然后注意的是,2个操作的优先级,也就是下放节点的标记的时候,注意先检查set标记,因为set是会覆盖掉区间的加减操作的。#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#defi原创 2016-08-10 21:18:15 · 416 阅读 · 0 评论 -
HIHO #1298 : 数论五·欧拉函数
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#define LL long long#define pb push_back#define gcd __gcd原创 2016-08-27 12:59:26 · 430 阅读 · 0 评论 -
HIHO #1303 : 数论六·模线性方程组
题目链接解多个线性的模方程组 提示讲的很清楚辣#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#define LL long long#define pb push_ba原创 2016-08-27 16:55:10 · 617 阅读 · 0 评论 -
HIHO #1308 : 搜索二·骑士问题
题目链接可以直接跑三次bfs,也可以使用18位的二进制表示3个人的状态,一次bfs,因为坐标在0-7,所以一个数字只用3位就够了,然后6个数字,一共18位就够了#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(fa原创 2016-08-29 09:03:55 · 425 阅读 · 0 评论 -
POJ 2449 Remmarguts' Date (A* 第k短路)
题目链接给出n个点,m条边的有向图,问s到t的第k短路长度。使用A*进行计算,每次不判重,把每一个点的相邻的所有状态加入到扩展集合中,判断t出队的次数为k就是k短路。 这里的 A *的H函数我们用单源最短路径计算从t到每个点的最短距离,因为是有向图计算的时候把图反向一下。注意:当s==t的时候,k需要加以1。//#include<bits/stdc++.h>#include<iostream>#原创 2016-08-31 09:51:59 · 284 阅读 · 0 评论 -
HIHO #1304 : 搜索一·24点
题目链接数据少,直接暴力,枚举4个数字的排列,然后再枚举3个符号的情况因为4个数字,加括号有以下几个情况: (a b c d ) (a b) c d, a (b c) d, a b (c d) (a b c) d, a (b c d) (a b) (c d) 上面的前6个只是改变了计算的顺序,我们通过数字的排列可以得到,但是最后一个情况是无法得到的,所以要另外判断#include<bi原创 2016-08-27 21:10:32 · 561 阅读 · 0 评论 -
HIHO #1287 : 数论一·Miller-Rabin质数测试
题目链接注意一点的是快速幂,过程中乘法,使用快速乘法,避免溢出#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#define LL long long#define pb原创 2016-08-26 20:28:46 · 608 阅读 · 0 评论 -
HIHO #1098 : 最小生成树二·Kruscal算法
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbi原创 2016-08-11 07:55:16 · 385 阅读 · 0 评论 -
HIHO #1109 : 最小生成树三·堆优化的Prim算法
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbi原创 2016-08-11 07:48:30 · 498 阅读 · 0 评论 -
HIHO #1183 : 连通性一·割边与割点
题目链接使用Tarjan算法计算无向图的割点和桥,提示讲解的也很清晰 需要注意的是,某一个割点可能会被多次计算,所以一般是先记录然后最后统一输出#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#de原创 2016-08-20 09:32:48 · 300 阅读 · 0 评论 -
HIHO #1182 : 欧拉路·三(有向图 输出欧拉路径)
题目链接A)建图是巧妙,使用边表示每一个数字,那么就是走完每一个边一次 B)建图是有向图,建图需要注意,同时,输出的时候逆序输出#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd原创 2016-08-19 16:20:22 · 494 阅读 · 0 评论 -
HIHO #1175 : 拓扑排序·二
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbi原创 2016-08-18 16:01:26 · 269 阅读 · 0 评论 -
HIHO #1162 : 骨牌覆盖问题·三
题目链接这题和之前的一个 状态压缩二,是很类似的,这道题的n比较大,开不下数组,无法使用之前的类似方法,但是由于k比较小,可以使用状态压缩,结合这道题目的前2个版本,考虑使用矩阵快速幂进行计算,关键是计算出状态转移的矩阵M,使用dfs,跑出状态转移矩阵 用二进制表示状态, 上一行的状态用y表示 当前这一行的状态用x表示 枚举当前这一行的每一个空的位置,放置骨牌,有3种情况,题目的提示讲解的很原创 2016-08-18 15:41:29 · 696 阅读 · 0 评论 -
HIHO #1048 : 状态压缩·二(1X2铺地NXM)
题目链接#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vector>using name原创 2016-08-08 08:55:39 · 684 阅读 · 0 评论 -
HIHO #1141 : 二分·归并排序之逆序对
题目链接复习一下了,本题ans会比较大用lld#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k原创 2016-08-18 08:45:38 · 314 阅读 · 0 评论 -
HIHO #1139 : 二分·二分答案
题目链接假定一个解可行,然后二分判断,判断给出的值是不是可以到达终点,我们使用bfs搜一下#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,原创 2016-08-18 08:25:34 · 384 阅读 · 0 评论 -
HIHO #1128 : 二分·二分查找(快速排序一半)
题目链接快速排序应用#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define原创 2016-08-17 20:21:05 · 706 阅读 · 0 评论 -
HIHO #1127 : 二分图三·二分图最小点覆盖和最大独立集
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbi原创 2016-08-17 19:45:25 · 298 阅读 · 0 评论 -
HIHO #1122 : 二分图二•二分图最大匹配之匈牙利算法
题目链接以前学习过,复习一下#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#de原创 2016-08-17 19:35:11 · 266 阅读 · 0 评论 -
HIHO #1121 : 二分图一•二分图判定
题目链接图可能是非连通的,计算每一个子图是不是都是满足二分图的性质#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int原创 2016-08-17 19:34:12 · 246 阅读 · 0 评论 -
HIHO #1297 : 数论四·扩展欧几里德
这里写链接内容计算Ax+By=C 如果C是gcd(A,B)的整数倍,就有解,否则无解你用扩展欧几里得,计算上述公式,只需计算A1 x+B1 y=1; A1=A/gcd(A,B),B1=B/gcd(A,B);最后在把x扩大C/gcd(A,B)倍。x可能是负数,如果要求正数,可以扩充解系,我们需要将(A’,B’,x’,y’)扩充为一个解系。 由于A’B’是互质的,所以可以将A’x’+B’y’=1扩原创 2016-08-27 12:46:01 · 448 阅读 · 0 评论 -
HIHO #1296 : 数论三·约瑟夫问题
题目链接#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(false);cin.tie(0);#define LL long long#define pb push_back#define gcd __gcd原创 2016-08-27 11:06:49 · 459 阅读 · 0 评论