【数据结构入门训练DAY-24】美国大选

文章目录

前言

本次训练内容

  1. 训练STL中sort的操作方法。
  2. 训练解题思维。

一、题目

美国大选是按各州的投票结果来确定最终的结果的,如果得到超过一半的州的支 持就可以当选,而每个州的投票结果又是由该州选民投票产生的,如果某个州超过一半的选民支持希拉里,则她将赢得该州的支持。现在给出每个州的选民人数,请问希拉里至少需要赢得多少选民的支持才能当选?

输入格式

多组输入数据

每组数据的第一行包括一个整数N(1<=N<=101),表示美国的州数,N=0表示输入

结束

接下来一行包括N个正整数,分别表示每个州的选民数,每个州的选民数不超过

100

输出格式

对于每组数据输出一行,表示希拉里至少需要赢得支持的选民数

样例输入

复制代码
3 
5 7 5 
0

样例输出

复制代码
6

二、解题思路

今天的题目就是一个对数组的排序题,题中强调问至少需要多少,我们就给它的选民数从低到高做个排序,然后州数要超过一半且选民数要过一半,所以就N/2+1和Array[i]/2+1;最后再输出值即可。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int MAX = 1e5+1;
int main() {
    int N;
    int Array[MAX];
    while (cin>>N) {//循环输入州数
        int sum=0;
        if (N==0) {//如果州数为0,直接结束
            return 0;
        }
        for(int i=0;i<N;i++) {
            cin>>Array[i];//选民数
        }
        sort(Array,Array+N);//对其升序排序
        for(int i=0;i<N/2+1;i++) {//累加前一半州数里的选票值,找到至少需要的数
            sum+=Array[i]/2+1;
        }
        cout<<sum<<endl;
    }
}

注意,sum=0要写在while里,因为要不断更新赋值。

总结

今天的题目不算难,它就是一个排序和累加的逻辑。美国总统大选也是今年的一个实事热点,当时看新闻的时候就关注过那俩政党的选票,今天看到这题感觉挺有意思的,就想试试乐呵一下,体验一下美国政党的"军师"(嘿嘿嘿嘿)。然后一开始sum=0写在while外了,这里要扣大分,没考虑仔细,下次需要注意;然后就是特判没注意,导致一个案例没过,后续想到了补上才过的;所以考虑事情周到问题还是要不断的提升练习的。

相关推荐
j_xxx404_1 小时前
数据结构:栈和队列力扣算法题
c语言·数据结构·算法·leetcode·链表
南莺莺1 小时前
假设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号,编写一个算法来判别,表达式中的括号是否配对,以字符“\0“作为算术表达式的结束符
c语言·数据结构·算法·
THMAIL1 小时前
深度学习从入门到精通 - 神经网络核心原理:从生物神经元到数学模型蜕变
人工智能·python·深度学习·神经网络·算法·机器学习·逻辑回归
野犬寒鸦1 小时前
力扣hot100:旋转图像(48)(详细图解以及核心思路剖析)
java·数据结构·后端·算法·leetcode
墨染点香2 小时前
LeetCode 刷题【61. 旋转链表】
算法·leetcode·职场和发展
一枝小雨2 小时前
【OJ】C++ vector类OJ题
数据结构·c++·算法·leetcode·oj题
Tisfy2 小时前
LeetCode 3516.找到最近的人:计算绝对值大小
数学·算法·leetcode·题解
自信的小螺丝钉2 小时前
Leetcode 206. 反转链表 迭代/递归
算法·leetcode·链表
黑色的山岗在沉睡3 小时前
LeetCode 189. 轮转数组
java·算法·leetcode
墨染点香3 小时前
LeetCode 刷题【65. 有效数字】
算法·leetcode·职场和发展