AtcoderABC231场

A - Water PressureA - Water Pressure

AtcoderABC231场_第1张图片AtcoderABC231场_第2张图片

题目大意

假设水压仅取决于深度,在深度为x米时,水压为x/100兆帕斯卡。
现在给定一个深度D米,需要计算在该深度下的水压是多少兆帕斯卡。

思路分析

直接将输入的深度除以100得到水压结果。

时间复杂度

O(1)

AC代码

#include 
using namespace std;
int main() {
    double D; 
    cin >> D;
    double pressure = D / 100; 
    cout << pressure <<endl; 
    return 0;
}

B - ElectionB - Election

AtcoderABC231场_第3张图片AtcoderABC231场_第4张图片

题目大意

正在进行一次选举。共有N人投票。第i个人(1≤i≤N)将他的一票投给了候选人Si.
要找出得到最多选票的候选人的姓名。输入保证只有一个候选人获得最多选票。

思路分析

使用哈希表(unordered_map)来存储每个候选人的票数,然后遍历哈希表找到获得最多选票的候选人。

时间复杂度

O(N+M)

AC代码

#include
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 /

AtcoderABC231场_第5张图片AtcoderABC231场_第6张图片

题目大意

有一个班级,有N个学生。第i个学生(1 ≤ i ≤ N)的身高是Ai。对于每个查询Qj(1≤j≤Q),回答以下问题:
至少有多少个学生的身高不低于xj?

思路分析

先对学生的身高进行排序,然后对于每个查询,使用二分查找来确定至少身高为xj的学生数量。通过计算排序后的数组中不小于xj的元素的位置与数组末尾的距离,即可得到结果。

时间复杂度

O(NlogN + QlogN)

AC代码

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

你可能感兴趣的:(哈希算法,redis,算法)