
HDU习题集
自己的hdu刷题笔记
附带题解
Wiz1code(算法号)
这个作者很懒,什么都没留下…
展开
-
HDU 2000
题目描述解题思路算法库sort排序输出即可代码#include<iostream>#include<algorithm>using namespace std;char a[3];int main(){ while(cin>>a){ sort(a,a+3); cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl; } return 0;}原创 2021-05-28 20:21:34 · 65 阅读 · 0 评论 -
HDU 1010
题目描述解题思路剪枝剪枝策略就是在搜索过程中利用过滤条件来剪去完全不用考虑(已经判断这条路走下去得不到最优解)的搜索路径,从而避免了一些不必要的搜索,大大优化了算法求解速度,还保证了结果的正确性。简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长。剪枝的概念,其实就跟走迷宫避开死胡同差不多。若我们把搜索的过程看成是对一棵树的遍历,那么剪枝顾名思义,就是将树中的一些“死胡同”,不能到达我们需要的解的枝条“剪”掉,以减少搜索的时间。奇偶剪枝把矩阵看成原创 2021-05-28 20:10:05 · 122 阅读 · 0 评论 -
HDU 1001
题目描述解题思路方法一 :直接相加求解方法二:利用求和公式n(n+1)/2,不过这里会爆int,记得开long long代码//本处运用法一求解#include<iostream>using namespace std; int main(){ int n; while(cin>>n) { int sum=0; for(int i=1;i<=n;i++) sum+=i; cout<<sum<<endl&原创 2021-05-27 14:21:03 · 69 阅读 · 0 评论 -
HDU 1000
题目描述解题思路注意含多组数据代码#include<iostream>using namespace std;int main(){ int a,b; while(cin >> a >> b) //连续输入输出 cout << a+b << endl; return 0;}原创 2021-05-27 14:26:10 · 127 阅读 · 0 评论 -
HDU 1002
题目描述解题思路:直接套个大数加法模板即可(模板看不懂直接背下来也可以)注意输出格式的规范代码:#include<iostream>#include<cstring>using namespace std;int maxn,sum,pos,Begin,End,T,n,a[100005];int main(){ cin>>T; for(int Case=1;Case<=T;Case++){ memset(a,0,sizeof a)原创 2021-05-27 14:28:45 · 70 阅读 · 0 评论 -
HDU 1004
题目描述解题思路利用STL库中的map映射找出最大值即可代码#include<iostream>#include<map>#include<string>using namespace std;map<string,int>m; //利用map映射int main() { int n; while(cin>>n&&n!=0) { int maxn=-1; //每次都初始化最大值为-原创 2021-05-26 19:55:52 · 82 阅读 · 0 评论 -
HDU 1005
题目描述解题思路方法一:找规律本题的关键是找到循环节,即**(arr[i]==1&&arr[i-1]==1 )**又是一道给出了运算公式的数学凡是没有优化的话,超时超内存等等是避免不了的了。这题很显然是一个找规律的题目,也就是该题的求解中是存在循环节的。对于公式 f[n] = A * f[n-1] + B * f[n-2]; 后者只有7 * 7 = 49 种可能,为什么这么说,因为对于f[n-1] 或者 f[n-2] 的取值只有 0,1,2,3,4,5,6 这7个数,A,原创 2021-05-27 14:36:18 · 99 阅读 · 0 评论 -
HDU 1008
题目描述解题思路简单模拟,设置中间变量temp进行电梯楼层的更新即可代码#include<iostream>using namespace std;int main(){ int n; while(cin>>n&&n!=0){ int now=0,sum=0,temp; //每次测试记得初始化 for(int i=1;i<=n;i++){ cin>>temp; //中间变量temp if(te原创 2021-05-27 08:24:52 · 123 阅读 · 0 评论 -
HDU 1009
题目描述解题思路贪心思想,按性价比从大到小排序排序后,如果猫粮剩余数量大于某个楼层最大交换量的猫粮,就全部拿走否则就按照拿走剩余数量*性价比的量代码#include<iostream>#include<algorithm> using namespace std;struct A{ double b,c,w; //b是豆子量,c是猫粮量,w是性价比}num[1005];bool cmp(A x,A y){ //自定义按性价比原创 2021-05-27 09:12:32 · 77 阅读 · 0 评论 -
HDU 1018
题目描述解题思路方法一:N!=123…*n求位数我们一般用对一个数取对数就可以了 ,log10(n!)=log10(1)+ log10(2) +log10(3)…+log10(n);所以循环求和就可以了!PS: 结果要加1!因为这里计算出来的 log10(1)=0 !所以结果要加上这个误差 ‘1’方法二:斯特林数(本处不做详解)代码//这里用方法一求解!#include<iostream>#include<cmath>using namespa原创 2021-05-27 14:08:11 · 102 阅读 · 0 评论