对于每组数据,第一行两个数n,表示小朋友总数量(1<=n<=100000)
第二行n个整数,表示小朋友身高,身高不超过30000(我也觉得很吓人)
标签:stat 总数 强迫症 贪心 BMI 贪心算法 研究生 main 差距
对于每组数据,第一行两个数n,表示小朋友总数量(1<=n<=100000)
第二行n个整数,表示小朋友身高,身高不超过30000(我也觉得很吓人)
8 389 207 155 300 299 170 158 65
2
1 #include<iostream> 2 3 using namespace std; 4 /*此题的核心思想是贪心算法,每次都尽量排在队尾小朋友与欲排队小朋友身高差距最小的队伍*/ 5 int studentQue[100005]; 6 int dex[100005]; 7 int main12(){//小朋友呢也很调皮,一旦老师给他排好队就不愿意动了,意思是新来的只能排在 8 //队伍的最后面而不能进行插入队伍 9 int n; 10 while (cin >> n){ 11 int num = 1; 12 for (int i = 1; i <= n; i++){ 13 cin >> studentQue[i]; 14 } 15 dex[1] = studentQue[1]; 16 for (int i = 2; i <= n; i++){ 17 bool flag = true; 18 bool flag1 = true; 19 int min = 30001; 20 int imin = 1; 21 for (int j = 1; j <= num; j++){//找现有队伍里队尾身高最接近的队伍插入 22 int a = dex[j] - studentQue[i]; 23 if (a >= 0 && a<min){ 24 min = a; 25 imin = j; 26 flag1 = false; 27 } 28 29 } 30 if (!flag1){//比第j队的队尾矮就入队 31 //cout<<"dex:"<<dex[imin]<<"stu:"<<studentQue[i]<<endl; 32 dex[imin] = studentQue[i]; 33 flag = false; 34 } 35 //如果没有合适的队伍可以排,就新开一条队伍 36 if (flag){ 37 num++; 38 dex[num] = studentQue[i]; 39 } 40 } 41 cout << num << endl; 42 } 43 return 0; 44 }
1023: 巨人排队(2017年中南大学研究生复试机试题 )
标签:stat 总数 强迫症 贪心 BMI 贪心算法 研究生 main 差距
原文地址:https://www.cnblogs.com/tangyimin/p/10546993.html