Jobdu Problems
文章平均质量分 59
Solutions are released here.
stephen_wong
这个作者很懒,什么都没留下…
展开
-
九度 题目1013:开门人和关门人
字符串直接比较即可。偷懒用的sort排序,O(nlogn)的复杂度;若是直接用string存最早到最晚离开的信息,只需要O(n).代码:#include #include #include #include using namespace std;struct Person{ string id; string enter; string leave;}原创 2015-02-05 17:55:45 · 890 阅读 · 0 评论 -
九度 题目1014:排名
按总分降序打印过录取线的学生,总分相同时,id小的在前(id升序)。代码:#include #include #include #include using namespace std;struct Student{ Student(const string& _id): id(_id), tot(0) {} string id; int tot;};b原创 2015-02-05 18:55:42 · 992 阅读 · 0 评论 -
九度 题目1012:畅通工程 (BFS计算连通分支的个数)
用宽搜(bfs)计算图的连通分支的个数bfs_cnt。需要构建的道路的条数为bfs_cnt - 1代码:#include #include using namespace std;int n, m, bfs_cnt;bool connect[1010][1010];bool vi[1010];queue q;void init(){ for (int i =原创 2015-02-05 12:35:56 · 1356 阅读 · 0 评论 -
九度 题目1011:最大连续子序列
这题和PAT 1007. Maximum Subsequence Sum一样,只是输入为0时要结束。用动态规划的思想。迭代数组a中的每个数a[i],用cur变量标识从前到a[i](包括a[i])的最大累和。当cur小于零时归零,意味如果这个从前到a[i]为止的子序列包括a[i], 那么必然和小于0, 索性不要考虑这个子序列,从下一处i+1开始重新计算。注意到:1原创 2015-02-05 12:34:17 · 1233 阅读 · 0 评论 -
九度 题目1010:A + B
处理好字符串即可。代码:#include #include #include using namespace std;map dict;string str;int a, b;void init(){ dict["zero"] = 0; dict["one"] = 1; dict["two"] = 2; dict["three"] = 3; dict["four原创 2015-02-05 12:29:46 · 923 阅读 · 0 评论 -
九度 题目1009:二叉搜索树 (静态数组构建二叉树\二叉树的数组实现)
题意:给定序列,将序列中的数字一个一个插入到二叉查找树中。问不同的序列,最终生成的二叉查找树是否相同。可以用静态数组构建二叉树。原创 2015-02-04 11:15:54 · 1390 阅读 · 0 评论 -
九度 题目1008:最短路径问题
dijkstra求最短路,出现相同最短路时取花费最小的那条。代码:#include #include #include #include using namespace std;int n, m;int map[1010][1010];bool vi[1010];int cost[1010][1010];int dis[1010];int price[101原创 2015-02-04 11:12:30 · 1375 阅读 · 3 评论 -
九度 题目1007:奥运排序问题
题意:按国家号,依次输出它们的:“排名:排名方式”这里的排名方式指的即是金牌总数,奖牌总数,金牌人口比例,奖牌人口比例。它们的排名方式分别对应数字1, 2, 3, 4.... 题目说的很模糊。易错的地方:1. 如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4.2. 计算比例时应该用double(可以用double保存国家的金牌原创 2015-02-03 20:57:35 · 1514 阅读 · 0 评论 -
九度 题目1006:ZOJ问题
学过了计算理论,回头看这题是更得心应手了很多。记'z'前o的个数为a, 'z'和'j'之间o的个数为b, 'j'之后的o的个数为c.分析文法可以发现,符合文法的字符串将满足:1. b != 02. a * b = c代码:#include #include using namespace std;int main(){ string str; wh原创 2015-02-03 13:44:53 · 1361 阅读 · 0 评论 -
九度 题目1005:Graduate Admission
和PAT 1080. Graduate Admission (平行志愿模拟题)是一样的:学生总分高的排名在前;总分相同,GE得分高的排名在前;GE相同,则排名相同。不同的是,在九度中“Each input file may contain more than one test case.”所以借用PAT 1080中的代码,在main中加入循环,在循环开始调用init()函数初始化变量。原创 2015-02-03 12:33:52 · 958 阅读 · 0 评论 -
九度 题目1004:Median
利用给定的s1, s2是递增序列的性质,进行如归并排序(Merge Sort)中的遍历方法,找到第(n+m+1)/2个数即可。代码:#include #include using namespace std;int main(){ int n, m, num; while (cin >> n) { vector s1, s2; for (int i =原创 2015-02-03 11:48:53 · 814 阅读 · 0 评论 -
九度 题目1003:A+B
代码:#include #include #include using namespace std;inline int string_to_int(const string& str){ int ret; stringstream ss; ss << str; ss >> ret; return ret;}inline string input_filter(c原创 2015-02-02 11:18:41 · 862 阅读 · 0 评论 -
九度 题目1002:Grading
模拟题。代码:#include #include #include using namespace std;int main(){ float p, t, g1, g2, g3, gj; while (cin >> p >> t >> g1 >> g2 >> g3 >> gj) { if (abs(g1-g2) <= t) { printf("%.1f\n"原创 2015-02-02 11:16:54 · 795 阅读 · 0 评论 -
九度 题目1001:A+B for Matrices
注意到,是先输入行数(m), 再输入列数(n), 当m为0时终止程序代码:#include using namespace std;int a[10][10];int c[10][10];int n, m;int main(){ while (cin >> m >> n, n && m) { for (int i = 0; i < m; ++ i) {原创 2015-01-28 12:05:28 · 766 阅读 · 0 评论 -
九度 题目1000:计算a+b
代码:#include using namespace std;int main(){ int a, b; while (cin >> a >> b) { cout << a + b << endl; } return 0;}原创 2015-01-28 11:32:06 · 1665 阅读 · 0 评论