- 博客(9)
- 收藏
- 关注
原创 PAT甲级1157 Anniversary
思路 用两个map存储输出的两部分id,mapp1存储校友的id,mapp2存储出席的id。当输入出席id时,用mapp1.find()函数搜索是否为校友,若是则sum++,并将该id记为1;否则记为0。 重写mapp2的compare函数,根据id的第7-14位从小到大排,即年纪越大的越靠前。 输出sum和排序后mapp2中第一个值为1的id。 代码 #include<iostream> #include<map> #include<string> using name
2022-01-06 14:33:36 465
原创 PAT甲级1017 Queueing at Bank
思路 用map存储客户,因为map可以自动排序,对客户到达时间从小到大排序。输入数据时排除17:00:00后的客户,处理时间>1小时的,设为1小时。 时间以string形式存储,可直接比大小。大的就是晚一些的。 用vector数组存储窗口的空闲时间点,初始时间点都设为"08:00:00"。处理一个客户,就将此时间加上客户处理时间。 从最早到达的客户开始,首先找到最先空闲或已空闲的窗口,将此窗口的时间与客户到达时间做对比,若窗口时间小,说明客户到达时窗口就是空闲的,无需等待;若窗口时间大,说明需等待;
2021-12-14 20:32:57 1002
原创 Pat甲级1056 Mice and Rice
题解:有Np只老鼠,给出他们的重量,以Ng只为一组,找到该组最重的老鼠,该组其余老鼠淘汰,同批次被淘汰老鼠的等级相同。把每一组的最重老鼠集合再次分组。。。直到只有一只老鼠,该老鼠的等级为1。 当最后一组不足Ng只时,仍然分为一组。 输入的第二行即Np只老鼠的重量,该顺序也是老鼠的输出顺序。 老鼠0号重量25,老鼠1号重量18,老鼠2号重量0。。。。 第三行为游戏顺序,即以老鼠6号、老鼠0号、老鼠8号。。。的顺序开始比较。 每组被淘汰的老鼠等级为group + 1;如: 该题中,第一次比较时有11只老鼠,3
2021-12-09 18:48:59 149
原创 PAT乙级1094 谷歌的招聘
注意:前导零需要输出(测试点2) #include<iostream> #include<string> #include<cmath> #include<iomanip> using namespace std; bool isPrime(int a){ if(a == 2 || a == 3 || a == 5 || a == 7)return true; if(a == 1 || a % 2 == 0)return false;
2021-12-02 14:29:43 4534
原创 PAT乙级1060爱丁顿数
思路: 对输入数据从小到大排序,因为是求最大整数,所以对i从n -> 0循环,如果有i天骑车超过i公里,那么有且只能有i个数据大于i,即排序后的第n - i + 1个数( v[n - i] )需大于i。 代码: #include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ int n,i; cin>>n; vec
2021-11-26 18:34:54 108
原创 PAT乙级1005 继续(3n + 1)猜想
思路 用数组a下标i代表输入的数据,a[i]表示当前状态。 a[i]有三个取值,0、1、2,分别代表未输入该数据,输入过且没有被验证过,被验证过。 代码 #include<iostream> using namespace std; int main(){ int n,i,b,k = 0,a[105] = {0}; cin>>n; for(i = 0;i < n; ++ i){ cin>>b;
2021-11-21 10:31:40 3604
原创 C++写CCF CSP 202006-1 线性分类器
思路: numA表示A点的个数,numB表示B点的个数; da表示在给定直线上方的A点个数,xa表示在给定直线下方的A点个数; db表示在给定直线上方的B点个数,xb表示在给定直线下方的B点个数; 若A点全在直线上方,B点全在下方,或者A点全在下方,B点全在上方时,给定直线可完美分割A、B点。即numA == da && numB == xb || numA == xa && numB == db。 代码如下: #include <iostream> using
2020-09-20 18:07:25 136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人