天梯
PDYJ
这个作者很懒,什么都没留下…
展开
-
|打表,vis[依赖的孩子、map<int,int>]|L2-029 特立独行的幸福 (25 分)
https://blog.csdn.net/weixin_43819762/article/details/109989880?utm_medium=distribute.pc_relevant.none-task-blog-title-15&spm=1001.2101.3001.4242https://www.icode9.com/content-4-153071.html原创 2020-11-25 11:24:50 · 151 阅读 · 0 评论 -
|结构体数组sort排序,rank名次|L2-027 名人堂与代金券 (25分)
referlink//总评分在 [G, 100] 区间内者,可以得到 50 元 PAT 代金券;//在 [60, G) 区间内者,可以得到 20 元PAT代金券。//同时任课老师还会把总评成绩前 K 名的学生列入课程“名人堂”//本题就请你编写程序,帮助老师列出名人堂的学生,//并统计一共发出了面值多少元的 PAT 代金券。//第一行给出 3 个整数://N(不超过 10 000 的正整数,为学生总数)、//G(在 (60,100) 区间内的整数,为题面中描述的代金券等级分界线)、/原创 2020-11-23 11:26:22 · 1096 阅读 · 10 评论 -
|set去重_迭代器遍历set_find_%.2f保留2位小数输出double|L2-005 集合相似度 (25分)
referlink看不懂题目,但是集合相似性应该就是求2个集合内相同的元素个数/2个元素总的元素个数当然,在为这2个集合添加元素的时候和合并这2个集合的时候,要去重//给定两个整数集合,它们的相似度定义为:Nc/ Nt×100 % 。//其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。//你的任务就是计算任意一对给定集合的相似度。//N(≤50),是集合的个数//随后N行,每行对应一个集合。 //每个集合首先给出一个正整数M(≤10^4 ),原创 2020-11-23 10:25:02 · 91 阅读 · 0 评论 -
|大数运算_竖式除法|L1-046 整除光棍 (20分)
linkrefer#include <string>#include <iostream>using namespace std;int main() { int x; cin >> x; int num=0,cnt=0;//光棍数,位数 while (x > num) {//得到第一个大于或等于x的光棍数 num = num * 10 + 1; cnt++; } whi原创 2020-11-23 09:08:28 · 796 阅读 · 0 评论 -
|Dijkstra+点权+打印路径|L2-001 紧急救援 (25分)
//每个城市的救援队数量(点权)//和每一条连接两个城市的快速道路长度(边权)都标在地图上。//其他城市有紧急求助电话给你的时候,//你的任务是带领你的救援队尽快赶往事发地,//同时,一路上召集尽可能多的救援队。-----------点权和//NMSD//是城市的个数,顺便假设城市的编号为0 ~ (N−1)//是快速道路的条数//出发地的城市编号//目的地的城市编号//N个整数//其中第i个数是第i个城市的救援队的数目----点权//M行//城市1、城市2、快速道路的长度--原创 2020-11-22 11:48:12 · 116 阅读 · 0 评论 -
|暴力,枚举一个对称字串的2个端点|L2-008 最长对称子串 (25分)
linkrefer只要你向我走一步,我就会用尽全力奔向你只有外围的2个端点下标的元素相等,才能缩小左右的范围,判断内部对称的元素是否相等//枚举一个对称子串的两个端点。#include <iostream>#include <string>using namespace std;int main() { string s; getline(cin, s); int ans = 1; for (int i = 0; i < s.length();原创 2020-11-22 11:19:24 · 96 阅读 · 0 评论 -
|3个for|L1-048 矩阵A乘以B (15分)
link2 31 2 34 5 63 47 8 9 0-1 -2 -3 -45 6 7 8////////////////2 420 22 24 1653 58 63 28矩阵A和矩阵B相乘可以看作先是矩阵A的第一行(ra)与矩阵B的每列(cb)相乘又可以细化为 矩阵A的第一行的每列元素和 矩阵B的每列元素的每行元素相乘所以==》行A控制C的行数列B控制每行相乘多少次列A,也就是行B控制具体谁和谁相乘3个for//13分#include <iostr原创 2020-11-22 10:50:57 · 115 阅读 · 0 评论 -
|正整数判断、string的find函数_字符串的截取、flag2、stoi|L1-025 正整数A+B (15分)
linkrefer如何判断输入的字符是正整数?先吸收一行整数字符串,一个个去遍历,如果每个元素都是数字字符,则是正整数;如果有范围限制,就stoi()化作整数去判断flag1、flag2一重筛选二重筛选三重筛选 一般先定义积极,出现不符合消极-100 blabla bla…33无用字符串也要吸收cin>>a>>b;就吸收了-100,blablastring的find函数:给出要查找的字符,返回下标–那个ong题也可以用,不用自己造轮子了#include <原创 2020-11-22 09:23:19 · 93 阅读 · 0 评论 -
|整行的字符串吸收、访问标志元素、flag、break、substr(begin,len)|L1-059 敲笨钟 (20分)
linkrefer先把整行的字符串吸收了,再去一个个访问元素,进行判断,注意访问标志性元素,作为分界点getchar();while (n–) {getline(cin, str1);while (n--) { str1 = ""; flag = true;//符合 getline(cin, str1); for (int i = 0; i < str1.length(); i++) { if (str1[i] == ',') { if (str1.substr(原创 2020-11-21 21:20:17 · 101 阅读 · 0 评论 -
|map<string, int>m; map<int, string>mm;guess[N] = { 0 };abs(guess[i] - ave_sum) < M|L1-056 猜数字 (20分)
linkm[名字,编号]mm[编号,名字]guess[编号]=猜的数字abs(guess[i] - ave_sum) < MINn#include <iostream>#include <map>using namespace std;const int N = 10010;map<string, int>m;map<int, string>mm;int sum = 0;int guess[N] = { 0 };int m原创 2020-11-21 20:27:13 · 117 阅读 · 0 评论 -
| str.append(“ “)、str.substr(index-n+1, n)、G[j][i] = tmp[j]字符串吸收、行列改变fori_forj换范围、|L1-039 古风排版 (20分)
多调试,多改改,就出来了每列N个字符(除了最后一列可能不足N个)4This is a test case–字符串吸收getline(cin,str),前面要getchar()//This is a test case//This// is //a te//st c//ase #include <iostream>#include <string>using namespace std;const int N = 1010;char G[N][N];.原创 2020-11-21 19:41:22 · 140 阅读 · 0 评论 -
|无用字符也要吸收、set<int>s[N]_find、flag、vis[N]、cnt、%05d|L1-020 帅到没朋友 (20分)
linkrefer同一个人可以被查询多次,但只输出一次。没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。//总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。//没有朋友的人可以是根本没安装“朋友圈”,//也可以是只有自己一个人在朋友圈的人。//虽然有个别自恋狂会自己把自己反复加进朋友圈,//但题目保证所有K超过1的朋友圈里都至少有2个不同的人。//N<=100,是已知朋友圈的个数;//随后N行,//K(朋友圈人数) id1,原创 2020-11-21 18:35:07 · 154 阅读 · 0 评论 -
|分数计算|L1-009 N个数求和 (20 分)
linkrefer#include <iostream>#include <algorithm>using namespace std;struct Node { int x; int y;}node[1010];int gcd(int a, int b) { if (b == 0)return a; return gcd(b, a % b);}int main() { int n,sum_x=0,sum_y=1; cin >> n;原创 2020-11-20 21:05:30 · 107 阅读 · 0 评论 -
|getline(cin, str1);字符串吸收;//找到了s.find(str1[i]) != s.end()|L1-011 A-B (20分)
#include <string>#include <cstring>#include <iostream>#include <set>#include <vector>using namespace std;set<char>s;vector<char>v;int main() { string str1; getline(cin, str1); //cout << str1 <&原创 2020-11-20 20:11:52 · 300 阅读 · 0 评论 -
|求素数中sqrt()的原理 连续因子fori if for j----maxL--maxi--l|L1-006 连续因子 (20分)
r判断素数用sqrt?我们假设一个数a;那么a=(a ^ 1/2)*(a ^ 1/2);如果a不是素数;那么a有一个因子b,使得 a=b * c;那么a的因子中(b或c)必定有一个是小于等于a ^ 1/2的;所以判断的时候不用判断到1-a,只需要1-a^1/2; 明白了吧?//输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。//N为素数时,最长连续因子的个数为1,即它自己。//N不为素数时,即N为合数时,暴力模拟即可, //将连续的数进行累积,直到累积后的结果不原创 2020-11-20 20:09:09 · 351 阅读 · 0 评论 -
L1-002 打印沙漏 (20分)
///16#include <iostream>#include <cmath>using namespace std;int sum;char sign;int main() { cin >> sum >> sign; int row_above = sqrt((sum + 1) / 2); //if (2 * row_above * row_above - 1 == sum) {//刚好用完 int cnt = 0; for (i.原创 2020-11-20 17:16:38 · 55 阅读 · 0 评论 -
|26进制转换_字符数组v|PTAL1-050 倒数第N个字符串 (15分)
linkr1r2//26进制转换#include <iostream>#include <vector>#include <cmath>using namespace std;int l, n;vector<int>v;int main() { cin >> l >> n; int NO = pow(26, l) - n; while (l != 0) { int k = NO % 26; v.原创 2020-11-20 09:08:14 · 128 阅读 · 0 评论 -
1051 Pop Sequence (25分)模拟入栈出栈
模拟入栈出栈原创 2020-11-17 13:29:59 · 144 阅读 · 0 评论 -
|sex[]_sum[],G_ans|L2-028 秀恩爱分得快
r//模拟/*10 44 -1 2 -3 44 2 -3 -5 -63 2 4 -53 -6 0 2-3 2*/#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;const int N = 10010;int n, m;vector<int>G[N];int sex[N]原创 2020-11-17 08:41:27 · 7266 阅读 · 0 评论 -
|getline(cin,str)吸收带有空格字符串,标记符合条件,elseif|1081 检查密码 (15分)
//吸收一行字符串(也吸收前置空格,中间的空格更不用说了) int n; cin >> n; getchar();//吸收cin>>不能吸收的换行 getline(cin, str);//不然getline(cin,str)会吸收换行//字符串个数str.length() < 6//标记的使用//如何判断 是否符合某个条件 有一个满足就一个对应的flag=1,都不满足就是非法了//某个元素//if(条件1)//else if(条件2)//else i原创 2020-11-15 20:54:32 · 176 阅读 · 0 评论 -
2020天梯模拟题解
谷歌的招聘检查密码阅览室秀恩爱分得快link秀恩爱分得快直捣黄龙抢红包天梯题目link从15号开始有意识地复习,有意识得分类5/10/15/20/25/30的题目的知识点和分类,了解难度和常考的点。...原创 2020-11-15 19:08:01 · 233 阅读 · 0 评论 -
Dijkstra多重筛选条件模板(点权具体分析_边权_条数_多条==<>_结构体排序)
|Dijkstra + 多重条件判断(点权)+map映射+dfs打印路径|L3-011 直捣黄龙1030 Travel Plan (30分)//求:起点到终点的最短路径,最短距离,以及花费//如果有多条最短路径,则选择花费最小的那条1003 Emergency (25分)现在给出起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的----------点权和L3-005 垃圾箱分布 (30分)//最短距离最长//输出到所有居民点原创 2020-11-14 09:16:34 · 224 阅读 · 0 评论 -
|Dijkstra + 多重条件判断(点权)+map映射+dfs打印路径|L3-011 直捣黄龙
refer题意:找到己方大本营到敌方大本营的一条最短路径,当这样的路径有多条时选择解放最多城镇的路径 (就是经过的城市越多越好),当这样的路径也有多条时选择杀敌数最多的路。方法:Dijkstra (模板)+ 多重条件判断。数据处理:用map容器对表示城市的字符串做数据映射,使得城市可以用0到N-1表示,方便建立邻接矩阵,然后套上最短路径模板 + 三个条件判断。题目要求求己方大本营PAT到达敌方大本营DBY的最短路径且满足3个条件。根据图中可知,最短路径为30,且这样的路径有3条:(第原创 2020-11-14 08:10:35 · 410 阅读 · 0 评论 -
7-4 判断素数 (10分)
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数a.1—不是素数b.不能被整除c.整除了就跳出来d.跳出来要判断一下因为什么跳出来1.被整除–是素数2.遍历完了,都没被整除–不是素数#include <iostream>#include <cstdio>#include <cmath>using namespace std;bool isP(int n){ int i; if(n==1)re.原创 2020-11-08 12:24:03 · 998 阅读 · 0 评论 -
L2-030 冰岛人 (25分)
linkrefer原创 2020-11-05 21:25:39 · 103 阅读 · 0 评论 -
|dfs树静态写法 求最大深度及其节点|L2-026 小字辈 (25分)
link应该知道这道题求得是树的深度,同时记录深度最大时的孩子。用深搜即可。//输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) //我们把家族成员从 1 到 N 编号。//随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父 / 母。 //家谱中辈分最高的老祖宗对应的父/母编号为 -1。//9//2 6 5 5 -1 5 6 4 7//首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。//然后在第二行按递增顺序输出辈分最小的成员的编号。编号原创 2020-11-05 14:30:54 · 170 阅读 · 0 评论 -
|二叉树静态写法、结构体、vis、dfs访问指定层数的节点|L2-016 愿天下有情人都是失散多年的兄妹(25 分)
linkreference#include <iostream>#include <cstdio>#include <vector>#include <cstring>using namespace std;const int N = 100010;struct Node { int id; char sex;}node[N];vector<int>G[N];//存储关系图int vis[N];int flag;原创 2020-11-04 20:42:38 · 126 阅读 · 0 评论 -
|树的静态写法、寻找树的根节点、dfs寻找最深的叶子节点|L2-031 深入虎穴 (25)
搞不明白dfs的终止条件?//输入首先在一行中给出正整数 N( < 105),是门的数量。//最后 N 行,第 i 行(1≤i≤N)按以下格式描述编号为 i 的那扇门背后能通向的门//K D[1] D[2] ... D[K]/*133 2 3 42 5 61 71 81 902 11 101 13001 1200*///--------------//在一行中输出距离入口最远的那扇门的编号。//12//1.查找入口//又没被当作儿子//2.通过原创 2020-11-04 14:22:56 · 401 阅读 · 0 评论 -
|图dfs遍历 连通块|L2-013 红色警报 (25 分)
//上次,我们用并查集做的红色警报//这次,我们用dfs来遍历图(邻接表),计算连通块# include <iostream># include <cmath># include <cstring># include <string># include <map># include <algorithm># include <vector># include <cstdio># includ原创 2020-11-02 16:46:20 · 183 阅读 · 0 评论 -
|无向图相邻结点的分析|L2-025 分而治之&L2-013 红色警报 (25 分)的dfs解法
给定一个无向图,给定一些被占领的点,要你判断最后这个图中所有的点是不是都被孤立。这个问题实际上可以转化,我们将被占领的点标记上,tag[i] =1。然后遍历所有未被占领的结点,只要这个未被占领的结点周围的相邻结点全部都是被占领的,那么它就是孤立无援的点。(反面是 存在至少一个没被占领的相邻节点,那么该城市不孤立)算法两重循环可以搞定,用vector< int > G[maxn]邻接表存储图的关系,效率比二维数组高,而且本题数据量10000较大,用二维数组查找起来也不方.原创 2020-11-02 15:26:19 · 214 阅读 · 0 评论 -
|邻接表 每个顶点仅仅遍历相邻的边、而不是遍历整张图|L2-023 图着色问题 (25分)
本题实际上就是判断每一个点和周围点的颜色是否有一样的,所以用邻接链表存储一下,然后遍历即可1234/*6 8 32 11 34 62 52 45 45 63 641 2 3 3 1 24 5 6 6 4 51 2 3 4 5 62 3 4 2 3 4*//*#include <iostream>#include <cstdio>#include <vector>#include <set>#include原创 2020-11-02 11:23:49 · 249 阅读 · 0 评论 -
|并查集,e[][]=1二维数组表示关系|L2-010 排座位 (25分)
link这道题让我莫名想到了红色警报,RA那道题使用struct Road{int a,b}road[10010]来存储道路的两端,也就是相邻的2个城市可能都是要存储2个节点的关系1.二维数组—友好/敌对2.结构体–某个下标的结构体的a对应的b存在–某种关系(题目给出)//结构体,这题不行啊 //因为结构体的话,你要遍历关系,那不是顺序输出很多没用的信息?//如果是数组,就一一精准的找到了对应的关系//给定任意一对客人,判断是否能被安排同席 //两个人不是死对头//输入//原创 2020-10-28 10:20:55 · 148 阅读 · 0 评论 -
|并查集,编号未知|L2-024 部落 (25 分)
注意编号啊可能很大,没有规定不知道为什么 set不起作用//朋友的朋友在一个部落里//在一个给定的社区,有几个互不相交的部落?//并且检查任意2个人是否属于同一个部落?//4-----------第一行给出 小圈子的个数n//随后n行,按以下格式给出一个小圈子里的人//k p[1] p[2]...p[k] //k是小圈子的人数 //p[i]是小圈子每个人的编号,每个人的编号从1开始 //3 10 1 2 //2 3 4 //4 1 5 7 8 //3 9 6 4//2---原创 2020-10-27 11:30:01 · 125 阅读 · 1 评论 -
|每删一个节点计算块数,判断连通性|L2-013 红色警报 (25 分)
天梯 并查集link【解题思路】每一次都要重新判断一下需要连接的道路变化有无影响有影响的情况比较难找,那就直接先判断没有影响的情况就是等于前集合数目等于现集合数目或原集合数目+1等于现集合数目(因为题意,若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报)这样即使去掉当前结点也无碍如果连通块数组不变或者减1(原来就是孤立得一个),说明图连通块数目不受影响如果连通块数目增加了1,则说明连通块加1,图中连通性受到影响//输入//第一行 n,m原创 2020-10-26 17:34:29 · 380 阅读 · 0 评论 -
|char[][]--string--true--out2|7-8 查验身份证 (15分)
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。//7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17#include <iostream>#include <cstdio>#include <vector>.原创 2020-10-08 10:58:21 · 90 阅读 · 0 评论 -
|20挑战4|CityGDP
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;struct City{ string name; double sum; double third_proportion;}city[1010];bool cmp1(City a,City b){ return a.sum>b.sum;}bool cmp2(Cit.原创 2020-10-07 19:24:24 · 65 阅读 · 0 评论 -
|20挑战3|3v
//10//11 12 13 24 25 26 37 38 39 40//11 24 37//12 25 38//13 26 39#include <iostream>#include <cstdio>#include <vector>using namespace std;vector<int> a;vector<int> b;vector<int> c;int main(){ int n; .原创 2020-10-07 19:09:17 · 73 阅读 · 0 评论 -
|20挑战2|十进制转十六进制
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,`//426//#include <iostream>#include <vector>using namespace std;char c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E'}; vector<char>v;in.原创 2020-10-07 19:01:11 · 149 阅读 · 0 评论 -
|不会dfs剪枝|团体天梯 L3-015 球队“食物链” (30 分)
团体天梯 L3-015 球队“食物链” (30 分)https://blog.csdn.net/qq_40946921/article/details/87939254?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBa原创 2020-10-07 10:23:07 · 93 阅读 · 0 评论 -
|set结构体排序|L2-1 点赞狂魔 (25分)
本来想用map<string,int>来存储名字和不同标签的数量,后来考虑到要排序,还是结构体简单,所以用了结构体和set。这25分比5分的还简单题目主要是求不同标签的数目,而set的最大特点就是只存储出现过的元素,不记录出现次数,很适合做这道题。唉,但是题目中的一句话困扰我好久:如果有并列,则输出标签出现次数平均值最小的那个,题目保证这样的用户没有并列。“标签出现次数平均值最小”这一下子给我整的懵懵的,一直搞不懂这是个什么东西,一开始我以为是所有标签的平均值,但是这样的话都不过样例。看了人原创 2020-10-06 20:36:41 · 160 阅读 · 0 评论