A - Water PressureA - Water Pressure
题目大意
假设水压仅取决于深度,在深度为x米时,水压为x/100兆帕斯卡。
现在给定一个深度D米,需要计算在该深度下的水压是多少兆帕斯卡。
思路分析
直接将输入的深度除以100得到水压结果。
时间复杂度
O(1)
AC代码
#include <iostream>
using namespace std;
int main() {
double D;
cin >> D;
double pressure = D / 100;
cout << pressure <<endl;
return 0;
}
B - ElectionB - Election
题目大意
正在进行一次选举。共有N人投票。第i个人(1≤i≤N)将他的一票投给了候选人Si.
要找出得到最多选票的候选人的姓名。输入保证只有一个候选人获得最多选票。
思路分析
使用哈希表(unordered_map)来存储每个候选人的票数,然后遍历哈希表找到获得最多选票的候选人。
时间复杂度
O(N+M)
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
unordered_map<string,int>vo;
for(int i=0;i<n;i++)
{
string ca;
cin>>ca;
vo[ca]++;
}
string win;
int ma;
for(auto it:vo)
{if(it.second>ma)
{ma=it.second;
win=it.first;
}
}
cout<<win<<endl;
return 0;
}
C - Counting 2C - Counting 2 /
题目大意
有一个班级,有N个学生。第i个学生(1 ≤ i ≤ N)的身高是Ai。对于每个查询Qj(1≤j≤Q),回答以下问题:
至少有多少个学生的身高不低于xj?
思路分析
先对学生的身高进行排序,然后对于每个查询,使用二分查找来确定至少身高为xj的学生数量。通过计算排序后的数组中不小于xj的元素的位置与数组末尾的距离,即可得到结果。
时间复杂度
O(NlogN + QlogN)
AC代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, q; cin >> n >> q;
vector<int> v(n);
for(int i = 0; i < n; i++) cin >> v[i];
sort(v.begin(),v.end());
for(int i = 0; i < q; i++){
int x; cin >> x;
cout << v.end() - lower_bound(v.begin(), v.end(), x) << endl;
}
}