n个人,k种果汁,每个人对应一种果汁,果汁买一送一,统计要买多少瓶
思路:哈希/数组
每次计算第i人喝第j种(j<=k),第j种数目b[j]+1,最后统计1-k对应的数目.
注意的点,种类要-1,1到k种,对应0到k-1
买一送一要向后取值,比如第j种总计三瓶,那么要花钱买2瓶
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
int num, kind;
cin>>num>>kind;
vector<int> a(num,0);//存储第i人喜欢喝哪一种
vector<int> b(kind,0);//存储第i人喜欢喝的种类数目+1
for(int i = 0; i < num; ++i){
int res;
cin>>res;
if(res>kind||res<=0) {
cout<<"输入错误"<<endl;
break;
}
a[i] = res;
b[a[i]-1]++;
}
int sum = 0;
for(int i = 0; i < kind; i++){
if(b[i]>0)
sum += ((b[i]+1)/2);
}
return sum;
}