![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Noteeee
kirakira_smurf
一些笔记 没什么营养 不必看了。
展开
-
我的笔记之A1152 Google Recruitment
题意找到一串连续数字中最早出现的给定位数的一串质数思路枚举每个k位的子串,转换成整数,判断是否是素数注意点题目里有一个要求(测试点2错误原因)Note: the leading zeroes must also be counted as part of the K digits. For example, to find the 4-digit prime in 200236, 0023 is a solution.即输出一定是k位,有前导0也要输出,因此代码中stoi()转换前用一个变原创 2020-08-29 15:08:08 · 90 阅读 · 0 评论 -
我的笔记之A1153 Decode Registration Card of PAT⭐
题意一串准考证号码包括了考试等级考场序号考试时间考生号以及一个考试分数根据三种不同的要求输出不同的内容查询一:给出考试等级,找出该等级的考生,按照成绩降序,准考证升序排序查询二:给出考场号,统计该考场的考生数量和总得分查询三:给出考试日期,查询改日期下所有考场的考试人数,按照人数降序,考场号升序排序思路把所有考生的准考证和分数记录下来1、按照等级查询,枚举选取匹配的学生,然后排序即可2、按照考场查询,枚举选取匹配的学生,然后计数、求和3、按日期查询每个考场人数,用unord原创 2020-08-28 15:06:01 · 82 阅读 · 0 评论 -
我的笔记之A1154 Vertex Coloring
简单题题意相邻两个点不能是相同颜色 给出使用颜色的数量or输出No思路用邻接矩阵存图,遍历所有边,check两点颜色是否相同,在每一次输入颜色的时候就统计颜色数量AC代码#include <iostream>#include <vector>#include <algorithm>#include <map>using namespace std;vector<int> g[10005];map<long int.原创 2020-08-27 17:00:43 · 107 阅读 · 0 评论 -
我的笔记之A1155 Heap Paths (30分)
(一次即AC)题意给出一个堆,打印出从堆顶到叶子的每条路径(右侧路径优先),并最终判断是否为堆,若是还要判断是大根堆还是小根堆思路完全二叉树储存堆,2n为左儿子,2n+1为右儿子,dfs遍历这个堆即可,先dfs (2n+1),一边遍历一边比较当前节点和上一节点的大小,以及用一个数组存储路径,遍历到叶子时打印该路径AC代码#include <iostream>#include <vector>using namespace std;int tree[1005];.原创 2020-08-24 15:00:59 · 76 阅读 · 0 评论 -
我的笔记之A1018 Public Bike Management⭐
题意每个自行车车站的最大容量为一个偶数cmax,如果一个车站里面自行车的数量恰好为cmax / 2,那么称处于完美状态。如果一个车站容量是满的或者空的,控制中心(处于结点0处)就会携带或者从路上收集一定数量的自行车前往该车站,一路上会让所有的车站沿途都达到完美。现在给出cmax,车站的数量n,问题车站sp,m条边,还有距离,求最短路径。如果最短路径有多个,求能带的最少的自行车数目的那条。如果还是有很多条不同的路,那么就找一个从车站带回的自行车数目最少的(带回的时候是不调整的)思路Dijkstra +原创 2020-08-21 14:47:20 · 117 阅读 · 0 评论 -
我的笔记之A1017 Queueing at Bank⭐(priority_queue)
题意有n个客户,k个窗口。已知每个客户的到达时间和需要的时长,如果有窗口就依次过去,如果没有窗口就在黄线外等候(黄线外只有一个队伍,先来先服务),求客户的平均等待时长。银行开放时间为8点到17点,再8点之前不开门,8点之前来的人都要等待,在17点后来的人不被服务。思路用一个结构体存储客户的到达时间和办理业务时间~首先把所有hh:mm:ss格式的时间全化成以当天0点为基准的秒数。注意晚于17:00的客户不算在内~既然客户是排队的,那么排序后对于每个客户都是同样的处理方式~使用一个优先队列维护窗口办理完业原创 2020-08-20 20:18:26 · 99 阅读 · 0 评论 -
我的笔记之A1016 Phone Bills (25分)⭐
题意每个小时打电话所需费用都不相同,给出若干客户的若干记录,每一条是开始打电话或挂断电话的时间,输出每个客户每次打电话的时长和开销以及所有电话记录的总开销思路总结一下别人代码的思路:巧妙使用 sort()函数,就可以让相同名字的顾客记录凑到一起并且按时间先后排列,然后再遍历这堆顾客记录把合法的再挑出来即可使用map<string,vector<node> >来存合法记录,这样就可以对每个顾客的记录进行依次遍历关于cost的计算,巧妙使用两个时间点的从零开始的价格相减来计原创 2020-08-17 17:36:14 · 70 阅读 · 0 评论 -
我的笔记之A1015 Reversible Primes (20分)⭐
题意如果一个数本身是素数,而且在d进制下反转后的数在十进制下也是素数,就输出Yes,否则就输出No思路判断输入是否为负数,判断n是否为素数,把n转换为d进制再反过来转换为10进制,判断是否为素数别人的AC代码#include<iostream>#include <math.h>using namespace std;bool IsPrime(int n){ if(n<2) return false; double sqr = sqrt(1.0*原创 2020-08-15 15:33:52 · 79 阅读 · 0 评论 -
我的笔记之A1014 Waiting in Line⭐
题意:银行排队办理业务,银行有N个窗口,每个窗口前排有队伍每条队伍人数给出限制M人,即题中描述黄线,黄线前是队伍,黄线后是还未决定排那条队的客人所有顾客都是在08:00同时到达银行准备办理业务要求求出顾客结束办理业务的时间题中有一个陷阱,即判断“Sorry”的顾客是17:00前还没有开始接受服务的客人,只要客人17:00前开始了办理业务,业务就可以办理完。这一点理解错的话,测试点2,4,5过不去解题思路黄线内的顾客容量,即M×N,是到了即可以进去排队的,所以可以直接原创 2020-05-26 00:05:00 · 113 阅读 · 0 评论 -
我的笔记之A1013 Battle Over Cities (25分)
本题第一写即AC题意给出一个图,给若干次询问,每次询问提供一个城市序号,输出与该城市相连的道路全都断掉之后,剩下的点全部联通需要增加的道路数量思路邻接表建图,在不计入被删点所连道路的基础上DFS遍历这个图计算连通分量,连通分量数-1即为需要增加的道路数目。注意点DFS时注意标记visit为true的不要再dfsAC代码#include<iostream>#include<vector>#include <algorithm>using names.原创 2020-08-10 15:51:47 · 80 阅读 · 0 评论 -
我的笔记之1012 The Best Rank (25分)
该题第一次写就AC题意每个学生有三门成绩以及一个成绩的平均分,对每个查询给出这名学生获得最高名次的科目及排名思路由于科目少只有固定数目的4个,以及查询次数多最多有2k次。所以输入所有学生信息后,查询前先排四次序,把每名学生每个科目的的名次存在学生结构体中。然后每次查询遍历每个学生的长度为4的排名数组即可。注意点对四门科目的排序是重复动作,所以用了一个for循环使用sort()进行排序,通过一个全局变量i来实现。AC代码#include<iostream>#include &.原创 2020-08-10 15:16:55 · 90 阅读 · 0 评论 -
我的笔记之A1011 World Cup Betting (20分)
第一次就AC了思路按题意模拟过程即可AC代码#include <iostream>using namespace std;char odd[3] = {'W','T','L'};int main(){ int maxindex=-1; double tmp,max=-1; double product=1; for(int i=0;i<3;i++){ max=-1,maxindex=-1; for(int.原创 2020-08-08 16:26:15 · 83 阅读 · 0 评论 -
我的笔记之A1010 Radix⭐
题意给出两个数和其中一个数的进制,若另一个数存在一个进制使得其根据进制转换之后等于第一个数,则输出进制,否则输出Impossible初始思路进制从2~36遍历,到转换后的数已经大于了第一个数之后还找不到相等情况则Impossible第一次提交#include <iostream>#include <math.h>using namespace std;long long trans(string s,int radix){ long long ans=0;原创 2020-08-07 17:26:55 · 170 阅读 · 0 评论 -
我的笔记之A1009 Product of Polynomials
题意按照格式输出两个多项式相乘的积思路用两个数组存两个式子,数组下标为次数,二重循环遍历两个数组ans[i+j]+=seq1[i]+seq2[j]特别注意这里是+=不是=,可能会有多项相乘后指数相同AC代码#include <iostream>using namespace std;double seq1[1005],seq2[1005],ans[2005];int main(){ int n,m; int exp; double coe;原创 2020-08-07 15:34:03 · 84 阅读 · 0 评论 -
我的笔记之A1008 Elevator (20分)
题意根据给出的电梯停靠序列计算总时间思路简单模拟过程第一次提交#include <iostream>#include <vector>using namespace std;int main(){ int n; int total=0,last=0; scanf("%d",&n); vector<int> list(n); for(int i=0;i<n;i++) scanf("%d"原创 2020-08-07 15:16:43 · 120 阅读 · 0 评论 -
我的笔记之A1005 Spell It Right
这题第一次提交即AC题意不给输入个数地输入若干个数字,求出这堆数字相加的和并将和一个一个数字按英文输出出来思路按字符串输入,转为整数相加,再按字符串输出AC代码#include <iostream>using namespace std;string number[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};int main(){ string inp.原创 2020-08-06 15:45:15 · 82 阅读 · 0 评论 -
我的笔记之A1006 Sign In and Sign Out
这题第一次提交即AC题意给若干个包含ID、进入时间和离开时间的记录,找出最早进入的ID和最晚离开的ID思路结构体排序两次即可AC代码#include <iostream>#include <vector>#include <algorithm>using namespace std;struct person{ string id; int enter,leave;};bool cmp1(person a,person b).原创 2020-08-06 15:42:44 · 87 阅读 · 0 评论 -
我的笔记之A1007 Maximum Subsequence Sum
这题第一次提交即AC题意输出最大连续子序列和及其开头元素和结尾元素思路动态规划 or 贪心?begin[]保存presum这个元素的当前最大子序列的开头元素序号presum[]保存包括当前元素在内的之前所有元素的最大和,对每一个元素,若加上前一个元素的presum能比自己当前大,就加上,并且更改自身的begin为前一个元素的begin;否则presum等于自身,begin等于自身序号AC代码#include <iostream>using namespace std;i.原创 2020-08-06 15:40:43 · 85 阅读 · 0 评论 -
我的笔记之A1003 Emergency
我的思路很明显很套路的Dijkstra+DFSAC代码+AC前代码中存在的问题#include <iostream>#include <algorithm>#include <vector>using namespace std;const int inf = 999999999;int weight[505]={0};int dis[505];int e[505][505];bool visit[505]={false};vector<i原创 2020-08-05 16:50:58 · 90 阅读 · 0 评论 -
我的笔记之A1002 A+B for Polynomials(25‘)
我的思路用一个数组把每一次的输入加到指数对应的每一项中,一个数组即可第一次提交#include <iostream>using namespace std;double ans[1005]={0};int cnt=0;bool book[1005]={false};int main(){ int n,m; int exp; double coe; scanf("%d",&n); for(int i=0;i<n;i++){原创 2020-08-05 16:04:47 · 68 阅读 · 0 评论 -
我的笔记之A1001 A+B Format
Sample Input-1000000 9Sample Output-999,991第一次提交:错在逗号理解是从左到右三个一组,就很蠢,完全不符合实际11998会被输出成119,98,这也太睿智了…明明就应该是从右往左三个一组,即11,998...原创 2020-08-04 16:32:06 · 63 阅读 · 0 评论 -
我的笔记之A1004 Counting Leaves
题意:数一棵树中每一层叶子节点的个数分析:做法很简单,dfs即可.但我第一次写完一个测试点都没过去,错误原因也很离谱…上代码:int main(){ int n,m,id,node,num; if(n==0) return 0; scanf("%d %d",&n,&m); for(int i=0;i<m;i++){ scanf("%d %d",&node,&num); for(int j.原创 2020-08-01 17:29:33 · 64 阅读 · 0 评论