ACM_hihoCoder
luke2834
A junior researcher~
展开
-
hihoCoder37周 分治 O(n)第k大数~
题意 给你无序序列,找第k大的数思路 直接排序就能过。。。不过为了练练手,就写了个O(n)的算法~很经典~ 快排算法,向枢轴两侧递归的去快排,而这里指向一边去快排,当枢轴位置>k,向左快排,反之,向右即可~#include #include #include #include using namespace std;int a[1000006];int n,k;i原创 2015-03-19 13:08:52 · 554 阅读 · 0 评论 -
hihoCoder 1069 最近公共祖先 在线算法
题意多组询问,求最近公共祖先思路基本思路就是,把节点映射到一个数组的下标中,然后数组记录每个点的深度我们需要保证,每两个节点映射的位置间,存在只存在它俩的最近公共祖先,而不存在其它祖先我们先想一下,如果是一个二叉树,我们只要按照中序周游的顺序,存入数组中,是不是就满足要求了那么,现在这个树不一定是二叉的,那么类似二叉中序遍历,对u节点,访问完第一个子树后,存一下节点u的深度,再访问第二个原创 2016-01-30 00:53:36 · 934 阅读 · 0 评论 -
hihoCoder 1068 RMQ-ST算法模板题
题意RMQ问题,Q个询问查询区间最小值思路dp(i,j) 表示[i, i+2^j]区间内的最小值dp(i,j) = min(dp(i, j-1), dp(i+2^(j-1), j-1) )查询[l,r]时,len = log2(l-r),min(dp(l, len),dp(r-(2^len), len) )实现#include <bits/stdc++.h>using names原创 2016-01-05 19:27:42 · 576 阅读 · 0 评论 -
hihoCoder 1121 二分图判定
题意判断一个图是否为二分图思路直接深搜染色实现#include <iostream>#include <cstring>#include <cstdio>#include <vector>using namespace std;const int maxn = 100005;#define pb push_backint T;int n,m;vector<int> g[ma原创 2015-12-02 14:58:07 · 481 阅读 · 0 评论 -
hihoCoder1067 最近公共祖先离线查询 dfs + 并查集
题意给定树,有q个查询,查询点对的最近公共祖先思路课参考题中给的解析:http://hihocoder.com/problemset/problem/1067实现#include <bits/stdc++.h>using namespace std;int n,m;const int maxn = 1e5+5;vector<int> g[maxn];typedef pair<int原创 2016-01-01 20:29:09 · 493 阅读 · 0 评论 -
hihoCoder #1156 : 彩色的树 2015编程之美初赛
题意给你一颗树,n个节点,每个节点有颜色,初始为0有q次操作,操作1是查询这棵树的不同颜色的子树个数,2是修改某个点的颜色思路这题不是很难,因为每次修改只改一个点,而且从这个点我们就可以比较容易的得出当前这个状态下,全局的不同颜色子树的变化量。具体来说,我们维护对每个节点记录它的父亲节点编号,维护它的颜色,和它孩子节点的颜色,把这些颜色记录在map中,即map[0]表示它颜色为0的孩子个数原创 2015-12-29 23:28:15 · 431 阅读 · 0 评论 -
hihoCoder挑战赛17 B String Problem II hihoCoder 1261
题意中文题:http://hihocoder.com/problemset/problem/1261思路建一个字典树,暴力dfs求解每个询问注意的是,删除的处理和其它不同!实现#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <vector>#include <map>原创 2015-12-27 22:39:22 · 375 阅读 · 0 评论 -
hihoCoder挑战赛17 A String Problem I 题库 1260
题意中文题:http://hihocoder.com/problemset/problem/1260思路建一个字典树,暴力dfs求解每个提问实现#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <vector>#include <map>#include <queue>原创 2015-12-27 22:34:05 · 456 阅读 · 0 评论 -
hihoCoder 47周 拓扑排序
描述由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来。小Ho:小Hi,你这学期有选什么课么?小Hi:挺多的,比如XXX1,XXX2还有XXX3。本来想选YYY2的,但是好像没有先选过YYY1,不能选YYY2。小Ho:先修课程真是个麻烦的东西呢。小Hi:没错呢。好多课程都有先修课程,每次选课之前都得先查查有没有先修。教务公布的先修课程记录都是好多年原创 2015-05-29 00:50:22 · 361 阅读 · 0 评论 -
hihoCoder1079 离散化 优先队列+贪心
描述小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海报还能被看见呢?于是小Ho肩负起了解决这个问题的责任:因为宣传栏和海报的高度都是一原创 2015-05-01 03:08:43 · 522 阅读 · 0 评论 -
hihoCoder1149 求回文子序列数 dp
描述给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。输入第一行一个整数T,表示数据组数。之后是T组数据,每组数据为一行字符串。输出对于每组数据输出一行,格式为"Case #X: Y",X代表数据原创 2015-04-27 10:26:01 · 850 阅读 · 0 评论 -
2015编程之美初赛1 hihoCoder1158 质数相关 树形DP
时间限制:2000ms单点时限:1000ms内存限制:256MB描述两个数a和 b (a输入第一行为一个数T,为数据组数。之后每组数据包含两行。第一行为N,为集合S的大小。第二行为N个整数,表示集合内的数。输出对于每组数据输出一行,形如"Case #X: Y"。X为数据编号,从1开始,Y为最大的子集的大小。数据范围1原创 2015-04-29 09:21:11 · 482 阅读 · 1 评论 -
hihoCoder1143 DP 斐波那契数列矩阵快速幂
题意 骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问题:我们有一个2xN(1≤N≤100,000,000)的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法呢?举个例子,对于长度为1到3的棋盘,我们有下面几种覆盖方式:输入第1行:1个整数N。表示棋盘长度。1≤N≤100,000,000输出第1行原创 2015-04-24 08:05:23 · 621 阅读 · 0 评论 -
hihoCoder1044 简单状压DP
题意 1到n的序列,每个位置wi个垃圾,一个人打扫,但连续m个位置最多有q个位置被打扫,问你最多打扫多少垃圾思路 由于m较小,所以可以使用状压dp(当然本来这题就是专门练状压dp的...)。总体思路不难,但有一些地方卡了我一下的这里说一下,一是连续m个位置看起来比较复杂不好处理,但是仔细一下可以发现,如果当看到第i个位置时,只需要考虑它和它前面m-1个位置就可以了,它后面的由后续工原创 2015-03-12 18:05:49 · 1300 阅读 · 2 评论 -
hihoCoder39周 归并求逆序对个数
#include #include #include #include using namespace std;const int maxn = 100005;typedef long long ll;int a[maxn];int n;ll guiBing(int l,int r){ if(l==r) return 0; int mid = (l+r)/2; l原创 2015-03-30 20:10:06 · 389 阅读 · 0 评论 -
hihoCoder 第38周 二分答案+BFS
题意 在这个游戏里面,海域是N个战略点(编号1..N)组成,其中红色的点表示有敌人驻扎,猫头像的的点表示该地图敌军主力舰队(boss)的驻扎点,虚线表示各个战略点之间的航线(无向边)。在游戏中要从一个战略点到相邻战略点需要满足一定的条件,即需要舰队的索敌值大于等于这两点之间航线的索敌值需求。由于提高索敌值需要将攻击机、轰炸机换成侦察机,舰队索敌值越高,也就意味着舰队的战力越低。另外在每原创 2015-03-22 21:48:53 · 601 阅读 · 0 评论 -
hihoCoder36周 练一下lower_bound~
题意 给一个无重复元素的序列,找数x是否属于它,若属于给出x在其中是第几大的。思路 本来这题应该是让我们练习一下用快排思想用O(n)的算法找x是第几大的,不过先排序在二分也能解决,所以我一懒就用STL了.....就当练练STL使用了....#include #include #include using namespace std;const int maxn = 1000原创 2015-03-13 00:00:54 · 368 阅读 · 0 评论 -
hihoCoder 1114 扫雷1
题意 在一个大小为2*N的广场,其中第一行里的某一些格子里可能会有至多一个地雷,而第二行的格子里全都为数字,表示第一行中距离与这个格子不超过2的格子里总共有多少个地雷,即第二行的第i个格子里的数字表示第一行的第i-1个, 第i个, 第i+1个,三个格子(如果i=1或者N则不一定有三个)里的地雷的总数。找出哪些地方一定是雷,哪些地方一定不是雷。思路这题被卡智商了...还以为是人工智能的推原创 2015-03-20 08:21:32 · 857 阅读 · 0 评论 -
hihoCoder #1490 : Tree Restoration 微软2017在线笔试题
题意给你一棵树,已知其中全部节点的编号(1~n),节点所在层次,节点在该层从左到右是第几个节点,叶子节点编号以及叶子节点间的距离,但不知节点之间的边信息,要求重构这棵树,输出每个节点的父亲节点。思路我们考虑如果先不使用其他信息,只使用层次遍历的信息以及叶子节点编号的信息可以确定下来哪些节点的父亲节点实际上我们可以找到最靠左的叶子节点,即位于某层最左边所在的层次最小的叶子节点,显然这样的叶子节原创 2017-04-01 11:38:34 · 1451 阅读 · 0 评论