HDU
文章平均质量分 65
万木春《Linux 后端开发工程实践》
这个作者很懒,什么都没留下…
展开
-
hdu 1082 Matrix Chain Multiplication
<br /> 我使用了stack来模拟进行矩阵乘法的过程,当遇到'('时跳过当遇到')'时从栈顶弹出两个矩阵,计算需要相乘的次数,把计算结果入栈,并加到ans中,遇到矩阵时入栈。表达式处理完之后如何stack的元素多余一个,则弹出两个矩阵,计算矩阵结果,再把结果入栈,并把需要的相乘次数累加到ans中,反复执行这个过程直到stack中只有一个元素。<br />/* Author: ACb0y Date: 2010-7-10 Result: AC Description: hdu 1082 M原创 2010-07-10 22:39:00 · 1642 阅读 · 0 评论 -
HDU 1305 Immediate Decodability(二叉树)
<br />题意:<br /> 给一系列的01串A{str[0], str[1], str[2], ...},判断是否存在str[i]是str[j]的前缀的情况。<br />解法:<br /> 使用二叉树,按照顺序把每个串插入二叉树中,如果在插入的过程中发现经过的节点是叶子节点这说明存在前缀的情况。<br /> <br />AC代码如下:<br />/* Author: ACb0y Date: 2010年12月4日19:36:36 ProblemID: HDU 1305原创 2010-12-04 19:44:00 · 1458 阅读 · 0 评论 -
HDU 1671 Phone list (Tire tree)
<br />题意:<br /> 给定一个电话列表,判断是否出现一个号码是另一个号码前缀的情况,如果有输出“NO”否则输出“YES”<br />解法:<br /> 字典树<br />没有考虑到的情况:<br /> 给定的电话号码系列不适字典序的,如果前缀号码出现在后面,这程序判断失误。<br />如:<br /> 911<br /> 911123<br />对于这组数据可以得到正确的答案<br /> 911123<br /> 911<br />对于这组数据就判断失原创 2010-12-05 16:33:00 · 1015 阅读 · 0 评论 -
hdu 1856 More is better
<br />题意:求并查集中最大的集合的数据的个数<br />/* Author: ACb0y Date: 2010-10-13 ProblemId: hdu 1856 More is better Type: Union-Find set Result: AC*/#include <iostream>using namespace std;struct Node { int root; int num;};struct Seg {原创 2010-10-13 17:19:00 · 1013 阅读 · 0 评论 -
HDU 1061 The rightmost digit
<br />题意:<br /> 给定一个整数N求N^N的结果的最后一位是多少,如3^3 = 3 * 3 * 3 = 27则此时最后一位为7。1 <= N <= 1000000000<br />解法:<br /> 刚开始用最暴力的方法0(N^2)必然超时,后面想打表,但是发现太大了,要打很久,最后发现答案有循环节,然后改了下代码果断A了。<br /> <br />AC代码如下:<br />/* Author: ACb0y Date: 2010年12月7日21:01:24 T原创 2010-12-07 21:09:00 · 877 阅读 · 0 评论 -
HDU 1075 What Are You Talking About
<br />题意:<br /> 给一个映射的字典,然后给加密后的文本,求根据给定的映射的字典还原文本。<br />解法:<br /> 其实用STL的map就可以了,但这里我用了Tire tree弄了个伪map<br />AC代码如下:<br />/* Author: ACb0y Date: 2010年12月4日20:39:40 Type: Map, Tire tree ProblemID: 1075 HDU What Are You Talking About Resu原创 2010-12-04 21:15:00 · 1427 阅读 · 0 评论 -
HDU 1081 To The Max
<br />题意:<br /> 求最大子矩阵和<br />解法:<br /> DP<br />AC代码如下:<br />/* Author: ACb0y Date: 2010年12月6日22:02:34 Type: 最大子矩阵和 ProblemID: HDU 1081 Result: 3291421 2010-12-06 21:47:45 Accepted 1081 31MS 268K 953 B C++ ACb0y */#include <stdio.h>原创 2010-12-06 22:20:00 · 743 阅读 · 0 评论 -
HDU 1686 Oulipo (kmp)
<br />题意:<br /> 给定两个字符串a和b求a在中出现过几次<br />解法:<br /> kmp<br />AC代码如下:<br />/* Author: ACb0y Date: 2010年12月31日21:37:45 Type: KMP ProblemID: HDU 1686 Oulipo Result: 3367465 2010-12-27 21:33:16 Accepted 1686 93MS 1260K 817 B C++ ACb0y */原创 2010-12-27 21:39:00 · 1572 阅读 · 0 评论 -
HDU 1711 Number Sequence(kmp)
<br />/* Author: ACb0y Date: 2010年12月31日21:47:36 Type: KMP ProblemID: HDU 1711 Number Sequence Result: 3367520 2010-12-27 21:46:16 Accepted 1711 515MS 4220K 854 B C++ ACb0y */#include <iostream>using namespace std;int a[1000005];int原创 2010-12-27 21:47:00 · 837 阅读 · 0 评论 -
HDU 2896 病毒侵袭 (AC自动机)
<br />/* FileName: 2896.cpp Author: ACb0y Date: 2010年12月30日11:39:54 Type: AC自动机 ProblemID: HDU 2896 病毒侵袭 Result: 3371920 2010-12-30 11:37:43 Accepted 2896 234MS 30004K 2447 B G++ ACb0y */#include <iostream>#include <algorithm>#include原创 2010-12-30 11:48:00 · 763 阅读 · 0 评论 -
HDU 3065 病毒侵袭持续中(AC自动机)
<br />/* FileName: 3065.cpp Author: ACb0y Date: 2010年12月30日12:45:12 Type: AC自动机 ProblemID: HDU 3065 病毒侵袭持续中 Result: 3372006 2010-12-30 12:41:42 Accepted 3065 281MS 16760K 2218 B G++ ACb0y */#include <iostream>#include <queue>using name原创 2010-12-30 12:46:00 · 1020 阅读 · 0 评论 -
hdu 1131 Count the Trees(catalan数的应用)
<br />catalan数<br />/* Author: ACb0y Date: 2010年11月13日17:16:51 Type: catalan数的应用 递推公式为:C( n ) = n * (4*n - 2)* C(n - 1)/(n + 1); ProblemId: hdu 1131 Count the Trees Result: 3190360 2010-11-13 17:13:59 Accepted 1131 0MS 588K 1123 B G++ ACb0y*/原创 2010-11-13 17:25:00 · 1590 阅读 · 0 评论 -
hdu 1198 Farm Irrigation(并查集)
<br />本题考察的知识点是并查集,解决问题的关键是写出水管连通判断表,剩下来的就是对并查集操作的考察。<br />/* Author: ACb0y Date: 2010年11月13日15:20:47 Type:union set ProblemId: hdu 1198 Farm Irrigation Result: 3189494 2010-11-13 15:19:27 Accepted 1198 15MS 340K 3375 B G++ ACb0y*/#include <i原创 2010-11-13 15:24:00 · 1114 阅读 · 0 评论 -
hdu 1258 Sum It Up(回溯算法)
<br />题意:从给定的n个正整数中选出m个数(m <= n)使得这m个数的和为给定的total<br />解法:回溯<br />/* Author: ACb0y Date: 2010-11-11 ProblemId: hdu 1258 Sum It Up Result: 3181578 2010-11-11 20:42:18 Accepted 1258 0MS 368K 1461 B G++ ACb0y*/#include <iostream>#include <algori原创 2010-11-11 20:47:00 · 1421 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number(未优化版)
<br />未优化版本时间复杂度为O(n^2)主要是在求初始数列的逆序数值。<br />#include <iostream>using namespace std;int data[5005];int main() { int i, j; int n; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; ++i) { scanf("%d", &data[原创 2010-11-16 15:10:00 · 612 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number(优化版)
<br />使用线段树优化使得求初始数列的逆序数的时间复杂度从O(n ^ 2) 降到 O(n log(n))<br />/* Author: ACb0y Date: 2010年11月16日14:59:06 Type: math ProblemId: hdu 1394 Minimum Inversion Number Result: 3201273 2010-11-16 14:55:27 Accepted 1394 62MS 380K 1741 B G++ ACb0y 备注:本题使用原创 2010-11-16 15:12:00 · 914 阅读 · 0 评论 -
HDU 1274 展开字符串
#include using namespace std;char input[250005];char str[250005];int main() { int cas;#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin);#endif scanf("%d", &cas); while (cas--) { scanf("%s", input);原创 2011-01-21 19:19:00 · 1700 阅读 · 0 评论 -
hdu 1195 Open the Lock(单向广搜)
<br />/* Author: ACb0y Date: 2010-9-21 Type: search(bfs) ProblemId: hdu 1195 Open the Lock Result: AC*/#include <iostream>#include <string>#include <queue>using namespace std;struct node { char digit[5]; int step;};//记忆化搜索原创 2010-09-21 12:45:00 · 877 阅读 · 0 评论 -
hdu 1195 Open the Lock(bbfs(双向广搜))
<br />第一次使用双向广搜算法求解,感觉效率的确提高了不止两倍。刚开始的一直WA,后来发现是每次都要扩展一层的节点,然后在扩展另一层的节点,而不是每次只扩展一个节点。<br /> /* Author: ACb0y Date: 2010-9-21 Type: bbfs(双向广搜) ProblemId: hdu 1195 Open the Lock Result: AC*/#include <iostream>#include <queue>using namespace原创 2010-09-21 22:11:00 · 1384 阅读 · 0 评论 -
hdu 2082
<br />母函数<br />/* Author: ACb0y Date: 2010年9月6日22:03:47 Type:母函数 ProblemId: hdu 2082 Result: 2926116 2010-09-06 22:02:03 Accepted 2082 0MS 272K 643 B C++ ACb0y */#include <iostream>using namespace std;int d[27];int c1[51], c2[51];原创 2010-09-06 22:08:00 · 1618 阅读 · 0 评论 -
hdu 1084 What Is Your Grade?
<br />/* Author: ACb0y Date: 2010-7-10 Result: AC Description: hdu 1084 What Is Your Grade?*/#include <iostream>#include <map>#include <string>#include <algorithm>using namespace std;struct node { int solve; string time; int o原创 2010-07-10 23:25:00 · 1497 阅读 · 0 评论 -
hdu 1557 权利指数
<br />/* State: Accepted 1557 296MS 244K 858 B C++ ACb0y Author: ACb0y Date: 2010-7-27 Type: search (subset search) Description: hdu 1557 权利指数*/#include <iostream>using namespace std;int sum;//保存原始数据int data[21];//保存结果的数组int cn原创 2010-07-28 17:11:00 · 1402 阅读 · 0 评论 -
hdu 1088 Write a simple HTML Browser
<br />/* State: 2713350 2010-07-29 21:50:13 Accepted 1088 15MS 292K 1103 B G++ ACb0y Author: ACb0y Type: Simulation Date: 2010-7-29 Description: hdu 1088 Write a simple HTML Browser*/#include <iostream>#include <sstream>#include <string>原创 2010-07-29 22:10:00 · 927 阅读 · 0 评论 -
hdu 1346 Coconuts, Revisited
<br />/* Author: ACb0y Date: 2010-8-25 Type: Water~~(force) ProblemId: hdu 1346 Coconuts, Revisited*/#include <iostream>using namespace std;int n;int get_ans() { int i, j; /* 从n开始递减枚举(n -> 1) */ for (i = n; i > 0; i--) {原创 2010-08-25 10:45:00 · 2384 阅读 · 0 评论 -
hdu 1019 Least Common Multiple
<br />求N个数的最大公约数<br />/* Author: ACb0y Date: 2010-8-26 Type: Water~~(math) ProblemId: hdu 1019 Least Common Multiple Result: AC*/#include <iostream>#include <cmath>using namespace std;__int64 data[1024];//欧几里德算法求两个数的最大公约数__int64原创 2010-08-26 20:25:00 · 1237 阅读 · 0 评论 -
hdu 1166 敌兵布阵 (树状数组)
<br />树状数组简介:<br /> 树状数组是一种区间求和查询和元素修改的时间复杂度都在logN的线性的数据结构。它支持sigma(a[1], a[2], ... a[i]) 时间的复杂度为logN的查询,和对a[i]时间复杂度为logN的修改。<br /><br /><br />来观察这个图:<br /> 令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现:<br />C1 = A1 <br />C2 = A1 + A2 <br />C3 = A3 <b原创 2010-09-09 15:45:00 · 2301 阅读 · 0 评论 -
hdu 1866 A + B forever!
<br />第一次做矩形面积的并,这题中借鉴别人的做法,使用标记法求面积的并。<br />/* Author: ACb0y Date: 2010-9-02 Type: geometry (sum area of rectangle) ProblemId: hdu 1866 Result: AC*/#include <iostream>using namespace std;int max(int a, int b){ return a > b ? a : b;原创 2010-09-02 13:30:00 · 1423 阅读 · 0 评论 -
hdu 1796 How many integers can you find
<br />题意:<br /> 求1->n-1之间能被一个集合A内元素整除的数的个数,例如n = 12, A = {2, 3} 则能被A集合元素整除的数的集合为{2, 3, 4 , 6, 8, 9, 10}则结果为7。<br />解法:容斥定理,用回溯算法。<br /><br />/* Author: ACb0y Date: 2010-9-10 Type: 容斥 + DFS ProblemId: hdu 1796 How many integers can you find原创 2010-09-10 19:10:00 · 2289 阅读 · 1 评论 -
hdu 2602 (01 背包)Bone Collector
<br />经典的DP(01背包)<br />一、无优化版<br />状态dp[i][v]表示前i个物品背包容量为V的最大价值<br />状态转移方程dp[i][j] = max{dp[i - 1][j], dp[i - 1][j - volume[i]] + value[i]};<br /> /* Author: ACb0y Date: 2010-9-03 Type: DP(01背包) dp[i][j] = max{dp[i - 1][j], dp[i - 1][j - volume[i]]原创 2010-09-03 12:49:00 · 871 阅读 · 0 评论 -
hdu 1583 DNA Assembly
<br />这题用暴力求解,N!种情况(N的最大值为7),难点就在于字符串合并如何写(str_merge函数)。<br />/* Author: ACb0y Date: 2010-9-05 Type: force ProblemId: hdu 1583 DNA Assembly Result: 2919198 2010-09-05 09:32:24 Accepted 1583 281MS 272K 976 B C++ ACb0y */#include <iostream>原创 2010-09-05 09:40:00 · 1013 阅读 · 0 评论 -
hdu 2094 产生冠军
<br />问题描述:<br /> 给N个比赛的结果,求能不能产生冠军<br />解决方法:<br /> 只有当都没有输过一场比赛的人数为1时,就能产生冠军,否则不能。<br />代码如下:<br />/* Author: ACb0y Date: 2010年9月6日9:21:47 Type: Water() ProblemId:hdu 2094 产生冠军 Result: 2923032 2010-09-06 09:20:14 Accepted 2094 31MS 27原创 2010-09-06 09:30:00 · 2728 阅读 · 0 评论 -
hdu 2068 RPG错排
第一次接触到错排的题目,错排简单点说就是给n个节点它们原来的位置为i,然后让你把它们从新排列使得它们都不在它们原来的位置上。错排递归公式:f(i) = (i - 1) * (f(i - 1) + f(i - 2)); i >= 4 (f(0) = 0, f(1) = 0, f(2) = 1, f(3) = 2);而本题的解法是:组合 + 错排由于要猜对一半以上,就是那从n个人中取出小于等于n / 2的人进行错排因为最后要求的答案是能够通过的所有解,所以只要累加0 -> n / 2的所有错排数AC代码如下:原创 2010-09-07 11:06:00 · 2950 阅读 · 1 评论 -
hdu 1698 Just a Hook
/* Author: ACb0y Date: 2010-9-07 Type: seg_tree ProblemId: hdu 1698 Result: 2928262 2010-09-07 16:48:47 Accepted 1698 484MS 4324K 1762 B C++ ACb0y */#include using namespace std;//节点信息struct node { //区间 int left; int right;原创 2010-09-07 17:15:00 · 987 阅读 · 0 评论 -
hdu 1583 DNA Assembly
<br />/* Author: ACb0y Date: 2010-9-05 Type: force ProblemId: hdu 1583 DNA Assembly Result: 2919263 2010-09-05 10:02:43 Accepted 1583 281MS 272K 1079 B C++ ACb0y */#include <iostream>#include <string>using namespace std;int n;int an原创 2010-09-05 10:09:00 · 1039 阅读 · 0 评论 -
hdu 1754 I Hate It
<br />第一次做线段树的入门题目,写很多次都超时,最后发现是我的宏定义的问题<br />#define max(a, b) (a) > (b) ? a : b<br />在queryTree()中当要询问的区间在左右区间的时候<br />我起初写:<br /> return max(queryTree(left, mid, LL), queryTree(mid + 1, right, RR));<br />结果一直超时,很是郁闷!!!<br />最后改成:<br /> int a = q原创 2010-09-05 20:25:00 · 884 阅读 · 0 评论 -
hdu 2079
<br />经典的母函数题,刚开始还想用回溯做,查了网络才知道是用母函数做,<br />以前做过好几道母函数的题目还有一些印象知道如何写,最后果断AC<br />/* Author: ACb0y Date:2010年9月6日20:18:52 Type:母函数 ProblemId: hdu 2079 选课时间(题目已修改,注意读题) Result: 2925387 2010-09-06 20:18:25 Accepted 2079 15MS 272K 668 B C++ ACb0y *原创 2010-09-06 20:28:00 · 1704 阅读 · 0 评论 -
HDU 1861 游船出租(模拟题)
<br />题意:<br />给出一个船只借出和归还的信息列表,每条信息包括船只号,借出或归还的标记(S是借出,E是归还)和时间。求每次结束时一共借出多少次船只,和平均的借出分钟。(hint: 信息中列表中可能出现,有借无还或无借有还得记录,这些记录都可以忽略)。<br /> <br />解法:<br />使用字典树来存储借出信息,当遇到归还信息时,就查询字典树,并统计借出船次和借出的总时间。<br /> <br />AC代码如下:<br />/* Author: ACb0y DateTime: 2原创 2011-02-12 10:49:00 · 1714 阅读 · 0 评论