1 solutions
-
1
这个题考察的点主要是递归,天梯赛经常出现类似的题目(有没有觉得这个题目很“天梯”呢,就连输出的风格也挺像天梯赛的,主要是出题的时候刚刚打完天梯赛~)。 当给出的学生并不是题目中所定义的大卷王时,就需要一层一层的去搜索,直到寻找到大卷王为止。由于这个题的数据范围较小(为了降低难度)可以不使用并查集的方法来完成这个题目。如果数据范围较大的话,就需要每一次进行一次集合的合并,来减少搜索的时间。 至于题目的背景是根据一些极端的例子改编的,当然有些夸张,是不是感觉真的很“卷”。还好,通过的人数比去年招新赛卷王那道题多多了~
附代码:
#include<stdio.h> int pov[10010]; int find(int x) //不断的递归搜索,直到找到卷的源头为止 { if (pov[x]==0) { return x; } return find(pov[x]); } int main() { int n,i; for (i=0;i<10001;i++)//预处理每个同学的信息 { pov[i]=-2; } scanf("%d",&n); for (i=0;i<n;i++)//录入每个同学的信息 { int s,t; scanf("%d %d",&s,&t); pov[s]=t; } int k; scanf("%d",&k); for (i=0;i<k;i++) { int s; scanf("%d",&s); if (pov[s]==-1)//判断,如果是-1输出“躺平” { printf("%d zai tang ping\n",s); } else if(pov[s]==0)//如果是0,则表明该同学就是卷的源头,输出“是大卷王” { printf("%d shi da juan wang\n",s); } else //如果不是上述的特殊情况,则就要递归查找卷的源头 { int Z; Z=find(s); printf("%d bei %d dai juan le\n",s,Z); } } return 0; }
Information
- ID
- 6511
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 130
- Accepted
- 24
- Uploaded By