
HDU
文章平均质量分 50
謙卑
这个作者很懒,什么都没留下…
展开
-
hdu 1026 Ignatius and the Princess I(BFS + 优先级队列 + 路径输出)
hdu 1026 Ignatius and the Princess I(BFS + 优先级队列 + 路径输出)题目链接: hdu 1026 Ignatius and the Princess I题目描述: 从左上角走到右下角,“.”表示可以走,“X”表示不能走,“1-9”表示走到这里需要额外的时间,走一步1s,问最后的时间和路径。题解思路: 因为问的是最优解,所以考虑用BFS来写,然后由于有数组格子会有额外的时间,所以就需要用到优先级队列,路径输出只要用一个path数组记录每一的走过的点从上一个点走原创 2021-01-23 23:35:55 · 142 阅读 · 0 评论 -
hdu 1023 Train Problem II(大整数乘法,大整数除法,栈混洗,卡特兰数)
hdu 1023 Train Problem II(大整数乘法,大整数除法,栈混洗,卡特兰数)题目链接: hdu 1023 Train Problem II题目链接: 对于1-n个数,问有多少种入栈然后出栈的序列。题解思路:额,当时上网课的时候记得这是栈混洗的知识点,但是记得老师讲过答案是卡特兰数,至于怎么算的我不知道。Catalan数: 维基百科因为数据可能很大,而且用递推式更方便所以,用大整数乘法和除法代码如下:#include<bits/stdc++.h>usin原创 2021-01-23 21:46:27 · 162 阅读 · 0 评论 -
hdu 1042 N!(大整数阶乘, 大整数乘法)
hdu 1042 N!(大整数阶乘, 大整数乘法)题目链接: hdu 1042 N!题目描述: 给定n的值,n的值可能很大,输出n的阶乘。题解思路: 直接算是不能算出来的,必须用大整数乘法来计算,所以要模拟乘法计算的步骤,就像计算机组成原理中的加法器计算加法一样的原理,只要计算出每一次的本位和进位就可以算出最后的答案。总体是分n次乘法,2-n分别和这些中间答案相乘,运用大整数乘法,算到最终答案。ans数组用来存储答案。每一个元素就是本位。aa是进位len是数据的长度代码如下:#includ原创 2021-01-23 16:31:43 · 225 阅读 · 0 评论 -
hdu 1022 Train Problem I(栈)
hdu 1022 Train Problem I(栈)题目链接: hdu 1022 Train Problem I题目大意: 看图片应该就知道什么意思了样例输入:3 123 3213 123 312样例输出:Yes.inininoutoutoutFINISHNo.FINISH题解思路: 思路就是用栈来模拟这个in和out的过程,判断Yes或者No是根据栈顶元素和栈顶元素下面的元素的序号大小来判断的。代码如下:#include<bits/stdc++.h>原创 2021-01-22 20:20:55 · 148 阅读 · 0 评论 -
hdu 1018 Big Number(斯特灵公式,大数阶乘求位数)
hdu 1018 Big Number(斯特灵公式,大数阶乘求位数)题目链接: hdu 1018 Big Number题目描述: 给定一个可能很大的数,然后求出这个数的阶乘的位数。题解思路:方法1:可以用log10(n!) + 1;来计算这个答案,然后根据log的公式可以等价与累加形式的公式。方法2:斯特灵公式 斯特灵公式 维基百科根据给斯特灵公式然后带入方法一的公式就可以求出答案了。这里要注意的是斯特灵公式中的pi和e的这两个常量要够精确,这样才能得到正确答案。pi = 3.141592原创 2021-01-22 17:34:37 · 187 阅读 · 0 评论 -
hdu 1015 Safecracker(dfs暴力求解)
hdu 1015 Safecracker(dfs暴力求解)题目链接: hdu 1015 Safecracker题目大意: v - w^2 + x^3 - y^4 + z^5 = target给出一些没有重复的大写字母,每个字母对应1~26,然后选出5个字母填入公式中的变量使得最后的答案等于给出的那个数,如果有种字母序列符合条件,则输出字典序最大的那个。题解思路: 由于数据规模不是很大,所以可以直接用5个for循环暴力求解,但是代码量很大,所以可以考虑用dfs来求解问题。代码如下:#include&原创 2021-01-21 21:55:50 · 276 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone(dfs + 奇偶剪枝)
题目链接: hdu 1010 Tempter of the Bone题目大意: 给一个迷宫,小狗要从大门出去,但是大门只有在T时刻才会开门所以小狗只有在T时刻到达门口才算成功,而且每秒钟小狗可以上下左右走一个方块,但是方块在下一秒就会消失,图中S代表小狗的起始位置,D代表大门,X是障碍物。问小狗能否成功逃出迷宫。题解思路: 直接用DFS就可以了,但是发现如果不进行任何剪枝的话,就会超时,所以这里可以用奇偶剪枝,通过D和S的位置可以算出小狗出去的最短路径,根据这个最短路径和给定的时间T的奇偶性可以直接判断原创 2021-01-21 16:48:43 · 241 阅读 · 0 评论 -
hdu 1007 Quoit Design(分治法)
题目链接: hdu 1007 Quoit Design题目描述: 在坐标中给出几个点,求出距离最短的两个点的距离的一半。题解思路: 用分而治之的方法1、把每个点的横坐标按从大到小的排列顺序排序,然后根据左右L,R边界,分成两个小规模的问题,求出左半部分的最小值和右半部分的最小值 ,然后取两者之中的最小d。2、因为完成第一步后还存在着跨区间的两个点的距离可能更小,所有要先针对纵坐标进行排序,然后看是否有跨区跨区间的点是否更小,这里要有一个剪枝,就是找到离分治的中间的的点的距离小于第一步求的d的点才有资原创 2021-01-21 14:52:01 · 322 阅读 · 1 评论 -
hdu 1005 Number Sequence(两种方法,鸽巢原理寻找循环节, 矩阵快速幂)
hdu 1005 Number Sequence(两种方法,鸽巢原理寻找循环节, 矩阵快速幂)题目链接: hdu 1005 Number Sequence题目描述: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给出A ,B,N求出f(n);题解思路:方法1:鸽巢原理(狄利克雷抽屉原理): 维基百科:鸽巢原理因为 f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.所以f(n)的取原创 2021-01-20 22:09:23 · 380 阅读 · 0 评论 -
hdu 1004 Let the Balloon Rise (STL Map)有关STLMap的插入删除遍历清空等一系列用法
hdu 1004 Let the Balloon Rise (STL Map)有关STLMap的插入删除遍历清空等一系列用法题目链接: hdu 1004 Let the Balloon Rise (STL Map)题目描述: 每次给出若干个颜色的气球,求出颜色出现最多的气球颜色,题目保证有唯一的答案。解题思路: 找到这题的对应关系,每个气球的颜色映射到气球的个数,所以我们很容易想到用STL中的MAP来解决这个问题,如果对STL中的MAP很熟悉的话,那么这道题就非常简单。代码如下:#include&原创 2021-01-20 16:18:20 · 134 阅读 · 0 评论 -
hdu 1856 More is better(并查集)(卡空间,卡时间)(c++)
hdu 1856 More is better题目链接: hdu 1856 More is better题目大意: 输出最大数量的集合的数量上代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;typedef long long ll;#define N 10000005int m;int x, y;int原创 2020-12-17 23:46:40 · 241 阅读 · 0 评论 -
hdu 3826 Squarefree number(数论,素数)(c++)
hdu 3826 Squarefree number(数论,素数)(c++)题目链接: Squarefree number题目大意: 在数学中,无平方数是一个可以被除以1以外的任何平方都不被整除的数。例如,10是无平方的,而18没有,因为它可以被9 = 3 ^ 2整除。现在,您需要确定一个整数是否为无平方的。代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>原创 2020-12-17 22:35:12 · 441 阅读 · 0 评论 -
hdu 2504 又见GCD(gcd) ( c++)
hdu 2504 又见GCD(gcd) ( c++)题目链接: hdu 2504 又见GCD题目大意: 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b。若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>usi原创 2020-12-15 21:51:34 · 272 阅读 · 0 评论 -
hdu1019 Least Common Multiple(lcm)(数论)
hdu1019 Least Common Multiple(lcm)(数论)题目链接: hdu1019 Least Common Multiple题目大意: 求多个数的最小公倍数代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long lon原创 2020-12-15 21:39:30 · 140 阅读 · 0 评论 -
HDU1062 Text Reverse(栈)数据结构
HDU1062 Text Reverse(栈 c++)题目链接: Text Reverse题目大意: Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them.(翻转字符串)样例输入:3olleh !dlrowm'I morf .udhI原创 2020-11-29 19:39:23 · 305 阅读 · 0 评论 -
HDU 1873 看病要排队(STL ,优先队列,c++)
HDU 1873 看病要排队题目链接:看病要排队代码如下:#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<vector>#include<stack>#include<queue>#include<s原创 2020-10-16 22:57:57 · 837 阅读 · 0 评论 -
HDU 1060 Rightmost Digit(快速幂,c++)
HDU 1060 Rightmost Digit题目链接:Rightmost Digit代码如下:#include<iostream>using namespace std;int n = 0;int fastpow(){ int base = n, ans = 1; while (n) { if (n & 1) { ans = (ans * (base % 10)) % 10; } base = (base % 10 * (base % 10)原创 2020-10-15 23:43:27 · 104 阅读 · 0 评论 -
HDU 1060 Leftmost Digit(数论,c++)
HDU 1060 Leftmost Digit题目链接:Leftmost Digit代码如下:#include<iostream>#include<cmath>using namespace std;int n = 0, a = 0;int main(){ cin >> a; while (a--) { cin >> n; double ans = n * (double)log10(n); double res = an原创 2020-10-15 23:26:18 · 223 阅读 · 0 评论 -
HDU 2817 A sequence of numbers(快速幂,c++)
HDU 2817 A sequence of numbers题目链接:A sequence of numbers代码如下:#include<iostream>using namespace std;typedef long long int ll;#define N 200907#define check(x,y,z)(2*y==(x+z))ll a = 0, b = 0, c = 0, k = 0;ll fastpow(){ ll base = b / a, a原创 2020-10-15 21:50:03 · 127 阅读 · 0 评论