题意:输入三个数,第一个代表灯开启的时间,第二个代表灯关闭的时间,输入第三个数之后判断在这个时间灯是不是亮着的。
思路:二十四小时制,所以要先进行判断是在哪个时间段,再判断x在不在这个区间当中,符合条件就是yes,否则就是no
#includeusing namespace std; int main() { int s,t,x; cin>>s>>t>>x; if(s B - Takahashi’s Secret 题意:我有N个朋友,我跟X有小秘密,但是X会告诉a[X],a[X],会告诉a[a[X]],问最后一共能有多少个人知道这个秘密。
比如:
4 2
3 1 1 2
2号吧秘密告诉给1号,1号告诉给3号,3号告诉给1号,所以最后有1,2,3三个人知道,所以答案就是3.
思路:定义两个数组,一个是谁告诉谁的数组,一个数组用来记录谁知道了,循环的条件就是告诉下一个人,但是下一个人的标志数组为1,代表已经知道了,循环就结束,最后再遍历标志数组,记录为1的,就代表知道了,最后输出ans;
#includeC - Final Dayusing namespace std; const int N=1e5+5; int main() { int n,x; int vist[N],a[N]; cin>>n>>x; for(int i=1;i<=n;i++) cin>>a[i]; while(vist[x]==0){ vist[x]=1; x=a[x]; } int ans=0; for(int i=1;i<=n;i++){ if(vist[i]==1) ans++; } cout< 题意:有N个学生,每人有四场考试,前三场都考完了,分数已知,问每个学生在第四天考完能不能进入前K名。
思路:就是第四场考试,让判断的那个人考300分,其他人全部都是0分,只需要考虑这种极端的情况就可以,定义两个数组,一个是记录每个人的成绩,另一个用来记录前三场成绩从大到小的结果,当判断第i个人的时候只需要将他的分数加上300与第k-1的分数比就可以了。
大于等于这个分数就是能,否则就是no。
#includeusing namespace std; const int N=1e5+5; int main() { int n,k; int a[N],b[N]; cin>>n>>k; for(int i=0;i >aa>>bb>>c; a[i]=aa+bb+c; b[i]=aa+bb+c; } sort(a,a+n); reverse(a,a+n); for(int i=0;i =a[k-1])cout<<"Yes"< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)