- 博客(18)
- 收藏
- 关注
原创 HDU 6096 (String) AC自动机
题目大意现在有N个单词,Q次询问,每次询问包含两个字符串a和b,求出以a为前缀且以b为后缀的单词共有多少个,其中a和b不互相覆盖。解题思路题目中所说的a和b不互相覆盖的含义是当 a =“ac”b = “cm”时,“acm”串不满足条件,因为其以a为前缀且以b为后缀时,a和b相互覆盖了。题解中所说的做法没太看懂,现在给出一种巧妙构造并利用AC自动机解题的方法。由于询问的时候,每次给出两个字符串并不便于
2017-08-11 16:33:35 351 1
原创 HDU (6055)Regular polygon (2017多校训练赛1011)
题目大意题目中给出一组点(横纵坐标均为整数,且范围很小),问其中存在的正多边形的个数。解题思路由于题目中并没有明确的指出横纵坐标都是整数(题目中明确只说了two numbers),比赛的时候并没有注意到这一点,以为给的都是浮点数,所以按照普适的方法做的。先讲一下普遍的方法任选一条边,从该边的一个端点出发,每次均寻找该端点连接到的边且边长与现有边长度相等,将该点入栈,直到某个点能够连到起始边的另一个端
2017-07-27 20:28:17 355
原创 SPOJ GSS1 Can you answer these queries I (线段树求区间最大连续和)
题目大意给定一个数列,并给出一些询问的区间,求出询问区间内的最大连续区间和。解题思路直接上线段树,但是区间合并的时候遇到了一些困难。首先我们考虑,想要达到 logn 级别的访问时间,对于线段树的每个节点中必须保存有该节点所表示区间内的最大连续区间和 mmax 。然后我们考虑区间合并时最大值的取值情况:1、等于左子结点中的区间最大值。 2、等于右子结点中的区间最大值。 3、最大连续区间横跨左子区间
2017-05-01 10:13:33 109
原创 POJ 3254 Corn Fields(状态压缩)
题目大意:有一片矩形土地,每一块的土地有肥沃和贫瘠之分,1代表肥沃,0代表贫瘠。现在想把一定数目的牛放在这片土地上,要求任意两头牛不能相邻且每头牛都在肥沃的土地上,求出可以放置牛的最大数量。解题思路:这道题给出的 N 和 M 的范围最大只有12,但是包含的总情况却有2^(N*M)种之多。根据动态规划的思想我们可以逐行递推出到达该行时所能获得的最优解。同时,对于每一种状态来讲只有放置和不放置两种情况,
2017-04-29 16:38:40 196
原创 HDU 1285 确定比赛名次(拓扑排序+略坑的条件)
题目大意给出N个队伍,M个关系,P1 P2代表P1队在比赛中赢了P2队,要求输出所有队伍的名次关系,当有多种情况时,总是将序号最小的队伍排在前面。解题思路题目本来是一道很单纯的拓扑排序题,但是因为最后一句话的缘故使得自己莫名WA了N次,细节决定成败啊。。对于传统的拓扑排序题是可以使用多种方式来写的,但是如果这道题你准备使用邻接表存关系,使用DFS来排序的话,恭喜你。。你已经WA一半了。。首先普及一下
2017-03-17 14:54:55 325
原创 HDU 1281 棋盘游戏(二分图匹配)
题目大意给出一个N*M大小的棋盘,和一系列能放置车的位置。现求要使得所有的车无法互相攻击(在同一行或者同一列)时,棋盘中所能放置车的最大数目是多少。题目会出现多解的情况,我们将若不在该点放置车就无法得到最大解的点成为“重要点”,并求出重要点的数目。解题思路该题的难点不在如何进行匹配的过程,而在于如何构造二分图匹配的模型并求出重要点我们知道放置车的条件为,使得所有的车不在同一行或同一列。我们可以将横坐
2017-03-17 14:25:41 340
原创 HDU 2412 / POJ 3342 Party at Hali-Bula(树形DP+判断多解)
题目大意多组输入,当N为0时输入终止。 每组数据的第一行为最大的Boss,第2-n行中每一行包含两个字符串,代表员工A和B,且A的直接上级为B。当A参加聚会时,A的直接上级和直接下级都不能参加。求出能够参加聚会的最大人数并说明是否存在多组解。解题思路经典的树形DP题目,难点并不在求解最大值的过程中,而在判断多解的过程中。 由于题目中的输入为字符串,所以可以使用map使字符串和数字形成一对一的映射
2017-03-14 23:26:40 434
原创 HDU 2089 不要62 (数位DP)
题目大意人们将含有62和4的数成为不吉利的数字,大家都不喜欢不吉利的数字。 现给出两个整数n和m,求出从n到m的数字中有多少吉利的数字(不含有62或4的数字)。解题思路又是一个数位DP的典型题目,与我之前写过的(HDU 3555 Bomb)相比增加了一点点的难度,判断中需要仔细一点,思路还是相同的。设立一个二维数组dp[i][j],保存当数字为i位长的时候的情况,j=0表示不含有62且不含有4
2017-03-08 23:56:07 208
原创 hdu 3555 Bomb (数位DP)
题目大意给出一个数字N,求出从1到N的数中含有字串49的串的个数。解题思路我们可以按照递推的思想来构造,逐步求解,长度为i的串可以由长度为i-1的串在构造得到,由低位到高位构造求解 设置一个二维数组dp用来保存状态。dp[i][0]表示长度为i且不含有字串49的串的个数,dp[i][1]代表长度为i不含有字串49且以9开头的串的个数,dp[i][2]代表长度为i且含有字串49的串的个数。 可以列
2017-03-07 23:38:04 212
原创 ZOJ 3785 What day is that today? (费马小定理)
题目大意今天是周六,问1^1 + 2^2 + 3^3 + … + N^N天后是周几?(1<=N<=1000000000)解题思路第一眼看到题目天真的以为是快速幂取模的简单应用,在飞速敲完代码看到火红的 TLE 之后意识到自己想多了,由于N的范围达到了10^9,所以快速幂取模的方法行不通。接下来就是使用万能打表A题法,但是由于本题中的循环数太大(294)导致在眼睛看瞎之前很有可能找不到循环点(反正我是
2017-02-16 10:15:34 473
原创 POJ 2115 Looooops (扩展欧几里得+调整解)
题目大意:给出一组数 a b c k,问 a + mc = b(mod 2^k)的解m是多少,若有解,则输出最小正解的大小,若没有,输出FOREVER,表明a永远无法通过加c的方式得到b的值。解题思路:根据刚才列出的式子可以很容易的发现,此题可以直接使用扩展欧几里得算法求解,扩展欧几里得算法用于求解形如 ax+by=d=gcd(a,b)的方程,求得的解x和y满足x+y的和最小。由欧几里得算法可知 g
2017-01-17 11:16:53 358
原创 HDU 4497 GCDandLCM
一 . 题目大意:给出一组GCD 和 LCM值,问有多少组x,y,z值使得三个数的最大公约数为GCD且三个数的最小公倍数为LCM,xyz有顺序,问满足条件的数值一共有多少组。二 . 解题思路:首先列一下xyz共同满足的条件:1.都具有共同的因子GCD,除此之外没有其他的因子。2.最小公倍数为LCM,即xyz都能整除LCM。分析过后我们可以得出结论:我们可以设置一个变量n
2017-01-16 10:31:22 436 5
原创 HDU 1180 诡异的楼梯(BFS+保存自己的状态)
1.题意:依旧是从起点走到终点的经典最短路径问题,但是在地图中有一个诡异的楼梯,在每一分钟的朝向会改变,要求输出从起点到终点需要的最短时间。2.思路:和普通的BFS问题做法相同,但是需要在走楼梯的时候判断一下是否能够通过楼梯,如果不能通过的话只将该点的时间改变并且重新入队即可,要注意,在特殊的数据中楼梯是需要反复通过的,所以在判断一个点是否曾经到达时不要将楼梯所在位置标记即可。3.附上AC
2017-01-15 16:18:28 103
原创 HDU 2612 (BFS+取最优解)
1.题意:你约你喜欢的妹子去KFC,你们想找一家最近的,使得你和妹子到KFC所用时间和最短。2.思路:相当于进行两次BFS搜索,可以从每个KFC当做起始点 出发搜索Y和M,也可以从Y和M出发搜索到达每个KFC的时间,然后用一个数组保存到达每个kfc的总时间,找到最小值输出即可,要记得在合适的时间初始化vis和cost数组,要不然会出现不必要的麻烦。要注意考虑到题目中的极端情况,也就是有一家KF
2017-01-15 10:50:08 641
原创 POJ 1442 Black Box
**题目大意**有一个黑盒子(Black Box)很神奇,可以获取其中第i小的元素。题目中有两种操作分别为ADD 和 GET,ADD操作序列为A,GET操作序列为u,GET初始值 i 为0,每次进行GET操作后 i 值加1。输出每次的第i小的值为多少。**解题思路**优先队列的简单应用,维护两个堆,一个大顶堆,一个小顶堆,将前u(p)个数据先加入小顶堆中,每次读取一个u(p)元素就将小顶堆的
2017-01-14 12:04:08 337
原创 UVALive X-Plosives(并查集+略坑的输入)
1.此题的题意非常简单,但是题目可能较难读懂2.输入输出是坑,输入-1后再输入eof文件才结束,且3.此题的代码如下:#include #include #include #include #include #include using namespace std;int fat[100100];int Find(int a){ while
2017-01-13 22:01:51 215
原创 UVA 673 Parentheses Balance
1.题目是栈的简单应用,但是由于其特殊的条件性,使得空字符串也满足条件,所以也带来了不少的麻烦2.两种字符要放到同一个栈中去判断,也就是【(】)这种情况是错误的。。第一次由于没有注意到这一点导致WA了很久,3.下面附上代码:#include #include #include #include #include #include using namespace
2017-01-13 21:25:21 241
原创 HDU 2102 A计划(三维BFS)
1.略有难度的三维BFS,存储图的数组需要三维2.需要考虑多种极端情况,比如两层的对应位置为‘#’或者传送门后就是终点的情况3.下面附上代码:#include #include #include #include #include #include using namespace std;int row,col,time,num,ex,ey,ef;str
2017-01-13 12:23:36 256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人