![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDU_OJ
文章平均质量分 70
ccDLlyy
不忘初心,方得始终
展开
-
HDU 3613 Best Reward(KMP+思维||manacher算法)
题目链接:点击打开链接题意:26个小写英文字母都有一个价值,给你一个字符串,将该字符串切成左右两半,对于每一半,如果是回文串,就获得该子串的字母价值之和,否则该子串的价值为0。求出将字符串切成两半后能够获得的最大价值。思路一:KMP+思维。思路二:manacher算法(马拉车算法)具体思路明天写......// HDU 3613 Best Reward 运行/限制:93ms/1原创 2017-10-29 19:15:45 · 369 阅读 · 0 评论 -
HDU 2089 不要62(数位DP)
题目链接:点击打开链接题意:中文题目,很显然思路:数位DP入门,DP函数有四个参量,当前位置,前一位的数字,前一位是否为6,前几位取值是否都是上限。dp[i][state]表示第i位在limit(limit对应第四个参量)取0时,该state状态下(state对应第三个参量)剩余位数(包括本位)取值满足条件的方案和。// HDU 2089 不要62.cpp 运行/限制:0ms/1000原创 2017-08-08 11:01:18 · 292 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese(记忆化搜索)
题目链接:点击打开链接题意:n * n的地图,每个位置有若干奶酪,FatMouse初始位置在原点,每次可以跑向上下左右四个方向,距离原位置不超过k,而且下一个位置要比之前的位置的奶酪要多,到达一个位置就吃光该位置的奶酪,该过程直到FatMouse不能再移动为止,问FatMouse最多能吃多少奶酪?思路:记忆化搜索,dp[i][j]表示在(i,j)位置出发,最多能吃的奶酪数;由于FatMou原创 2017-08-07 16:34:51 · 343 阅读 · 0 评论 -
HDU 1892 See you~(二维树状数组的单点更新,区间求值)
题目链接:点击打开链接二维树状数组单点更新,区间求值的入门题目:一维树状数组的思想很容易应用到二维树状数组中,sum[i][j]表示一块矩阵的和,其中i - lowBit(i) 那么求以(x1,y1) (左下角) 和 (x2,y2)(右上角) 为对角线的矩阵的和为getSum(x2,y2) - getSum(x1 - 1,y2) - getSum(x2,y1 - 1) + getSum原创 2017-07-17 22:52:27 · 419 阅读 · 0 评论 -
HDU 4585 Shaolin(Treap)
题目链接:点击打开链接题意:少林寺的每个和尚均有编号和战斗等级,新来的小和尚均要和老和尚比试,从老和尚中选和自己的战斗等级相差最少的比,如果有两个,选比自己战斗等级小的和尚。每个和尚的编号和战斗等级均唯一。其实这是个水题,直接用map即可,但为了练习Treap,采用Treap方法。可以想到采用的数据结构要能动态的维护一个有序序列(战斗等级,由于战斗等级和编号为一对一映射,直接维护战原创 2017-07-21 11:43:46 · 402 阅读 · 0 评论 -
HDU 2838 Cow Sorting(树状数组求逆序数)
题目链接:点击打开链接树状数组求逆序数的一个模板题。对于给定的序列,变为递增顺序,每个位置的数的交换次数即为该数组成的逆序对的个数,所以此类题转化为求每个位置的逆序对。num数组保存的为原始数据序列,a,b为树状数组,a用于正向遍历num,对于每个num[i],均从num[i]+1更新到n,即getSum(a,num[i])为比num[i]早出现的且小于num[i]的数的个数,即在该数左边原创 2017-07-17 00:25:58 · 416 阅读 · 0 评论 -
HDU 1512 Monkey King(左偏树)
题目链接:点击打开链接题意:一群猴子,每个猴子均在唯一的一个组里,可单独成组。当两个猴子要打架时,若在同一组,不可以打架,若不在一组,每个猴子找到本组中最强壮的去迎战,打完架的两个猴子,强壮值减半,而且这两组猴子合并为一组。由最强壮的猴子迎战,而且要合并组,可以想到左偏树(有合并操作的堆)。不同于简单的左偏树模板的是,由于要尽快的找到某个节点的堆顶,借助于并查集的思路,存每个节点的父亲节点原创 2017-07-16 14:05:32 · 430 阅读 · 0 评论 -
HDU 1873 看病排队(优先队列)
此题水题,价值不大。写这个题解,是想回顾一个问题:变量的生命周期问题,C语言基础中的基础......#include #include #include #include #include #include using namespace std;struct node { int index, prior; node(int a, int b) :index(a), pr原创 2017-07-15 01:26:46 · 520 阅读 · 0 评论 -
Max Factor(素数筛法+把一个数进行素数分解) HDU2710
/*DescriptionTo improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000) cows with a distinct serial number in the range 1..20,000. Unfortunately, he is unaware that t原创 2016-08-12 23:47:08 · 975 阅读 · 0 评论 -
HDU 1166(线段树 单点更新 区域求值)
题目链接:点击打开链接代码:自己//单点更新 区间查询#include #include #include using namespace std;#define MAXN 50005int setTree[MAXN<<2];void PushUp(int root){ setTree[root]=setTree[root<<1]+setTree[root<<1|1];原创 2016-12-04 11:43:23 · 314 阅读 · 0 评论 -
HDU 1698(线段树 区域更新,区域求值)
题目链接:点击打开链接//区域更新 区域查询//需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候//PushDown()需要认真想明白;//大体意思是://每次查询到(L,R)大于(l,r)的区间,先把此段更新(或是替换原来的col),然后回溯,更新(PushUp)父节点们//不先去管子节点们,反正已经此原创 2016-12-04 15:38:30 · 379 阅读 · 0 评论 -
HDU 1166(树状数组 单点更新 区域求值)
链接:点击打开链接#include #include #include using namespace std;#define MAXN 50005int tree[MAXN],n;int LowBit(int position){ return position&(-position);}void Add(int position,int value){ for(int原创 2016-12-04 17:35:58 · 435 阅读 · 0 评论 -
HDU 4734 F(x)(数位DP)
题目链接:点击打开链接题意:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,给出a、b,求区间[0,b]内满足f(i)=f(a)的i的个数。思路:数位DP,dp[pos][sum]表示在!limit情况下,第pos个位置及其以后的数位的f(x)值为sum的情况有多少种。每组测试数据,先算出f(a),原创 2017-08-08 20:39:56 · 338 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!(基础DP)
题目链接:点击打开链接题意:求最大公共子序列和// HDU 1087 Super Jumping! Jumping! Jumping!.cpp 运行/限制:31ms/1000ms#include #include #include #include using namespace std;int main(){ int n, re, a[1005], dp[1005]; w原创 2017-08-02 21:21:18 · 298 阅读 · 0 评论 -
HDU 1867 A + B for you again(KMP)
题目链接:点击打开链接思路:KMP水题。// HDU 1876 A + B for you again 运行/限制:46ms/1000ms#include #include #include using namespace std;char s[100005], p[100005];int Next[100005];void getNext(char s[], int n)原创 2017-10-28 15:43:48 · 250 阅读 · 0 评论 -
HDU 1358 Period(KMP)
题目链接:点击打开链接思路:KMP水题,Next函数的应用。求字符串的每个前缀是否是周期串,是的话就输出循环节长度和循环次数。此题注意的是,不能优化求Next部分。// HDU 1358 Period 运行/限制:124ms/1000ms#include #include #include using namespace std;char s[1000005];int Next原创 2017-10-28 17:04:36 · 302 阅读 · 0 评论 -
HDU 3401 Trade(用单调队列优化DP)
题目链接:点击打开链接题意:给出T天内,每天的股票买卖价格和每天的股票买卖最大数量,而且每天最多只能拥有maxP数量的股票,开始时有无限本金,任意两次交易需要间隔W天及以上,也就是第i天交易,第i+w+1天及以后才能再交易。问最多能赚多少钱?思路:很明显的DP问题,用dp[i][j]表示第i天拥有j数量股票时的最多赚钱数。容易得到状态转移方程:(1)当天不买不卖:dp[i][j原创 2017-09-19 19:43:31 · 462 阅读 · 0 评论 -
HDU 2844 Coins(多重背包)
题目链接:点击打开链接题意:给出一些种类的硬币,每类硬币均有一定面值和数量,问用这些硬币能组成位于[1,m]范围内的多少种面值?思路:背包中的可达性问题,按照经验,如果只求最值,dp数组为常规的即可,初始化为全0;如果既求最值又判断可达性,dp数组最好初始化为-1作为不可达的判断,且dp[0]初始化为0;此题只判断可达性,其实连dp数组都用不到,直接开数组标记判断结果即可。网上不少人采原创 2017-09-10 21:54:07 · 335 阅读 · 0 评论 -
HDU 2829 Lawrence(四边形不等式优化DP)
题目链接:点击打开链接题意:铁路上有n个站点,每个站可以往其他站运送粮草,现在要炸掉m段铁路(两个站点之间为一段)使得粮草补给之和最小,每个站的粮草补给为 该站点的值 和 能与之连通的站点的值 的积 之和思路:动态规划问题,用dp[i][j]表示前j个站点炸掉i段得到的最小值。状态转移方程与前篇POJ 1160 Post Office问题类似:dp[i][j] = min(dp[i -原创 2017-09-26 08:57:30 · 601 阅读 · 0 评论 -
HDU 2196 Computer(树形DP)
题目链接:点击打开链接题意:求树上每个点到其他点的最长距离。思路:典型的树形DP,分析发现,当前节点的最大距离只有两种来源,一种是它到叶子节点的最大距离,一种是经过父亲节点的最大距离,不过,如果父亲节点的最大距离等于父亲节点经过当前节点的最大距离,方案是不可取的,即此处取的是父亲节点到叶子节点不经过当前点的最大距离 + 到当前点的距离,因为要求不经过当前点,所以我们求当前节点到叶子节点原创 2017-08-28 21:53:50 · 370 阅读 · 0 评论 -
HDU 1045 Fire Net(搜索/贪心/二分图最大匹配)
题目链接:点击打开链接题意:类似于八皇后问题,每行每列不能产生冲突,但此题图中有墙,两个碉堡如果隔了墙是可以放到同一行/列的。思路:一:搜索,由于数据规模很小,搜索是最直接的方式二:贪心,每个空地都有一个影响范围,一旦某块空地放置了碉堡,那么它的影响范围内所有空地都不能放碉堡了。贪心规则:每次选取影响范围最小的空地放置碉堡,然后就把这个空地影响范围内所有空地标记,按这种方法最后放置原创 2017-08-10 20:18:23 · 455 阅读 · 0 评论 -
HDU 1728 逃离迷宫
Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因原创 2016-10-08 17:37:59 · 639 阅读 · 0 评论 -
HDU 1253
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出原创 2016-10-24 19:49:17 · 387 阅读 · 0 评论 -
Cola HDU1495
Description大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (SInput三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0原创 2016-11-05 13:44:42 · 298 阅读 · 0 评论 -
HDU 1009 FatMouse' Trade(贪心)
题目链接:点击打开链接题意:一共有n个房间,每个房间里有一定数量的JavaBeans,每个房间里的JavaBeans价格不一样,而且每个房间的JavaBeans可以购买任意数量。FatMouse有m元,最多可以买多少JavaBeans?思路:贪心水题......求出单价,按照单价递减排序,再逐个处理。// HDU 1009 FatMouse' Trade.cpp 运行/限制:31ms/原创 2017-08-09 22:49:56 · 322 阅读 · 0 评论 -
HDU 1556(树状数组 区域更新,单点求值)
链接:点击打开链接//区域更新,单点求值的函数 同 单点更新,区域求值//但主函数处理不同 至于为何?#include #include #include using namespace std; #define MAXN 100001int tree[MAXN];int n;int LowBit(int t){ return t&(-t); } voi原创 2016-12-04 18:43:35 · 485 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树 单点替换,区间最值)
链接:点击打开链接#include #include #include #include #define MAXN 200005using namespace std;int tree[MAXN<<2];void PushUp(int root){ tree[root]=max(tree[root<<1],tree[root<<1|1]);}void BuildTree(i原创 2016-12-10 16:59:55 · 367 阅读 · 0 评论 -
HDU 1010 Bone 奇偶性剪枝
DescriptionThe doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized t原创 2016-11-05 10:02:14 · 367 阅读 · 0 评论 -
HDU 2064 汉诺塔3
约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。Daisy已经做过原来的汉诺塔问题原创 2016-09-03 09:53:58 · 730 阅读 · 0 评论 -
HDU 2076 时针和分针夹角多大
#include #include #include int main(){ int hour,minute,second;//秒影响分,分影响时 int n; scanf("%d",&n); while(n--){ scanf("%d%d%d",&hour,&minute,&second); if(hour>12)原创 2016-09-03 09:29:43 · 467 阅读 · 0 评论 -
HDU 2074 叠筐
>须要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作如今要让计算机来完毕,得看你的了。输入是一个个的三元组,各自是,外筐尺寸n(n为满足0Sample Output AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBB原创 2016-09-01 23:27:22 · 1325 阅读 · 0 评论 -
HDU 2082 找单词 母函数问题
Problem Description假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值 Input输入首先是一个整数N,代表测试实例的个数。 然后包括N行数据,每行包括26个 Output对于每原创 2016-08-31 17:20:25 · 519 阅读 · 0 评论 -
HDU 2078
Problem Description为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为100和这门课的难度差的平方。xhd这学期选了n门课,但是一晚上他最多只能复习m门课,请问他一晚上复习的最高效率值是多少? Inpu原创 2016-08-31 16:02:14 · 565 阅读 · 0 评论 -
HDU 2047 阿牛的EOF牛肉串
今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为n的只由"E" "O" "F"三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能有其他字符),阿牛同时禁止在串中出现原创 2016-08-31 15:42:58 · 369 阅读 · 0 评论 -
一只小蜜蜂 HDU2044 递推
Description有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 其中,蜂房的结构如下所示。 Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0Output对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能原创 2016-08-19 19:21:15 · 6404 阅读 · 0 评论 -
杨辉三角 HDU2032
F - 杨辉三角Crawling in process...Crawling failedTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatus Practice HDU 2032 uDebugDescripti原创 2016-08-19 10:58:19 · 495 阅读 · 0 评论 -
进制转换 HDU2031
//进制转换,如果进制大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。#include #include char dight[17]="0123456789ABCDEF";char result[32];//结果int top;void trans(int number,int r){ int flag=1; if(number<0){原创 2016-08-19 09:36:14 · 408 阅读 · 0 评论 -
Rightmost Dight(知识点:快速幂+题目分析)HDU1061
//N^N的最后一位#include #include //相当于对N的最后一位进行快速幂运算,结果对10取余int main(){ int time; int number; int dight; int result; scanf("%d",&time); for(int i=1;i<=time;i++){ result原创 2016-08-12 19:57:58 · 514 阅读 · 0 评论 -
Key Set(快速幂+数学分析) HDU5363
/*题意:给你一个元素为1到n的集合,让你求有多少个非空子集,子集内的元素之和为偶数。由于结果比较大,所以要用到快速幂取模。*///由数学分析:无论n为奇数还是偶数//结果为2^(n-1)-1#include #include int main(){ int time; int number; long long pow; long long原创 2016-08-12 20:18:38 · 514 阅读 · 0 评论 -
HDU 2084 数塔
Problem Description在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗? Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1原创 2016-09-04 21:01:26 · 427 阅读 · 0 评论