![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hdu
springflower02
来吧,来吧,一起来吧
展开
-
【最长上升子序列LIS+路径记录】HDU-1160 FatMouse's Speed
注解1、最长上升子序列的变形。先按照题目要求,根据weight升序和speed降序排序,然后是利用最长上升子序列LIS算法,找到符合要求的最长序列。2、利用pre数组记录路径。代码#include <iostream>#include <algorithm>#include <cstring>using namespace std;st...原创 2020-01-27 14:42:43 · 402 阅读 · 0 评论 -
【广度优先遍历BFS】HDU-1495 非常可乐
注解1、遍历6种情况:a往b倒,a往c倒,b往c倒,b往a倒,c往b倒,c往a倒。2、能倒的条件是,前一个不空,后一个不满。倒的时候分两种情况:(1)前一个的水能全部倒到后一个杯子里;(2)前一个的水只倒一部分到后一个杯子,后一个容量就满了。3、注意初始状态和结束状态,初始状态第一个杯子为满,第二个第三个杯子为空;结束状态是有两个杯子容量相等,另一个杯子为空。4、注意visit数组的设...原创 2020-01-27 14:38:08 · 393 阅读 · 0 评论 -
【最长上升子序列LIS】HDU-5532 Almost Sorted Array
注解1、最长上升子序列的变形,正序和逆序分别扫描,只要其中最长上升子序列的个数大于等于N-1,就输出YES,否则输出NO。代码#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;int ...原创 2020-01-27 14:30:01 · 388 阅读 · 0 评论 -
【模拟】HDU-1462 Word Crosses
注解1、模拟题,要看清楚题目要求,仔细想各种情况。2、两个单词的word cross,要从第一个单词的第一个字母开始遍历,找到该字母在第二个单词中是否有出现,有出现的第一个字母就是符合题目要求的。3、由于是两对单词放在一行输出,因此分为两种情况,首先求出index和index2数组,然后分为以下几部分分别输出:(1)上方只含有1个字母的部分;(2)上方含有2个字母的部分;(3)水平单词;...原创 2020-01-25 13:19:50 · 1755 阅读 · 0 评论 -
【广度优先遍历BFS】HDU-1241 Oil Deposits
注解1、从第一个点,到最后一个点,进行广度优先遍历BFS。2、遍历八个方向:上下左右,右上,右下,左上,左下。代码#include <iostream>#include <queue>#include <cstring>using namespace std;const int MAXN = 101;int M, N;int vis...原创 2020-01-01 14:33:40 · 350 阅读 · 0 评论 -
【广度优先遍历BFS】HDU-2717 Catch That Cow
注解1、广度优先遍历BFS,三种情况:加一,减一,乘二。2、注意边界!要先判断是否在[0,100000]范围,如果在,再判断是否访问过该位置。此顺序不能变化,否则会发生数组越界!导致ACCESS_VIOLATION。代码#include <iostream>#include <queue>#include <cstring>using nam...原创 2019-12-30 21:58:52 · 255 阅读 · 0 评论 -
【广度优先遍历BFS】HDU-1548 A strange lift
注解1、广度优先遍历BFS,注意使用visit数组记录访问过的层数,否则会报内存溢出。代码#include <iostream>#include <queue>#include <cstring>using namespace std;const int MAXN = 201;int A, B, N;int visit[MAXN];...原创 2019-12-30 21:08:45 · 183 阅读 · 0 评论 -
【最大公约数GCD+找规律】HDU-1722 Cake
注解1、答案:a+b-gcd(a,b)代码#include <iostream>#include <algorithm>using namespace std;int main(void){ int a, b; while(scanf("%d%d", &a, &b)!=EOF){ printf("%d\n"...原创 2019-12-30 20:36:46 · 229 阅读 · 0 评论 -
【广度优先遍历BFS】HDU-1195 Open the Lock
注解1、C++的string操作速度很慢,用string本题会超时!改用int数组。要学会字符串,整型等类型之间的转换。2、BFS,从一个数字开始,依次进行:每位数字加一,每位数字减一,交换两相邻数字,这三种操作。3、BFS的同时要记录曾经在队列中出现的数字,避免重复导致内存溢出。具体方法是增加一个visit数组,记录访问过的四位数。代码#include <iostream&g...原创 2019-12-30 20:30:39 · 236 阅读 · 0 评论 -
【递推+Java大整数】HDU-1297 Children’s Queue
注解1、递推关系。F(n) = F(n-1) + F(n-2) + F(n-4)2、大整数。代码import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { BigInteger[] a = ...原创 2019-12-28 22:35:11 · 144 阅读 · 0 评论 -
【找规律+公式推导+切西瓜问题】HDU-1290 献给杭电五十周年校庆的礼物
注解1、找规律,推导公式。这类问题的一般技巧:二维的一般是a_{n} ^ 2+b_{n}+c,三维的一般是a_{n} ^ 3 + b_{n} ^ 2 + c_{n} + d.2、利用上面的通式,只需要找几个数字,用待定系数法即可。代码#include <iostream>using namespace std;int main() { int n; while...原创 2019-12-28 22:29:55 · 635 阅读 · 0 评论 -
【枚举+异或】HDU-1287 破译密码
注解1、枚举和异或。2、理解题目意思,用一个大写字母来异或给出的每个数字,得到的全都是大写字母,就满足题意。题目保证答案唯一。所以只需要枚举26个大写字母就可以了。代码#include <iostream>#include <cstring>using namespace std;int main() { int N; while(~s...原创 2019-12-28 21:51:59 · 170 阅读 · 0 评论 -
【因数+哈希映射+筛法思想】HDU-1286 找新朋友
注解1、利用筛法的思想找因数,速度更快,避免超时。代码#include <iostream>#include <cstring>using namespace std;int main() { int CN; scanf("%d", &CN); for(int i=0; i<CN; i++){ ...原创 2019-12-28 21:16:29 · 185 阅读 · 0 评论 -
【完全背包】HDU-1284 钱币兑换问题
注解1、完全背包。注意初始情况为dp[0]=1。代码#include <iostream>#include <cstring>using namespace std;const int MAX = 32768;const int MAXTYPE = 3;int coin[MAXTYPE] = {1, 2, 3};int main() { ...原创 2019-12-28 20:57:39 · 169 阅读 · 0 评论 -
【模拟】HDU-1283 最简单的计算机
注解1、简单模拟。代码#include <iostream>using namespace std;int main() { int M1, M2; while(cin>>M1>>M2) { int R1 = 0; int R2 = 0; int R3 = 0; ...原创 2019-12-28 20:50:26 · 170 阅读 · 0 评论 -
【字符串处理+回文数】HDU-1282 回文数猜想
注解1、简单的字符串处理,以及回文数的判断。2、字符串与数字的转换。代码#include <iostream>#include <sstream>#include <vector>using namespace std;int isPalin(string s){ int len = s.length(); for(int...原创 2019-12-28 20:43:20 · 168 阅读 · 0 评论 -
【哈希映射】HDU-1280 前m大的数
注解1、简单的哈希映射,把sum映射到对应位置。代码#include <iostream>#include <cstring>using namespace std;const int MAXN = 10001;int main() { int N, M; while(~scanf("%d %d", &N, &M))...原创 2019-12-28 20:09:31 · 139 阅读 · 0 评论 -
【模拟】HDU-1279 验证角谷猜想
注解1、简单模拟,模拟此过程即可。代码#include <iostream>using namespace std;int main() { int n; cin>>n; for(int i=0; i<n; i++) { int m; cin>>m; in...原创 2019-12-28 19:30:29 · 164 阅读 · 0 评论 -
【模拟】HDU-1276 士兵队列训练问题
注解1、简单模拟题,模拟此过程即可。代码#include <iostream>#include <cstring>using namespace std;int main() { int n; cin>>n; for(int i=0; i<n; i++) { int m; cin...原创 2019-12-28 19:04:22 · 411 阅读 · 0 评论 -
【字符串处理】HDU-1266 Reverse Number
注解1、字符串处理,仔细理解题目,分为:末尾带0,末尾不带0,以及正数和负数的情况。2、特别注意:输入0的时候,输出0,一定不能错。否则会报WA。代码#include <iostream>using namespace std;int main() { int n; cin>>n; for(int i=0; i<n; i++) { st...原创 2019-12-28 18:25:15 · 121 阅读 · 0 评论 -
【输入输出控制+哈希映射】HDU-1264 Counting Squares
注解1、输入输出格式控制。-1和-2分别表示什么。2、把矩阵空间映射到二维数组中,用二维数组的计数表示矩形面积。代码#include <iostream>#include <cstring>#include <cmath>using namespace std;const int MAX = 101;int rec[MAX][MAX]...原创 2019-12-28 13:25:20 · 115 阅读 · 0 评论 -
【素数判断】HDU-1262 寻找素数对
注解1、素数判断。代码#include <iostream>#include <cmath>using namespace std;int isPrime(int n){ for(int i=2; i<=sqrt(n); i++){ if(n%i==0){ return 0; } ...原创 2019-12-28 13:11:38 · 251 阅读 · 0 评论 -
【组合数+阶乘+Java大数】HDU-1261 字串数
注解1、求组合数。2、Java大数。代码import java.math.BigInteger;import java.util.Scanner;public class Main { public static BigInteger Factorial(int n) { BigInteger bi = BigInteger.ONE; ...原创 2019-12-28 10:39:18 · 218 阅读 · 0 评论 -
【STL交换swap+字符数组】HDU-1259 ZJUTACM
注解1、STL的交换操作,swap函数。2、字符数组的简单使用。3、模拟交换过程。代码#include <iostream>using namespace std;int main() { int N; scanf("%d", &N); for(int i=0; i<N; i++) { char c[] = {" ZJUTACM"};...原创 2019-12-28 10:10:14 · 180 阅读 · 0 评论 -
【Java大数BigInteger+递推】HDU-1250 Hat's Fibonacci
注解1、Java大数BigInteger。2、递推关系。代码import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in)...原创 2019-12-27 23:11:50 · 108 阅读 · 0 评论 -
【三角形划分区域+公式推导】HDU-1249 三角形
注解1、公式推导:f(n) = 6 * (n-1) + f(n-1),f(1) = 22、详解:https://blog.csdn.net/pmt123456/article/details/53939004代码#include <iostream>using namespace std;const int LEN = 10001;int a[LEN];voi...原创 2019-12-27 22:46:07 · 322 阅读 · 0 评论 -
【完全背包或哈希映射】HDU-1248 寒冰王座
注解1、可用完全背包来做。2、也可用哈希映射来做。代码(完全背包)#include <iostream>#include <cstring>using namespace std;const int LEN = 10010;int dp[LEN];void init(){ memset(dp, 0, sizeof(dp));...原创 2019-12-27 22:18:54 · 142 阅读 · 0 评论 -
【结构体排序】HDU-1236 排名
注解1、结构体排序。2、注意string类型在结构体排序时也只需要用 < 或 > 即可进行比较,升序或降序。代码#include <iostream>#include <algorithm>using namespace std;struct Stu { string id; int sum;};int compare...原创 2019-12-26 18:00:17 · 269 阅读 · 0 评论 -
【简单哈希映射】HDU-1235 统计同成绩学生人数
注解1、简单哈希映射,将每个分数映射为数组对应的位置,因此查找的复杂度为O(1),避免超时。代码#include <iostream>#include <cstring>using namespace std;int main() { int N; scanf("%d", &N); while(N){ ...原创 2019-12-26 16:37:32 · 120 阅读 · 0 评论 -
【结构体排序】HDU-1234 开门人和关门人
注解1、结构体排序。2、字符串的输入要注意,以及scanf如何快速方便的输入带格式数据(如本题的时间数据)。代码#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int LEN = 20;struct Peo { ...原创 2019-12-26 16:20:54 · 157 阅读 · 0 评论 -
【取余】HDU-1229 还是A+B
注解1、要想得到末位K位数,要有取余的方法。代码#include <iostream>#include <cmath>using namespace std;int main() { int a, b, k; cin>>a>>b>>k; while(a || b){ i...原创 2019-12-25 22:12:49 · 138 阅读 · 0 评论 -
【STL队列queue】HDU-1228 A + B
注解1、用STL的队列,第一次读到+,然后把第一个数变成数字,第二次读到=,然后把第二个数字变成数字。之后两数相加即可。代码#include <iostream>#include <queue>using namespace std;const int LEN = 10;string str[] = {"zero", "one", "two", "th...原创 2019-12-25 22:01:48 · 142 阅读 · 0 评论 -
【Map】HDU-2648 Shopping
注解1、熟练使用STL中的Map。2、对应结果再暂存到数组中,然后从数组中查找有几个比Memory价格高的。代码#include <iostream>#include <map>using namespace std;int main() { int n; while(cin>>n) { int a...原创 2019-12-25 18:01:26 · 176 阅读 · 0 评论 -
【STL队列和栈】HDU-1702 ACboy needs your help again!
注解1、熟练使用STL中的栈和队列。代码#include <iostream>#include <queue>#include <stack>using namespace std;int main() { int T; cin>>T; for(int i=0; i<T; i++) {...原创 2019-12-25 17:59:15 · 146 阅读 · 0 评论 -
【卡特兰数Catalan+Java大数BigInteger】HDU-1133 Buy the Ticket
注解1、此题是Catalan数的变形,如果m=n,则就是标准的卡塔兰数。2、如果m<n,直接输出0。3、对于m>n的情况,要转换成排列。化简后的公式为:F(N) =(m+n)!*(m-n+1)/(m+1)4、必须用大数来解决。代码import java.math.BigInteger;import java.util.Scanner;public class Ma...原创 2019-12-25 17:56:59 · 145 阅读 · 0 评论 -
【GCD】HDU-1222 Wolf and Rabbit
注解1、求GCD,如果是1,就是YES,否则就是NO。代码#include <iostream>using namespace std;int gcd(int a, int b){ return a%b==0?b:gcd(b, a%b);}int main() { int n; scanf("%d", &n); ...原创 2019-12-24 19:59:37 · 104 阅读 · 0 评论 -
【字母个数统计】HDU-1219 AC Me
注解1、简单的字母个数统计,用打表的方式即可(26个字母组成的数组)。代码#include <iostream>#include <cstring>using namespace std;const int SIZE = 26;int main() { string s; while(getline(cin, s)){ ...原创 2019-12-24 19:53:42 · 130 阅读 · 0 评论 -
【找因数+打表】HDU-1215 七夕节
注解1、如果对输入的每个数暴力找因数,会超时。2、正确做法是类似于筛法求素数,先开一个大数组,然后一次性找出所有数字的因数。找因数的方法是,先找所有含因数1的数字,再找所有含因数2的数字,再找所有含因数3的数字。。。以此类推。代码#include <iostream>#include <cstring>using namespace std;cons...原创 2019-12-24 19:26:18 · 181 阅读 · 0 评论 -
【逆序】HDU-1214 圆桌会议
注解1、本题相当于求逆序,一个容量为n的队列,逆序需要交换的次数为 n * (n-1) / 2。2、本题是个圆形队列(循环队列),相当于没有首尾,因此将队列分成两半,分的时候容量尽量接近,每部分分别逆序再整合即可。代码#include <iostream>using namespace std;int fun(int n){ return n*(n-1)/2...原创 2019-12-24 18:17:07 · 212 阅读 · 0 评论 -
【Java大数BigInteger】HDU-1212 Big Number
注解1、直接利用Java大数类BigInteger,计算mod。代码import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System....原创 2019-12-24 18:13:33 · 131 阅读 · 0 评论