
数据结构
799050408
邮箱:799050408@qq.com
展开
-
在青岛穷游打的cf codeforces Round #318 (Div. 2) A.Bear and Elections
这场cf是暑假集训后在青岛旅游打的一场,好累.....题意:给出一个序列,要使a[1]大于a[2]~a[n],a[1]每次可以增加一,这个一从a[2]到a[[n]里面任意一个数减一扣除,求最少的步数 思路:要不断地修改值,并从中找出最大的,可以想到优先队列,还要保存下该数的编号,要知道在队首时是a[1].还有处里一种特殊情况,详见代码总结:这道题并不难,我用了40多原创 2015-08-30 10:15:57 · 1511 阅读 · 0 评论 -
hdu 2896 病毒侵袭 ac自动机
思路:裸的ac自动机,不过这题数据有点水,就算不用后缀链接也ac了题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896#includeusing namespace std;const int maxn=100005;int n,m;char s[205],t[10005];vector v;struct A原创 2016-07-20 16:04:18 · 451 阅读 · 0 评论 -
fzu oj 2236 第十四个目标 树状数组好题 dp
题意:给定一个数组,求严格递增子序列的个数思路:根据经典的LIS问题,很快就可以设计出状态转移方程, dp[i] = sum( dp[j] ) + 1, (0题目链接:http://acm.fzu.edu.cn/problem.php?pid=2236原创 2016-05-09 15:32:57 · 958 阅读 · 0 评论 -
hdu 1594 树状数组 水题
思路:一个坐标的level和它的y坐标是无关的,因为x和y都是升序leve给出的,一个坐标的level只和前面所有的x有关,那么可以抽象这么一个a数组(实际上是不存在的,只是抽象出来),每输入一个x,就对a[x+1]++(因为有0),当前a[1]~a[x+1]的和就是该坐标的level,那么这个a数组就可以用树状数组加速(可看前面的博客),最后统计该level的数量就用一个数组a[level]++原创 2015-05-23 14:59:03 · 576 阅读 · 0 评论 -
hdu 1556
这题同样也是用树状数组去过,像上一篇写的一样,对于树状数组我们只需抽象出这样一个数组模型,对数组一段区间求和,并且数组元素的值会变化,就可以用树状数组进行加速,至于树状数组的结构和实现,可以先放一下。那么这题同样,给定一个区间(a,b),例如(1,3),我们只需在a[1]+1,a[4]-1,如果要查询3气球的涂色次数,然后将a[3]+a[2]+a[1]加起来即可。 抽象出来,就是对于 a b闭原创 2015-05-21 23:19:00 · 564 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number 树状数组求逆序数对(原理)
好吧,这是作为ACM弱渣的我第一次写博客,值得纪念!!!在acm集训时接触树状数组不久,只能说对它神奇的位运算惊叹不已,但是实际运用到题目,只能惊叹好难运用,做不出来。那么对于hdu1394这题关于求逆序数对,对于大神自然是一道超级水题,但是我也是苦思冥想,为什么可以运用树状数组加速。也许很多新手像我一样,思维限制在了树状数组那些较为复杂的运算中(或许我逻辑能力较差,各位大神勿喷),朦朦胧胧地感觉原创 2015-05-21 15:18:47 · 1180 阅读 · 2 评论 -
zoj 3204 Connect them 最小生成树 打印路径
题目:http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3204题意:求一课最小生成树,但要按照字典序把路径打印出来#include #include #include using namespace std;const int maxn=10005;struct node{ int原创 2016-04-06 17:03:53 · 531 阅读 · 0 评论 -
csu 1110 RMQ with Shifts 线段树
题意:求动态rmq思路:因为要移动的数据很小,不过是移动十几个,所以可以每次一边移动后更新题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1110#include #include #include #include using namespace std;#define lson l, m,原创 2016-07-15 20:18:01 · 673 阅读 · 1 评论 -
hdu 3966 Aragorn's Story 树链剖分 bfs实现(不知道为什么会RE)
题意:给出一棵树,增加或减少树上一条路径上点的值,询问点的值思路:学习了树链剖分,并且使用了红书的bfs版本,然后映射到线段树上,手动扩栈后还是一直RE,真的不知道怎么弄了,红书上很多数据结构在这道题没有用上,但也加上了自己的理解希望各位神犇路过看下,不知道为什么会re题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=原创 2016-08-06 11:48:01 · 583 阅读 · 0 评论 -
hdu 5880 Family View AC自动机
题意:给出一系列的敏感词,如果下面文本以敏感词作为子串,那么输出'*'思路:简单的AC自动机,如果匹配到当前tire节点是叶子,那么它前面路径字符串都要变为'*"比赛时看到没什么人做,也就没看题,没想到这么简单...题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5880#include #include #原创 2016-09-21 12:09:10 · 619 阅读 · 0 评论 -
反转链表,关于指针的一点知识和九度oj1518
题意 求反转链表题目链接所犯的错误这道题尽管是道水题,但写程序的时候指针出现了一点错误,导致调了一阵子都不知道哪错了先把代码放上来#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct ListNode{ int val; ListNode *next;};Lis原创 2017-03-03 17:27:51 · 446 阅读 · 0 评论 -
LA 4329 - Ping pong 树状数组
对于这道题,可以用树状数组去做,]对于每一个a[i],c[a[i]]为底层数组,设e[i]为从a[1]~a[i-1]小于a[i]的个数,f[i]为从a[i+1]~a[n]小于a[i]的个数,对于每一个a[i],它所可以做裁判的比赛就是e[i]*(n-i-f[i])+f[i]*(i-e[i]-1),那么现在任务就是把每一个a[i]对应的e[i]和f[i]求出来即可,其实就是相当于求两次“顺序数”,我原创 2015-07-24 15:29:33 · 699 阅读 · 0 评论 -
hdu 2222 AC自动机静态模板
题意:给出多个模式串,看是否在文本串里出现思路:ac自动机第一题,参考的是lrj的静态写法,但因为涉及到重复模式串的问题,要进行一点改动,感谢hdu discuss里提供给的两组数据/*16shehesayshrheryasherhs*//*13sheshesheshesheshe*/第一组样例答案为4,第原创 2016-07-20 15:34:10 · 473 阅读 · 0 评论 -
hdu 2586 How far away ? lca 在线和离线算法
题意:给出一棵n个节点的树,m次询问,找出u和v的距离思路:每次对u和v找到他们的lca,并且设定一个数据机构,dis[i]表示i到根的距离,那么u和v的距离等于:dp[u] + dp[v] - 2 * dp[lca]题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586#include #include #i原创 2016-06-01 14:30:17 · 591 阅读 · 0 评论 -
Codeforces Round #320 (Div. 2) B - Finding Team Member
题意:给出n支队伍,然后有2n个人,两两组队,组队的条件i,j两个人的能力值aij越大越好思路:对于这种频繁地求最大值,优先想到的就是优先队列题目链接:http://codeforces.com/problemset/problem/579/B#includeusing namespace std;struct node{ int x,y,原创 2015-09-17 11:08:19 · 640 阅读 · 0 评论 -
zoj 3209 Treasure Map dancing links
题意:在给定的矩形中,选取最少的矩形数量,使之给定的能覆盖(n*m)矩形思路:我们把题目给的q个矩形,对与每一个矩形,划分成1*1的小矩形,面积为a*b的矩形就能划分成a*b个(1*1)的小矩形,(n*m)矩形看成所有的列,每一个给定的矩形都看成行,那么就是一个精确覆盖问题。直接上白书模板,还有些小细节,看代码#include #include #include #i原创 2016-04-09 15:56:25 · 528 阅读 · 0 评论 -
poj 3080 Blue Jeans kmp 字符串匹配
题意:是否存在一个长度大于等于3的字符串是所有给出字符串的子串题目思路:找出第一个字符串所有的子串,用kmp去匹配,因为字符串长度只有60,所以时间复杂度还是很理想的, o(60*60*m*(60+60))= o(10^6);细节看代码注释题目链接:http://poj.org/problem?id=3080#include #include #incl原创 2016-04-29 16:30:48 · 686 阅读 · 0 评论 -
Codeforces Round #346 (Div. 2) B - Qualifying Contest 优先队列
题意:n个人,m个地区,每个地区要选出2个最高分的人,如果第三高分和第二高分一样分数,那么输出“?”思路:直接用优先队列模拟题目链接:http://codeforces.com/contest/659/problem/B#include using namespace std;struct node{ string name; int原创 2016-04-29 17:15:04 · 456 阅读 · 0 评论 -
Codeforces Round #346 (Div. 2) C. Tanya and Toys 贪心
题意:Tanya想要最多的玩具,但花费不能超过m,玩具从1到10^9编号,编号为i的玩具价钱为i,思路:很明显的贪心题,价格越小且Tanya没有的玩具,一定要买下,用set保存已经有的玩具,题目链接:http://codeforces.com/contest/659/problem/C#include using namespace std;#define原创 2016-04-29 18:12:11 · 465 阅读 · 0 评论 -
hdu 3183 A Magic Lamp rmq 贪心
题意:给出一个字符串, 删除其中的m位,使得剩下的数最小思路:因为要删除m个数,数组从下标0开始,那么从a[0]到a[m]必然存在一个a[pos]是最小的,找到这pos后,使pos++,m++,继续找,这样一定能找到,用普通的贪心就可以做出来,但是刚学了sparse-Table算法,可以用这个数据结构进行加速题目链接:http://acm.hdu.edu.cn/showpr原创 2016-05-13 15:02:43 · 561 阅读 · 0 评论 -
poj 1056 trie IMMEDIATE DECODABILITY
题意:判断之前的字符串是否是当前的前缀字符串题目链接: http://poj.org/problem?id=1056#include #include #include using namespace std;bool flag;struct Trie{ int ch[10000][3]; int val[10000]; int s原创 2016-04-22 23:06:20 · 520 阅读 · 0 评论 -
hdu 1671 Phone List Trie树
题意:给定一个字符串的集合,看是否存在一个字符串是另一个字符串的前缀思路:直接上lrj的模板, 话说深感此模板强大,比动态分配简洁许多,就是耗内存多,细节看代码题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1671#include #include #include using namespace原创 2016-04-23 00:32:55 · 428 阅读 · 0 评论 -
hdu 1247 trie树
题意: 在一个字符串集合里,是否有两个字符串可以构成一个字符串思路:直接上trie树模板即可,话说trie还挺强大;但这题有个坑,一旦输出一个字符串,要立刻break,不然有可能输出多几次题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1247#include #include #include using原创 2016-04-23 21:33:01 · 393 阅读 · 0 评论 -
poj 1330 Nearest Common Ancestors lca rmq在线算法
题意:裸的lca思路:直接上rmq在线模板题目链接:http://poj.org/problem?id=1330#include #include #include #pragma warning (disable: 4996)using namespace std;const int maxn = 10005;struct edge{原创 2016-06-01 14:33:53 · 455 阅读 · 0 评论 -
poj 3074 Sudoku
题意:解出9*9数独思路:和poj 3076一样,只不过编码函数有点不同,依然使用舞蹈链题目链接:http://poj.org/problem?id=3074#include#include#includeusing namespace std;const int maxn=400;const int maxnode=3000;const int原创 2016-06-15 19:15:24 · 604 阅读 · 0 评论 -
hdu 5769 Substring 后缀数组
题意:求一个字符串中包含字符ch的所有子串思路:训练的时候想到是用后缀数组,但是因为没有用它做过一道题,所以最后还是没有ac,也就是说这是第一道后缀数组题,也总结了一下一些性质 (1)一个字符串的所有子串必定是属于某个后缀的前缀, 如s = “acabd”,后缀0包含的子串是“a”, “ac”, “aca”, “acab”, “acabc”,后缀1包含的子串是“c”,“ca原创 2016-08-15 17:04:32 · 427 阅读 · 0 评论