A. On and Off
题目描述
二十四小时进制下,在 S S S时 0 0 0分开灯,在 T T T时 0 0 0分关灯,问 X X X时 30 30 30分是否灯亮?
分析
两种情况
- S ≤ T : S\le T: S≤T: 那么 X X X一定要在区间 [ S , T ) [S,T) [S,T)中
- S > T : S>T: S>T:跨过了 24 24 24点,那么 X X X要 ≥ S \ge S ≥S或者 < T <T <T
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
int S,T,X;
cin>>S>>T>>X;
bool f;
if (S<=T)f = (X>=S&&X<T);
else f = (X>=S||X<T);
cout<<(f?"Yes\n":"No\n");
}
B. Takahashi’s Secret
题目描述
高桥君有 n n n个好朋友,高桥将秘密告诉好朋友 X X X,然而,每个朋友 i i i如果知道这个秘密,将告诉朋友 A i A_i Ai请问最后一共有几个朋友知道这个秘密?
分析
我们只要模拟信息传递的过程就可以了,类似于 d f s dfs dfs但是可以更为简单的实现
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+100;
int a[maxn],b[maxn];
int n,x;
int main()
{
ios::sync_with_stdio(0);
cin>>n>>x;
for (int i=1;i<=n;++i)cin>>a[i];
int ans = 0;
while (!b[x])
{
b[x]=1;
x = a[x];
++ans;
}cout<<ans<<endl;
}
C.Final Day
题目描述
n n n名考生,已经进行了三门考试。第四门考试满分 300 300 300,对每一名考生,询问他是否有可能总分在前 k k k名内?
分析
很简单,判断第 i i i名考生时,我们认为他考了 300 300 300分,其他人都考了零分,然后看他是否能进前 k k k大
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
k -= 1;
vector<int> p(n);
for (int& x : p) {
int a, b, c;
cin >> a >> b >> c;
x = a + b + c;
}
vector<int> q = p;
sort(begin(q), end(q), greater<>());
for (int x : p) {
cout << (x + 300 >= q[k] ? "Yes" : "No") << '\n';
}
}
D.Linear Probing
题目描述
长度为 n n n的数组 a a a,初始元素都为 − 1 -1 −1
现在要求执行 q q q次操作,操作有两种
- 给出数字 x x