随笔分类 -  PAT (Advanced Level) Practice

摘要:这道题有点抽象, 先举几个栗子:chestnut:, 找一下规律. (太长不看) 记从$1$到$N$中$1$出现的次数为$f(N)$, 个位上的数为$a$, 十位上的数为$b$, 百位上的数为$c$, 以此类推. 当$N$为1位数时 设$N=6$, 则$S={1}, f(N)=1$. 此时总结可得: 阅读全文
posted @ 2020-08-13 21:26 Hellofds 阅读(122) 评论(0) 推荐(0)
摘要:浮点错误:边加边化简(注意溢出) 特判:和为 $0$ 补充:带分数 非零自然数与真分数相加(负整数时与真分数相减)所成的分数 👉 code 阅读全文
posted @ 2020-08-13 00:28 Hellofds 阅读(56) 评论(0) 推荐(0)
摘要:记原数组为 \(a\),部分排序数组为 \(s\) Insertion sort \(s\) 的前面部分有序,后面的无序部分与 \(a\) 相同 Merge sort 对 \(a\) 进行模拟归并排序,将每一个状态与 \(s\) 比较。若 \(a=s\),则再进行一次归并排序后退出 Heap sor 阅读全文
posted @ 2020-08-12 17:24 Hellofds 阅读(62) 评论(0) 推荐(0)
摘要:对于整型数 \(a\),\(b\),求模运算mod或者求余运算rem的方法: 求整数商:\(c = [a/b]\); 计算模或者余数:\(r = a - c*b\). 区别:第一步不同 求模运算mod:在求 \(c\) 的值时,向 \(-\infty\) 方向舍入 求余运算rem:在求 \(c\) 阅读全文
posted @ 2020-08-06 22:01 Hellofds 阅读(70) 评论(0) 推荐(0)
摘要:交集 std::set_intersection Constructs a sorted range beginning in the location pointed by result with the set intersection of the two sorted ranges [fir 阅读全文
posted @ 2020-08-04 21:53 Hellofds 阅读(71) 评论(0) 推荐(0)
摘要:注意到题目要求输出链表的节点个数,说明输入的节点中存在无效数据 特判:空链表 👉 code 阅读全文
posted @ 2020-08-04 12:55 Hellofds 阅读(59) 评论(0) 推荐(0)
摘要:**注意到$N(\leq 10^5)$,\(M(\leq 100)\),**那么对于数据集可以进行如下处理: 按题目要求对所有数据排序。 建立标记数组c[AGE],在$c_i$中记录年龄为$i$的人数,其中const int AGE = 205。再建立新数组s[N],记录有效数据。 遍历已有序的数据 阅读全文
posted @ 2020-08-03 10:52 Hellofds 阅读(58) 评论(0) 推荐(0)
摘要:dp动态规划 $dp[i][j]$表示$s[i] \to s[j]$是否对称,是为$1$,否为$0$ 状态转移方程:\(dp[i][j] = dp[i+1][j-1] \&\& (s[i]==s[j])\) 边界条件:\(dp[i][i]=1,dp[i][i+1]=(s[i]==s[i+1])\) 阅读全文
posted @ 2020-08-02 09:28 Hellofds 阅读(99) 评论(0) 推荐(0)
摘要:这道题主要是解决超时问题 使用unordered_map代替map 参考: std::unordered_map map与unordered_map map和unordered_map的差别和使用 在PAT里使用map还是unordered_map? 使用unordered_map<string, 阅读全文
posted @ 2020-08-01 20:59 Hellofds 阅读(77) 评论(0) 推荐(0)
摘要:题目的要求即为:对任意两个数字,确定它们的排序,使得两个数字串起来后得到的新数字最小 struct cmp { bool operator() (const int a, const int b) { char str[2][2*M]; strcpy(str[0], num[a]); strcat( 阅读全文
posted @ 2020-08-01 19:45 Hellofds 阅读(70) 评论(0) 推荐(0)
摘要:注意输出格式 if(suffix != -1) printf("%05d\n", suffix); else printf("-1\n"); 特判:至少一个单词是空的 if(word[0] 1 || word[1] 1) { printf("-1\n"); return 0; } 从尾到头判断地址是 阅读全文
posted @ 2020-07-31 15:51 Hellofds 阅读(62) 评论(0) 推荐(0)
摘要:二叉搜索树中序遍历得到的结点顺序是给出的数值序列从小到大的排列顺序 👉 code 阅读全文
posted @ 2020-07-29 22:48 Hellofds 阅读(73) 评论(0) 推荐(0)
摘要:素数打表记得标记0和1 void table() { memset(primes, 0, sizeof(primes)); primes[0] = primes[1] = 1; // 素数打表别忘了0和1 rep(i,2,N) { if(!primes[i]) { int j = 2; while( 阅读全文
posted @ 2020-07-29 22:46 Hellofds 阅读(78) 评论(0) 推荐(0)
摘要:输出格式 #include<iostream> #include<iomanip> cout << setfill('0'); cout << rst/1000 << ',' << setw(3) << rst%1000; or #include<cstdio> printf("%d,%03d", 阅读全文
posted @ 2020-07-29 22:42 Hellofds 阅读(87) 评论(0) 推荐(0)