PAT
文章平均质量分 75
mazhichao300
这个作者很懒,什么都没留下…
展开
-
PAT 1047
思路:这题主要是要控制时间。1,存学生名以及所选的课程号2,按姓名排序3,遍历该数组,对于每个节点, 每个课程号作为hash key, value为学生名字,这样建立hash,4,输出hash即可。#include #include #include #include #include using namespace std;typedef struct{原创 2013-06-06 14:53:39 · 395 阅读 · 0 评论 -
1063. Set Similarity
#include #include #include #include #include #include #include using namespace std;double res[60][60];vector >v;double cal(int x, int y){ if(!(res[x][y] < 0)) return res[x][y]; set::ite原创 2013-08-30 22:58:29 · 360 阅读 · 0 评论 -
1033. To Fill or Not to Fill
贪心算法,过程如下:定义可达范围:从每一个加油站出发,能到达的最大距离;(即加满油时的情况)所以我们在每一个加油站, 保证当前的油恰好可以到达 可达范围内第一个比当前油价便宜的加油站,如果可达范围内都比当前油价贵,那就加满油(特例是终点在可达范围内,就不需要加满)。思路还算清晰, 可代码写起来怎么那么纠结。。。有时间再去优化代码。#include #include原创 2013-08-21 17:18:57 · 625 阅读 · 0 评论 -
Travel Plan
http://pat.zju.edu.cn/contests/pat-a-practise/1030单源最短路径,多个权值的情况。#include #include #include #include #include #include using namespace std;#define INF 0x0FFFFFFFstruct Node{ int dis, co原创 2013-08-02 16:00:34 · 438 阅读 · 0 评论 -
Median
http://pat.zju.edu.cn/contests/pat-a-practise/1029二分搜索median。#include #include #include #include #include #include using namespace std;long long *a, *b;int binaryS1(long long *v, long lo原创 2013-08-02 11:15:42 · 663 阅读 · 0 评论 -
The Dominant Color
http://pat.zju.edu.cn/contests/pat-a-practise/1054求数组中出现次数超过一半的那个数字(题目保证一定存在)。解法一:用哈希表。这里就不给出代码了。解法二:有一个数字出现次数超过了一半,也就是说,剩余的数字出现次数之和也没有这个数字多。 那我们可以用如下方法统计:num记录当前数字,times记录当前数字出现的次数,当新遍历到一个数原创 2013-07-25 22:26:11 · 360 阅读 · 0 评论 -
PAT 1008
Elevator按照给定顺序处理,对于每一个数字(可以理解为每一个人)都要停留5秒钟。#include #include #include #include using namespace std;vectorv;int main(){ int n, x, i; cin>>n; for(i = 0; i < n; i ++) { cin>>x; v.pu原创 2013-07-25 22:03:24 · 363 阅读 · 0 评论 -
PAT 1056
题意是:把整数划分成若干个组,每个组内的最大数拿出来,其他的名次想通。 对拿出来的继续分组比较。注意,题目明确表示给定的整数各不相同。#include #include #include #include using namespace std;typedef struct{ int rank; int value;}Node;Node a原创 2013-06-20 14:02:44 · 792 阅读 · 0 评论 -
PAT 1039
这题的解题关键在于如何将学生的名字唯一映射为一个整数。 注意到名字由三个大写字母加一个数字组成,所以可以把名字看成是一个数字。这个数字高三位是26进制,最低位是10进制的。这样第一位的权值: 26*26*10;第二位的权值: 26*10;第三位的权值:26第四位的权值:1由此就可以把名字唯一映射到一个整数。中间碰到一个问题:映射出错,会有多个姓名映射原创 2013-06-07 23:20:58 · 1070 阅读 · 0 评论 -
PAT 1017
注意一点,在17点之前(包括17点)到来的都应该得到服务。代码按秒推进。#include #include #include #include #include using namespace std;typedef struct{ int cost; int arr_time; int start_time;}Customer;int window[1原创 2013-06-06 21:27:29 · 543 阅读 · 0 评论 -
PAT 1048
排序,然后扫描一遍就可以。#include #include #include #include using namespace std;vector v;int main(){ int n, sum, x; scanf("%d %d", &n, &sum); for(int i=0; i<n ;i++)原创 2013-06-06 15:02:38 · 443 阅读 · 0 评论 -
PAT 1014
注意一点:5点前开始服务的都可以到服务结束,就是说结束时间准许在17点之后。代码模拟时间推进(按分钟)。#include #include #include #include #include using namespace std;typedef struct{ int cost; int finish_time; int start_time;}Customer;原创 2013-06-06 20:12:21 · 691 阅读 · 0 评论 -
1064. Complete Binary Search Tree
#include #include #include #include #include #include #include using namespace std;vectorv;int ans[1010];int n;int indexOfRoot(int size){ double t = log(size + 1) / log(2); int level =原创 2013-08-30 23:33:28 · 509 阅读 · 0 评论