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;}
}