HDU
文章平均质量分 62
编码思考
这个作者很懒,什么都没留下…
展开
-
[算法入门经典] 7.5.3 八数码问题 | HDU 1043
这个游戏小时候玩过,在书上看到原创 2014-06-04 16:58:50 · 1152 阅读 · 1 评论 -
[最短路径] HDU 2544 - 最短路
最短路裸题,用Dijkstra做的。#include #include #include #include #include #include #include #include #include #include #include #include typedef long long LL;const int INF = 500000001;const doubl原创 2015-01-19 23:18:15 · 657 阅读 · 0 评论 -
[最短路径] HDU 1869 - 六度分离
跑N遍Dijkstra即可,时间复杂度大概是O(N3)的样子。#include #include #include #include #include #include #include #include #include #include #include #include typedef long long LL;const int INF = 500000001原创 2015-01-20 20:14:50 · 725 阅读 · 0 评论 -
[最短路径] HDU 1690 - Bus System
给定车辆的收费标准与路程区间的关系如下: 路程区间 花费 (0, L1] C1 (L1, L2] C2 (L2, L3] C3 (L3, L4] C4 (L4, +∞] 没票 接着输入两个整数N, M。 接着输入N个车站所在的横坐标,这N个车站是在一条直线上的。 接下来有M个询问,Si, Ei分别代表起点和终原创 2015-02-15 14:42:35 · 679 阅读 · 0 评论 -
[Bestcoder] Valentine's Day Round 1001 - Ferries Wheel | HDU 5174
本题比赛时被hack的人好多 - -。 注意坑点: 3 2147483645 2147483646 2147483644 Answer : 1#include <stdio.h>#include <string.h>#include <map>#include <algorithm>#define INT_MAX 2147483647using namespace原创 2015-02-14 21:32:29 · 755 阅读 · 0 评论 -
[BestCoder] Round #25 1001 - Harry and Magical Computer | HDU 5154
题目给了中文描述,所以不再多说。裸拓扑排序,直接用队列维护入度为零的结点,判断是否能完全删除M条边即可。#include #include #include #include using namespace std;int main(){ int cnt, n, m, a, b, v[1000]; while(~scanf("%d %d", &n, &m))原创 2015-01-03 23:23:58 · 964 阅读 · 0 评论 -
[BestCoder] Round #21 1002 - Formula | HDU 5139
题目的表达式化简后就是1! ~ N! 的乘积 Mod 1000000007。比赛的时候写的是把1~10000000的结果打表存数组里了,结果MLE了。。由于题目数据组数为100000左右,所以可以把所有的输入存到结构体里面。首先按n的大小排序。用两个变量进行计算,计算完毕后,再按输入顺序把结构体排序一下。输出即可。#include #include #include #i原创 2014-12-06 21:56:23 · 719 阅读 · 0 评论 -
[最短路径、BFS] HDU 1548 - A strange lift
题意简述: 第一行输入三个整数N、A、B,分别代表楼的层数,开始楼层和结束楼层。 第二行输入N个整数,代表在当前楼层只能向上或向下移动的层数。 问从楼层A到楼层B至少需要按几次?如果不能到达,输出”-1”。 题目分析: 由题意可知,从楼层A开始,可以向上到达A+Ki(A+ki <= N)楼层,向下到达A-Ki楼层(A-Ki >= 1)。 并且每个楼层向上或向下到达原创 2015-02-11 23:29:56 · 637 阅读 · 0 评论 -
[最短路径] HDU 1596 - find the safest road
此题可以利用求最短路径的思想来解决,贪心的过程每次找最大值即可。#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <iostream>#include <set>#include <map>#incl原创 2015-02-13 23:21:13 · 554 阅读 · 0 评论 -
[线段树] HDU 1394 - Minimum Inversion Number
求题中n种序列的最小逆序数。 首先求出给定序列的逆序数,可以通过线段树来求。 逆序数的概念是:满足< ai, aj > (i < j 并且 ai > aj) 的组数。 利用线段树来查询[当前元素+1, n-1]。 然后使当前元素所在的所有区间的结点+1。 最后通过当前状态的序列递推其他状态的序列即可。#include <stdio.h>#include <strin原创 2015-03-08 23:06:37 · 535 阅读 · 0 评论 -
[线段树] HDU 1754 - I Hate It
#include <stdio.h>#include <algorithm>using namespace std;#define lson rt << 1#define rson rt << 1 | 1int maxn[200000 << 2];void build(int l, int r, int rt){ if(l == r) { scanf("原创 2015-03-06 23:44:34 · 503 阅读 · 0 评论 -
[线段树] HDU 1166 - 敌兵布阵
线段树第一题~#include <stdio.h>#define lson rt << 1#define rson rt << 1 | 1int maxn[50005 << 2], N;void build(int l, int r, int rt){ if(l == r) { scanf("%d", &maxn[rt]); return ;原创 2015-03-04 21:23:08 · 493 阅读 · 0 评论 -
[线段树] HDU 2795 - Billboard
输入三个整数,h, w, n。代表h x w 的公告板和接下来有n个公告。 接下来输入n个公告的宽度Ki。高度都为1。 公告的规则是尽量往最上面放置。 问这n个公告分别放置的位置是第几行。 如果不能放置,输出-1。 第一眼看h,w的范围比较大,10^9,但是n最大才200000。 当h > n的时候,超出的部分是一定不会有公告放置的。 所以就可以用线段树来做原创 2015-03-13 17:05:24 · 534 阅读 · 0 评论 -
HDU 1698 - Just a Hook
线段树成段更新第一题。 主要就是lazy操作,只有这需要查询的时候才去更新,节省很多时间。#include <stdio.h>#include <iostream>using namespace std;#define lson rt << 1#define rson rt << 1 | 1int T, N, Q, maxn[100005 << 2];pair<int, int>原创 2015-03-22 20:48:33 · 429 阅读 · 0 评论 -
HDU 数据结构 - 字典树 解题报告汇总
Virtual Judge 题目链接:打开链接HDU 1617 - Phone ListHDU 1251 - 统计难题HDU 1004 - Let the Balloon RiseHDU 1075 - What Are You Talking AboutHDU 4287 - Intelligent IMEHDU 1800 - Flying to the Mars HDU 1804 - Deli De原创 2015-07-25 14:57:23 · 1180 阅读 · 0 评论 -
Bestcoder Round #48 1001、1002
1001 - wyh2000 and a string problem思路:先把相邻超过两个的v全部改为w。 然后这个问题就转化为了一个串是否能通过删除某些字符变成另一个子串了。#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <cty原创 2015-07-19 11:42:03 · 611 阅读 · 0 评论 -
HDU 2818 - Building Block
题意: 给定一行木块,每堆一个木块,从左到右标号分别为1~300000. 针对木块可以执行以下两种操作: 1、M x y 将x所在的木块移到y所在木块的上面。 2、C x 查询x下方的木块数量。此题想了好久也没有做出来,然后看了一下别人的思路。 利用并查集 + rank数组 + under数组即可搞定。 under数组用来存储当前木块以下的木块个数。 rank数组用来存储当前集合中的总原创 2015-07-21 20:17:44 · 897 阅读 · 0 评论 -
[最短路径] HDU 2066 - 一个人的旅行
题目就是求S个起点到N个终点的的最短路径。注意重边,Dijkstra做的~#include #include #include #include #include #include #include #include #include #include #include #include typedef long long LL;const int INF = 5原创 2015-01-20 20:59:08 · 728 阅读 · 0 评论 -
[最短路径] HDU 2112 - HDU Today
最短路径 - Dijkstra算法。单源点最短路径算法,适用于求两点之间的最短路径。由当前最优解递推全局最优解,每次寻找距离起点最近的结点,进行路径更新,具体证明在这里就不写了。本题注意:1、此图是无向图2、结点到自己的距离是03、起点和终点在图中可能没有#include #include #include #include #include #include原创 2015-01-08 16:53:20 · 686 阅读 · 0 评论 -
[最短路径] HDU 1874 - 畅通工程续
最短路径简单题,用Dijkstra做的。需要注意的地方:1、输入中的两点之间的距离,可能存在重边,要选取最小的距离。2、当S和T相等时,输出0。#include #include #include #include #include #include #include #include #include #include #include #include原创 2015-01-09 00:33:19 · 747 阅读 · 0 评论 -
[算法入门经典] 例题7-3 倒水问题 | HDU 1495
以前看到这个题,没有思路,今天回过头看了一下,就是广搜原创 2014-06-04 10:28:25 · 2096 阅读 · 1 评论 -
[BestCoder] Round #3 1001、1002 | HDU 4907、4908
Task schedule原创 2014-08-03 23:24:03 · 782 阅读 · 0 评论 -
HDU 1114 - Piggy-Bank
裸完全背包,注意把[1,F-E]初始化为INF。#include #include #include #include #include #include #include #include #include #include #include #include typedef long long LL;#define INF 500000001using name原创 2014-09-11 18:52:14 · 660 阅读 · 0 评论 -
HDU 2546 - 饭卡
这题想了一下午~没构造出来后来原创 2014-09-01 19:58:07 · 650 阅读 · 0 评论 -
HDU 2602 - Bone Collector
0-1背包裸题,终于把它理解了~从原创 2014-09-01 11:40:23 · 627 阅读 · 0 评论 -
[字典树] HDU 1004 - Let the Balloon Rise
可以用map做,附上字典树代码。#include #include char max[100];int ans;struct Trie{ Trie * ch[26]; int sz;};Trie p, *H;void init(){ H = &p; for(int i = 0; i < 26; i++) { H->ch原创 2014-11-15 19:07:02 · 850 阅读 · 0 评论 -
[字典树] HDU 1617 - Phone List
之前用结构体排序做的,这次用字典树做一下~原创 2014-11-15 16:51:07 · 905 阅读 · 0 评论 -
[字典树] HDU 4287 - Intelligent IME
题意:给定每个数字对应的几个字母,然后rang原创 2014-11-16 00:23:18 · 972 阅读 · 0 评论 -
[字典树] HDU 1804 - Deli Deli
字典树裸题,建树的时候,给每个节点加一个字符串原创 2014-11-17 11:06:12 · 946 阅读 · 0 评论 -
[字典树] HDU 1247 - Hat’s Words
这个题一开始我想的是最暴力的方法,先把所有单词建成字典树。。然后n^2复杂原创 2014-11-17 15:09:06 · 746 阅读 · 0 评论 -
[字典树 + dfs] HDU 1298 - T9
题目想了好久,发现需要在查询字典树的时候,枚举每个数字上的字母。就没敢去想用dfs。但是后来经过计算发现,w最大值是1000,每个数字串长度最大为100。原创 2014-11-18 14:07:32 · 891 阅读 · 0 评论 -
[字典树、map] HDU 1800 - Flying to the Mars
题意:给定很多人的能力值,原创 2014-11-16 09:21:02 · 845 阅读 · 0 评论 -
HDU 4508 - 湫湫系列故事——减肥记I
完全背包裸题,不多说了~直接上代码。原创 2014-09-11 21:32:53 · 737 阅读 · 0 评论 -
[大数] HDU 1250 - Hat's Fibonacci
一开始用int二维数组,MLE了。。然后改成char数组过了。原创 2014-11-16 16:10:29 · 745 阅读 · 0 评论 -
[Bestcoder] Round #27 1001、1002 | HDU 5162、5163
HDU 5162 - Jump and Jump...结构体排序之后输出就可以了。#include #include #include #include #include #include #include #include #include #include #include #include typedef long long LL;const int INF原创 2015-01-24 21:07:00 · 988 阅读 · 0 评论 -
[最短路径] HDU 2680 - Choose the best route
题目大意:输入n,m,s 分别代表公交站的数量(1~n),接下来输入m条路径, s是kiki朋友家的公交站。最后输入一个数字w,代表kiki可以从下面w行数字中的任意站点上车。求kiki到他朋友家的最短路径。简单分析:由于起点存在多个,终点仅仅存在一个。那么可以倒着做这道题,用Dijkstra即可。注意:1、站点是之间的路是有向图,之前当成无向图WA了一次。#inc原创 2015-01-09 02:21:38 · 659 阅读 · 0 评论 -
HDU 2203 - 亲和串
可以让s1、s2互相进行KMP,看最后匹配的长度是否>= len2即可。举个例子: AABCD CDAA #include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <ctype.h>#include <iostream>#include原创 2015-07-25 16:01:36 · 643 阅读 · 0 评论