自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 PAT (Advanced) 1078. Hashing (25)

原题:1078. Hashing (25)解题思路:按题意模拟,注意平方探测只有正向。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 10000 + 8;int mp[maxn];int num[maxn];i...

2018-03-29 21:25:58 99

原创 PAT (Advanced) 1077. Kuchiguse (20)

1077. Kuchiguse (20)解题思路:暴力就行,从末尾开始比较。代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 100 + 5;const int maxl = 300 + 5;char str[ma...

2018-03-29 20:27:43 103

原创 PAT (Advanced) 1076. Forwards on Weibo (30)

原题:1076. Forwards on Weibo (30)解题思路:实际上就是bfs对应的层数并求出点的数量,注意在输入数据时有向边应由被关注者指向关注者,方便处理。在结点内维护一个level表示层数,在bfs就能判断当前的层了。代码如下:#include<cstdio>#include<algorithm>#include<vector>#inclu...

2018-03-28 15:44:42 109

原创 PAT (Advanced) 1075. PAT Judge (25)

原题:1075. PAT Judge (25)解题思路:主要理解题意即可,设置-2为未提交过,-1为编译未通过,最后按题目要求排序输出。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 10000 + 5;str...

2018-03-28 15:10:09 87

原创 PAT (Advanced) 1074. Reversing Linked List (25)

原题:1074. Reversing Linked List (25)解题思路:构造双链表。主要在原链表中加入一个pre表示前一个节点,反转只要将next与pre互换即可,当然首尾需要特殊处理。代码如下:#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100000;str...

2018-03-26 23:44:58 189

原创 PAT (Advanced) 1073. Scientific Notation (20)

原题:1073. Scientific Notation (20)解题思路:实际上就是模拟题,考虑好所有情况(需要不需要添0),以及去掉+号即可。我用的是stl库的函数对字符串进行处理。代码如下:#include<iostream>#include<algorithm>#include<string>using namespace std;int tr...

2018-03-24 01:04:13 168

原创 2018清华计算机考研总结

算是度过了艰辛的二战,好在结果不错,已被网络研究院拟录取,应该算是通过复试了。三跨清华计算机,一战的时候不知深浅,通过初试,但没想到机考难度这么高,第一天考完心态崩溃,面试,卒。于是乎选择二战,依旧通过初试,也练了机试,面试也没崩,不过也不知道什么情况,依旧被刷,好在有云龙胸(代号)的支持,迅速调整心态,并在狗头(代号)的帮助下备战网研院,最终成功通过复试。————————————————————...

2018-03-24 00:06:41 45825 19

原创 PAT (Advanced) 1072. Gas Station (30)

原题:1072. Gas Station (30)解题思路:用dijkstra算法计算出每个加油站到村庄的最短距离即可。对于加油站的优先级:1)保证距离最大的村庄在服务范围内2)在1)下,保证距离最小的村庄离加油站最远3)在2)下,保证平均距离最小4)在3)下,保证id最小代码如下:#include<cstdio>#include<algorithm>#include&...

2018-03-10 16:09:26 128

原创 PAT (Advanced) 1071. Speech Patterns (25)

原题:1071. Speech Patterns (25)解题思路:为了方便用string流,拿map做了低效的hash,时间还可以承受。第一步把字符串里的无关字符全部去掉,把大写换成小写,后再统计单词个数即可。map是自动排序的,所以第一个解就是答案。代码如下:#include<cstdio>#include<iostream>#include<string&g...

2018-03-09 17:37:27 149

原创 PAT (Advanced) 1070. Mooncake (25)

原题:1070. Mooncake (25)解题思路:贪心。每次挑单价最高的即可。注意质量用double保存,不然第三个样例过不去。代码如下:#include<cstdio>#include<algorithm>using namespace std;const int maxn = 1000 + 5;struct MC{ double price; ...

2018-03-09 17:17:55 142

原创 PAT (Advanced) 1069. The Black Hole of Numbers (20)

原题:1069. The Black Hole of Numbers (20)解题思路:按题意做即可。代码如下:#include<cstdio>#include<algorithm>#include<string>using namespace std;int main(){ char s[10]; while(scanf("%s"...

2018-03-09 16:53:02 110

原创 PAT (Advanced) 1068. Find More Coins (30)

原题:1068. Find More Coins (30)解题思路:一开始想用搜索+回溯来做,但发现最后一个样例过不去,也想不出该怎么剪枝,就考虑其他方法了。仔细分析一下就是一个01背包问题,只不过物品质量和价值比为1:1,求解就简单了。如果最后结果dp[n][m]不等于价值量,也就是无解了。第二个问题是求最小解,一开始我是从小到大放,但是无法求出最小解,就试着从大到小放硬币,发现可以完成任务。代...

2018-03-09 15:27:11 147 3

原创 PAT (Advanced) 1067. Sort with Swap(0,*) (25)

原题:1067. Sort with Swap(0,*) (25)解题思路:每次把0所在位置上数找到是使用次数最少的。然后按题目意思去模拟就好,不过会出现还未排序完0就在位置0上的情况,所以要加一个计数器来计算剩下的不在位置上的数,当0回到0位置时,如果未排好,就找一个不在位置上的数与0交换(不要总是从头找,会超时,设置一个每次都更新的标记,每次都从标记往后找),再继续排序即可。代码如下:#inc...

2018-03-07 18:58:59 145

原创 PAT (Advanced) 1066. Root of AVL Tree (25)

原题:1066. Root of AVL Tree (25)解题思路:对于AVL树的考察,原理实际上很简单,关键在于左旋和右旋的实现,这种指针的操作最好的理解办法还是画出来,然后一步步去实现。代码如下:#include<algorithm>#include<cstdio>#include<cstring>using namespace std;stru...

2018-03-07 18:08:23 133

原创 PAT (Advanced) 1065. A+B and C (64bit) (20)

原题:1065. A+B and C (64bit) (20)解题思路:把所有溢出的情况考虑好就可以了。代码如下:#include<cstdio>int main(){ long long a, b, c; int n; while(scanf("%d", &n) == 1) { for(int i = 1; i <=...

2018-03-07 14:54:46 110

原创 PAT (Advanced) 1064. Complete Binary Search Tree (30)

原题:1064. Complete Binary Search Tree (30)解题思路:考察二叉搜索树和完全二叉树的性质,实际上所有数据从小到大就是二叉搜索树的中序遍历,而完全二叉树用数组保存又有左右子树的编号为root*2与root*2+1的性质,并且用数组保存的完全二叉树中间是不会有空结点的,应用这两个性质递归构造完全二叉树即可。代码如下:#include<cstdio>#i...

2018-03-07 14:10:44 152

原创 PAT (Advanced) 1063. Set Similarity (25)

原题:1063. Set Similarity (25)解题思路:本质上是求交集与并集大小的比值。题目要求每个集合实际上是没有重复元素的,所以第一步,对每个集合进行去重。找相同元素时,只要合并两个集合并且去重(unique函数去重会把重复元素放在最后,可以以此找到重复元素)求出百分比即可。代码如下:#include<cstdio>#include<algorithm>#...

2018-03-07 13:48:49 130

原创 PAT (Advanced) 1062. Talent and Virtue (25)

原题:1062. Talent and Virtue (25)解题思路:按题目要求一步一步排序即可。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 100000 +5;struct Student{ in...

2018-03-07 13:48:04 98

原创 PAT (Advanced) 1061. Dating (20)

原题:1061. Dating (20)解题思路:看似简单的题,坑不少。首先表示星期的为 A 到 G,其次表示时的为A到N, 表示成A到Z就错了。代码如下:#include<cstdio>#include<algorithm>#include<cstring>#include<cctype>using namespace std;char ...

2018-03-07 13:47:01 107

原创 PAT (Advanced) 1060. Are They Equal (25)

原题:1060. Are They Equal (25)解题思路:用字符串按题意处理即可。代码如下:#include<iostream>#include<string>#include<cstdio>using namespace std;string solve(string s, int& cnt, int k) //cnt为指数{ ...

2018-03-06 22:24:13 92

原创 PAT (Advanced) 1059. Prime Factors (25)

原题:1059. Prime Factors (25)解题思路:用筛法先把可能用到的素数找出来,再用求得的素数去除原数,获取结果即可。#include<algorithm>#include<cstdio>#include<cstring>#include<vector>#include<cmath>using namespace...

2018-03-06 21:18:55 125

原创 PAT (Advanced) 1058. A+B in Hogwarts (20)

原题:1058. A+B in Hogwarts (20)解题思路:直接算。代码如下:#include<cstdio>#include<algorithm>using namespace std;int a[3], b[3], c[3];int main(){ while(scanf("%d.%d.%d %d.%d.%d", &a[0], &a...

2018-03-06 20:41:34 108

原创 PAT (Advanced) 1057. Stack (30)

原题:1057. Stack (30)解题思路:分块查找。实际上题目的关键就在于快速找到中位数,用分块查找可以实现。代码如下:#include<cstdio>#include<algorithm>#include<stack>#include<map>#include<cstring>using namespace std;c...

2018-03-06 15:36:12 114

原创 PAT (Advanced) 1056. Mice and Rice (25)

原题:1056. Mice and Rice (25)解题思路:题目对第三行数据的描述略坑。第三行的数实际上本身就是出场次序,不如第一个数为6,就代表6号老鼠第一个出场。实际上就是循环找出每组最大的,直到只剩下一个老鼠。需要设计几个比较函数进行排序。代码如下:#include<cstdio>#include<algorithm>#include<vector&gt...

2018-03-06 14:48:24 157

原创 PAT (Advanced) 1055. The World's Richest (25)

原题:1055. The World's Richest (25)解题思路:按题目要求排个序,再按要求找到合适数量的人就可以了代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>using names...

2018-03-06 11:57:14 97

原创 PAT (Advanced) 1054. The Dominant Color (20)

原题:1054. The Dominant Color (20)解题思路:实际上就是求一个向量里面的超过总数一半的数。主要是将访问到目前的不同的数两两抵消,剩下的必然就是要求的数。代码如下:#include<cstdio>int main(){ int n, m; while(scanf("%d%d", &n, &m) == 2) { ...

2018-03-06 11:38:05 92

原创 PAT (Advanced) 1053. Path of Equal Weight (30)

原题:1053. Path of Equal Weight (30)解题思路:用dfs遍历每一条路径,符合条件输出即可。为满足输出要求,要对每个非叶结点的子结点按权重从大刀小排序。代码如下:#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using nam...

2018-03-06 11:19:42 157

原创 PAT (Advanced) 1052. Linked List Sorting (25)

原题:1052. Linked List Sorting (25)解题思路:把题目要求的链表上的数排序后修改后继地址并输出即可。有几个陷阱:1)链表可能不止一条2)最后一个样例是  n > 0 ,head = -1的情况代码如下:#include<cstdio>#include<algorithm>#include<cstring>using nam...

2018-03-05 21:16:22 96

原创 PAT (Advanced) 1051. Pop Sequence (25)

原题:1051. Pop Sequence (25)解题思路:只要入栈序列当前的数比出栈序列当前的数小,就入栈直到相等,再判断栈是否过大,再判断栈顶元素与当前的出栈序列的数是否相等,出现不合法的情况直接退出即可。代码如下:#include<cstdio>#include<stack>#include<algorithm>using namespace st...

2018-03-05 16:55:10 146

原创 PAT (Advanced) 1050. String Subtraction (20)

原题:1050. String Subtraction (20)解题思路:对于要删除的字母做个记录以后,再将字符串中不需要删除的字母输出即可。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 10000 + 5;in...

2018-03-05 16:22:43 244

原创 PAT (Advanced) 1049. Counting Ones (30)

原题:1049. Counting Ones (30)解题思路:暴力肯定会超时。那么对数本身下功夫肯定不行了,不妨对每一位数取到1的情况做一下枚举,最后将所有情况加起来即可。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int main(){...

2018-03-05 16:11:52 102

原创 PAT (Advanced) 1048. Find Coins (25)

原题:1048. Find Coins (25)解题思路:双指针法。先将所有的数从小到大排序,左右指针分别指向最左和最右,若两个值之和比要求的大,右指针前移,小则左指针后移。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn...

2018-03-05 15:17:15 116

原创 PAT (Advanced) 1047. Student List for Course (25)

原题:1047. Student List for Course (25)解题思路:输入输出量很大,必须压缩查找的时间,而字符串很短,完全可以采用散列并且不冲突。如果不用散列直接保存结果也是可行的,不过内存需求会大很多。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include&lt...

2018-03-05 14:44:02 96

原创 PAT (Advanced) 1046. Shortest Distance (20)

原题:1046. Shortest Distance (20)解题思路:题目的时间要求不能一个请求算一次,所以应当事先把到第一个地点的距离都保存下来。输出顺时针走和逆时针走的最小距离即可。代码如下:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const i...

2018-03-05 14:18:10 104

原创 PAT (Advanced) 1045. Favorite Color Stripe (30)

原题:1045. Favorite Color Stripe (30)解题思路:动态规划。用dp[i][j]来表示喜欢的颜色到第i个位置,彩带到达第j个位置所能得到的最大长度。则i与j所表示的颜色相同时,dp[i][j] = dp[i][j-1]+1;不同时,dp[i][j]取dp[i][j-1], dp[i-1][j], dp[i-1][j-1]中的最大值。代码如下:#include<cs...

2018-03-05 13:56:23 121

原创 PAT (Advanced) 1044. Shopping in Mars (25)

原题:1044. Shopping in Mars (25)解题思路:要求区间和,首先想办法把区间和保存下来,sum[i]表示下标从0到i的钻石和。这样sum[j]-sum[i]+val[i]就是区间i到j的和了。再就是连续区间和问题,很容易想到一个窗口的思想,直接枚举窗口会超时,所以必须利用前面计算出的区间和的大小来判断窗口的变化,详情见代码。代码如下:#include<cstdio&gt...

2018-03-05 11:47:51 123

原创 PAT (Advanced) 1043. Is It a Binary Search Tree (25)

原题:1043. Is It a Binary Search Tree (25)解题思路:多了个镜像,干脆就把原来的函数修改下就用了,代码显得比较啰嗦。主要是递归处理前序遍历的数组, 看是否符合BST。代码如下:#include<algorithm>#include<cstdio>#include<cstring>using namespace std;...

2018-03-04 20:34:59 99

原创 PAT (Advanced) 1042. Shuffling Machine (20)

原题:1042. Shuffling Machine (20)解题思路:看懂题目的意思,然后将牌用数字表示,记录每次的移动后每个位置上的牌即可。代码如下:#include<cstdio>#include<string>#include<algorithm>using namespace std;int pos[54];int newp[2][54];...

2018-03-04 18:10:06 97

原创 PAT (Advanced) 1041. Be Unique (20)

原题:1041. Be Unique (20)解题思路:设个计数器即可。代码如下:#include<cstdio>#include<cstring>#include<vector>#include<algorithm>using namespace std;const int maxn = 10000 + 5;int cnt[maxn]...

2018-03-04 17:22:07 88

原创 PAT (Advanced) 1040. Longest Symmetric String (25)

原题:1040. Longest Symmetric String (25)解题思路:动态规划。规定两个坐标i, j,dp[i][j]表示从i到j是否为对称字符串, s[i] != s[j] 时,肯定不是, s[i] == s[j]时,若当前子串长度小于3,或者dp[i+1][j-1]是1,则dp[i][j] = 1。注意:对称字符串应当从短到长判断,所以遍历顺序如代码所示。事实上,manache...

2018-03-04 17:10:43 275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除