E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Hihocode
Hihocode
r #1121 二分图一•二分图判定( bfs或者dfs搜索实现 搜索的过程中进行 节点标记 *【模板】)
对于拿到的相亲情况表,我们不妨将其转化成一个图。将每一个人作为一个点(编号1..N),若两个人之间有一场相亲,则在对应的点之间连接一条无向边。(如下图) 因为相亲总是在男女之间进行的,所以每一条边的两边对应的人总是不同性别。假设表示男性的节点染成白色,女性的节点染色黑色。对于得到的无向图来说,即每一条边的两端一定是一白一黑。如果存在一条边两端同为白色或者黑色,则表示这一条边所表示的记录有误。
·
2015-11-08 16:02
code
hihocode
r #1062 : 最近公共祖先·一(小数据量 map+set模拟+标记检查 *【模板】思路 )
#1062 : 最近公共祖先·一 时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在其中,但这是为什么呢? “为什么呢?”小Hi如是问道,在他的观察中小Ho已经沉迷这个网站一周之久了,甚至连他心爱的树玩具都弃置一边。 “嘿嘿,小Hi,
·
2015-11-08 16:00
code
hihocode
r#1050 : 树中的最长路(树中最长路算法 两次BFS找根节点求最长+BFS标记路径长度+bfs不容易超时,用dfs做TLE了)
#1050 : 树中的最长路 时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已。 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(
·
2015-11-08 16:53
code
Trie树
在
hihocode
r.com有一个Trie树的问题,两个月前自己曾经AC过,可两个月后,发现自己居然用了将近两个小时才编码调试正确,瞬间发现自己当初在这一问题上,没有足够用心的思考过,看来有必要来整理整理
·
2015-11-08 15:34
trie
hihoCode
r-1000-A+B
题目描述:传统的A+B题 使用语言:C 代码: #include <stdio.h> int main(void){ int a,b; while((scanf("%d %d",&a, &b))!=EOF){ printf("%d\n",a+b); } r
·
2015-11-08 11:18
code
hihoCode
r#1097 最小生成树一·Prim算法
原题地址 Prime算法,每次挑选一个距离原点最近的节点,然后收缩(visited为true,设置该点到原点的距离为0) 注意:虽然Prime算法跟Dijkstra很像,但两者还是不一样的。 因为Dijkstra算法每次在挑选节点后不会收缩,所以,用Dijkstra挑选的边并不一定是最小生成树。 比如下面这张图,有a、b、c三个节点 2 a----b
·
2015-11-08 10:44
最小生成树
hihoCode
r#1093 最短路径·三:SPFA算法
原题地址 宽搜+剪枝,不是说好了适用于稀疏矩阵的嘛,怎么题目的测试数据边数达到10^6。。。不科学 代码: 1 #include <iostream> 2 #include <cstring> 3 #include <map> 4 5 using namespace std; 6 7 #def
·
2015-11-08 10:43
code
hihoCode
r#1081 最短路径·一
原题地址 Dijkstra算法,甚至都不用优化(堆或优先队列)即可过 代码: 1 #include <iostream> 2 #include <vector> 3 #include <set> 4 #include <cstring> 5 6 using namespace std;
·
2015-11-08 10:42
code
hihoCode
r#1089 最短路径·二:Floyd算法
原题地址 感觉Floyd算法比Dijkstra还要简单。。 唯一需要注意的是,初始的距离默认值不要设过大,否则溢出就不好了,根据题意,只要大于10^3即可 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6
·
2015-11-08 10:42
floyd
hihoCode
r#1077 RMQ问题再临-线段树
原题地址 终于做到线段树的题了,因为建树、更新、查询都是递归操作,所以其实挺好写的。 用数组存的树,记得MAX_NODE开成两倍叶节点数大小,否则RE啊。。不要问我是怎么知道的。 代码: 1 #include <iostream> 2 #include <climits> 3 using namespace std;
·
2015-11-08 10:41
code
hihoCode
r#1070 RMQ问题再临
原题地址 模拟题,naive算法即可过,想着顺便练习一下ST吧,结果还超时了。。。 看来ST真不适合处理动态修改的问题,连naive算法的效率都不如。 超时的ST代码: 1 #include <iostream> 2 3 using namespace std; 4 5 #define MAX_NODE 10008 6
·
2015-11-08 10:40
code
hihoCode
r#1069 最近公共祖先·三
原题地址 根据提示用Spase Table做 将Tree先展成List,因为数组长度等于边数的2倍,树中边数等于节点数-1,所以List数组只要开2倍节点数大小即可 WA了几次,原来是查询的时候出现左边界大于右边界的情况,所以这种情况要颠倒一下 代码: 1 #include <iostream> 2 #include <vecto
·
2015-11-08 10:39
code
hihoCode
r#1068 RMQ-ST算法
原题地址 Spare Table练习 记得用scanf和printf输入输出,否则会TLE 代码: 1 #include <iostream> 2 #include <cstring> 3 #include <cmath> 4 5 using namespace std; 6 7 #defi
·
2015-11-08 10:38
code
hihoCode
r#1048 状态压缩·二
原题地址 位运算的状态压缩太操蛋了,很容易出错。。。又是数组没开够导致诡异现象(明明某个值是1,莫名其妙就变成0了),害我debug一整天!fuck 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 #def
·
2015-11-08 10:38
code
hihoCode
r#1036 Trie图
原题地址 看了这篇博文,总算是把Trie图弄明白了 Runtime Error了无数次,一直不知道为什么,于是写了个脚本生成了一组大数据,发现果然段错误了。 调试了一下午,总算闹明白了,为什么呢? 1. 空间超大的变量不要放在函数里,会爆栈,应该弄成全局变量或者是从堆上动态分配。 2. 看清题目的数据范围,一开始我的MAX_NODE设的是1024。。。 代码:
·
2015-11-08 10:37
code
hihoCode
r#1066 无间道之并查集
原题地址 并查集+路径压缩 数据量不大,没有加秩优化 代码: 1 #include <iostream> 2 #include <map> 3 #include <cstring> 4 5 using namespace std; 6 7 #define SIZE 100010 8
·
2015-11-08 10:36
code
hihoCode
r#1067 最近公共祖先·二
原题地址 超时、超内存都碰到了。。最后还是参考了这篇博文才勉强AC 需要注意: 1. 肯定是树而不是森林,而且树的根节点一定是第一个出现的名字,所以不需要再去找哪个是根了。这样可以节省一部分内存。 2. 用并查集路径压缩的方法维护并查集结构即可,当查找的时候再压缩,不需要每次染黑节点的时候都压缩。这样可以节省一部分时间。 3. 字符串都转成id再做。 4. 能静态申请内
·
2015-11-08 10:36
code
hihoCode
r#1062 最近公共祖先·
原题地址 A和A的共同祖先是A,即使A没有在之前的家谱中出现过!被这个坑了,WA了很久。。。 比如:小头爸爸是大头儿子他爹,问:隔壁王叔叔和隔壁王叔叔的最近祖先是谁?,答:隔壁王叔叔。 代码: 1 #include <iostream> 2 #include <map> 3 #include <set> 4
·
2015-11-08 10:35
code
hihoCode
r#1055 刷油漆
原题地址 第一次做树的动归题,如果没有提示的话还是挺难的 提示里的递推式隐含了状态压缩(m从大往小遍历),不是那么好想,只能说不能再屌了。 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 #define
·
2015-11-08 10:34
code
hihoCode
r#1054 滑动解锁
原题地址 回溯搜索 对于每个待枚举的点,检查: 1. 度数检查:是否违反了出度入度限制。因为生成的路径除了首尾节点外,其他节点的出度和入度只能为2 2. 共线检查:是否违反了共线条件。即跨越了尚未枚举过的节点 对于枚举产生的路径,检查: 1. 长度检查:长度是否大于等于4 2. 完整性检查:是否包含了片段中出现的所有边 代码: 1 #incl
·
2015-11-08 10:33
code
hihoCode
r#1050 树中的最长路
原题地址 根据提示做即可,总感觉数据结构用的不好,以后看看大神都是怎么用数组存树的。 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 struct Node { 7 int first; 8 int s
·
2015-11-08 10:33
code
hihoCode
r#1049 后序遍历
原题地址 基本二叉树操作 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 void restore(char *pre, char *in, int len) { 7 if (len == 0) 8 r
·
2015-11-08 10:32
code
hihoCode
r#1044 状态压缩·一
原题地址 跟背包问题非常像,很巧妙,跟着提示做即可 需要注意的是,状态压缩以后,j的变化不是规律的,所以用一个临时缓冲back保存下一次迭代的结果。 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int onesum(int a) { 6 int su
·
2015-11-08 10:31
code
hihoCode
r#1042 跑马圈地
原题地址 经网友jokeren提醒,后面给出的代码虽然可以AC原题,但存在bug,主要是在矩形覆盖情况的判断上处理的不够完全。 看似挺复杂的,但是仔细分析一下可以化简: 首先,不用枚举周长,因为更长的周长总是能够围成更大的面积,所以只要考虑如何在周长为L的前提下枚举面积就行了。 下图中,用蓝色线框表示跑马的路线,灰色矩形表示臭水塘。 假设可以穿越臭水塘,那
·
2015-11-08 10:30
code
hihoCode
r#1043 完全背包
原题地址 基本动态规划题+状态压缩 看完提示反倒是不会做了。。 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() { 6 int N, M; 7 int best[500010] = {0}; 8 int value[
·
2015-11-08 10:30
code
hihoCode
r#1040 矩形判断
原题地址 一开始写了一个求交点然后算角度的,特别复杂不说,还很容易出错,WA了很久也不知道错在哪 后来想想,应该用向量做 四条直线能围成一个矩形 <=> 四条直线两两之间有4个平行关系,8个垂直关系 注意,直线重合并不算平行 代码清晰明了,一遍AC,这酸爽。 代码: 1 #include <iost
·
2015-11-08 10:29
code
hihoCode
r#1038 01背包
原题地址 基本动态规划 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() { 6 int N, M; 7 int score[100010]; 8 int need[512]; 9 int val
·
2015-11-08 10:28
code
hihoCode
r#1120 小Hi小Ho的惊天大作战:扫雷·三
原题地址 看上去非常复杂, 实际上是这一系列最简单的一步,本质上是个搜索过程,相比于前一道题,可以不用策略三,而且题目的数据规模超级小,所以暴力搜索就能过。 把尚未确定的点放在一个unsettled列表里,然后依次枚举每个点的情况:是地雷or不是地雷 优化方案一即:每次枚举后,使用规则一、规则二对列表里剩下的点进行判断,如果能直接判断出是不是地雷的就立即设置了,这样剩下的枚举
·
2015-11-08 10:27
code
hihoCode
r#1037 数字三角形
原题地址 基本动归,题目中给的提示很有意思 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 #define SIZE 128 6 7 int main() { 8 int n; 9 int puzzle[SIZE][SIZE];
·
2015-11-08 10:27
code
hihoCode
r#1119 小Hi小Ho的惊天大作战:扫雷·二
原题地址 没有复杂算法,就是麻烦,写起来细节比较多,比较考验细心,一次AC好开心。 代码: 1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #include <cstdlib> 5 6 usin
·
2015-11-08 10:26
code
hihoCode
r#1114 小Hi小Ho的惊天大作战:扫雷·一
原题地址 回溯+搜索 枚举每个位置上能否放地雷,当第i个位置枚举完成后,第i-1个位置的情况就确定了,此时,检查第i-1个位置是否满足要求,即左右间隔为1的范围内地雷数是否等于申明数字,如果满足条件,那么继续搜索下去,如果不满足条件,抛弃这个搜索分支。 搜索完成后,将所有可行解按位置“与”一下 ,找到那些一定为地雷或一定为空的格子。 最后输出即可。 代码:
·
2015-11-08 10:25
code
hihoCode
r#1094 Lost in the City
原题地址 限时10s,所以不用考虑什么算法了,暴力吧 分别按照3x3视野的四个方向去地图上匹配,把符合的地点标记出来,最后统一按照从上到下,从左到右的顺序输出。 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 #define MAP_SIZE 250 6
·
2015-11-08 10:24
code
hihoCode
r#1121 二分图一•二分图判定
原题地址 图的遍历,深度优先 向来对图的数据结构就练习的比较少,这种题目还是挺好的。 代码: 1 #include <iostream> 2 #include <vector> 3 #include <set> 4 5 using namespace std; 6 7 bool dye(ve
·
2015-11-08 10:24
code
hihoCode
r#1082 然而沼跃鱼早就看穿了一切
原题地址 字符串匹配+替换 注意替换串和原串长度是不等的,所以替换完还要进行收缩 可以顺带练习一下KMP 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 void kmp(char *l
·
2015-11-08 10:23
code
hihoCode
r#1051 补提交卡
原题地址 简单贪心 首先,补提交卡应该连续使用,其次,补提交卡应该全部用掉(如果补提交卡多于未提交天数则额外处理) 所以,依次遍历未提交日期,计算:从当前位置开始,用M张补提交卡覆盖后面连续M个数字,此时的连续提交天数。 代码: 1 #include <iostream> 2 3 using namespace std; 4
·
2015-11-08 10:22
code
hihoCode
r#1039 字符消除
原题地址 注意题目,连续字符同时被消除,所以消除无顺序区别。 纯模拟题,数据量很小,所以暴力做就行了:枚举所有可能插入的位置,每个位置再枚举插入字符 想了几个优化的方案,但是估计是哪里错了,导致得出的结果是WA。后来只好乖乖用最暴力的方法AC。 代码: 1 #include <iostream> 2 #include <cstri
·
2015-11-08 10:21
code
hihoCode
r#1032 最长回文子串
原题地址 这道题巧妙地利用了先前回文串的信息来减少后面的回文串计算量。 比如下面的字符串(圆圈代表字符)假设已经知道了某个字符的回文串情况(曲线连接的两个圆圈代表两个相同字符) 思考:这能给后面的回文串计算带来什么帮助呢? 一个巴掌拍不响,看看已知两个回文串有什么效果: 是不是有点意思了?为了更加直观,我们给曲线和点
·
2015-11-08 10:21
code
hihocode
r 1142 三分求极值【三分算法 模板应用】
#1142 : 三分·三分求极值 时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d。 提示:三分法 输入 第1行:5个整数a,b,c,x,y。前三个数构成抛物线的参数,后两个数x,
·
2015-11-07 14:04
code
hihocode
r #1032 : 最长回文子串【 manacher算法实现 】
#1032 : 最长回文子串 时间限制: 1000ms 单点时限: 1000ms 内存限制: 64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经
·
2015-11-07 14:58
code
hihocode
r 1078 线段树区域更新
#include #include #include usingnamespacestd; #defineM1000005 structtree{ intleft,right,sum,lazy; }; treeg[M]; intmap[M]; voidpushDown(inti) { if(g[i].lazy) { g[2*i].lazy=1; g[2*i+1].
weiqingliu
·
2015-11-05 15:00
ACM
#1116 : 计算
链接:http://
hihocode
r.com/problemset/problem/1116?
mymilkbottles
·
2015-11-02 19:00
hihoCode
r#1086 Browser Caching
原题地址 list+map可以轻松搞定,如果不借助STL实现起来还是挺麻烦的 代码: 1 #include <iostream> 2 #include <string> 3 #include <list> 4 #include <map> 5 6 using namespace std;
·
2015-11-02 18:15
browser
hihoCode
r#1139 二分·二分答案
原题地址 挺简单一道题,结果因为一时傻逼写错一个小地方,导致WA成狗了_(:з」∠)_ 代码: 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 5 using namespace std; 6 7 #define
·
2015-11-02 18:14
code
hihoCode
r#1141 二分·归并排序之逆序对
原题地址 又是一道WA成狗的题,最后发现原来是结果溢出了。。 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 #define MAX_N 100008 7 8 int N; 9 long lo
·
2015-11-02 18:14
code
hihoCode
r#1133 二分·二分查找之k小数
原题地址 经典问题了,O(n)时间内找第k大的数 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int N, K; 6 int *a; 7 8 int search(int left, int right, int k) { 9 if (left >
·
2015-11-02 18:13
code
hihoCode
r#1128 二分·二分查找
原题地址 一开始没搞懂题目是想干什么,于是写了一个扫一遍的代码,A了,如下: 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() { 6 int N, K, a; 7 bool found = false; 8 int l
·
2015-11-02 18:12
code
hihoCode
r#1127 二分图三·二分图最小点覆盖和最大独立集
原题地址 主要是介绍了两个定理: 1. 二分图最大匹配数 = 二分图最小点覆盖数 2. 二分图最小点覆盖数 = 二分图顶点数 - 二分图最小点覆盖数 注意,都是二分图 代码:(匈牙利算法) 1 #include <iostream> 2 #include <cstring> 3
·
2015-11-02 18:11
code
hihoCode
r#1122 二分图二•二分图最大匹配之匈牙利算法
原题地址 只能说匈牙利算法不能更屌,而且提示里给的伪码也不能更屌了! 只用了第二个优化,因为将输入点集分割成A、B似乎挺麻烦的,索性就没用这个优化。 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 #de
·
2015-11-02 18:11
code
hihoCode
r#1105 题外话·堆
原题地址 有没有更优雅地堆模板啊,总感觉我写的有些啰嗦 代码: 1 #include <iostream> 2 3 using namespace std; 4 5 #define MAX_NODE 100008 6 7 struct Heap { 8 int core[MAX_NODE]; 9 i
·
2015-11-02 18:10
code
hihoCode
r#1109 最小生成树三·堆优化的Prim算法
原题地址 坑了我好久。。。提交总是WA,找了个AC代码,然后做同步随机数据diff测试,结果发现数据量小的时候,测试几十万组随机数据都没问题,但是数据量大了以后就会不同,思前想后就是不知道算法写得有什么问题,因为本来就没什么复杂的地方嘛! 后来,突然灵机一动,莫非又是数组开小了? 突然意识到,我是用数组保存图的,所以对于无向图,边数实际上是输入的2倍,于是把数
·
2015-11-02 18:09
最小生成树
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他