首页 > 其他分享 >3 return2/14

3 return2/14

时间:2024-02-07 12:44:54浏览次数:22  
标签:cnt num 14 int auto return2 ans

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        if(n == 0) return 0;
        int ans = 0, cnt = 0;
        vector<int> a(n);
        for(auto& num:a){
            cin>>num;
            cnt += num;
        }    
        cnt /= n;
        for(auto num:a){
            if(cnt>num) ans += cnt - num;
        }
        cout<<ans<<endl;
        cout<<endl;
    }
    
    
    return 0;
}

 

auto的使用,主要是两处区别:

  • for(auto& x:a)

    其中x是需要使用的变量,a是对应容器。
    这里需要对a进行改变,所以需要加上 & 这个指针

  • for(auto x:a)

    这里的所需变量不需要进行改变,所以直接写就行

  • vector<int> a(n)

    动态数组,n提前输入,和auto搭配使用效果较好

 

使用auto更为简洁,但是索引速度会变慢

 

标签:cnt,num,14,int,auto,return2,ans
From: https://www.cnblogs.com/Yoloerr/p/18010827

相关文章

  • CF1408F Two Different 题解
    解题思路先考虑如何将一堆数变为相同的。显然,这里有一个条件\(n=2^k,k\in\mathbbZ\),证明如下:每次操作只能将两个数变为相同的,那么一个数在使得其他数变为相同数的操作中(我们不妨将所有数进行这种操作称为一轮操作),一个数最多被使用一次;按照错位操作,即第一轮\(1\)和\(2\)......
  • CF1428D Bouncing Boomerangs 题解
    解题思路很简单的贪心。观察发现以下性质:当\(a_i=2\)时,这一行一定只有两个目标,且第二个目标一定位于一个\(a_j=1\)的格子内;当\(a_i=3\),那么当前列右边某一列发生转向的地方,\(a_j\not=0\);那么这道题就基本已经做出来了。因为\(a_i=3\)的格子转向格可以在任意非\(0\)......
  • CF1401E Divide Square 题解
    解题思路其实多看几组也能发现块数等于交点的数量加上两个端点都在边上的线段数量再加一。证明如下(图见样例):对于两条只有一个端点位于边上的线段,因为保证有一个端点位于边上,那么这两条线段的交点一定会和已存在的点、边构成一个新的矩形;对于其中有一条为两个端点均位于边上的......
  • CF1401F Reverse and Swap 题解
    解题思路巧妙的数据结构题,非常巧妙的利用的线段树的奇妙性质。操作逐条维护:Replace:直接线段树上单点修改;Sum:线段树查询区间和;Reverse:考虑线段树的形态。线段树第\(i\)层(除最后一层)有\(2^{i-1}\)个节点,那么将所有\(i\ge1\)的区间\([(i-1)\times2^k,i\times2^k]\)......
  • CF1408E Avoid Rainbow Cycles 题解
    解题思路第一眼看过去感觉不是很可做……但是我们可以发现,如果有两个点在不同的集合中出现过,那么一定会存在彩虹环,那么两个点最多出现一次。同时我们考虑将题意转化一下,变成求最大能选取的点,使得不出现彩虹环。根据刚刚的性质,我们可以考虑每个点向它所在的集合连一条边权为\(a_......
  • CF1415E New Game Plus! 题解
    解题思路简单贪心题,我们可以把整个序列看作\(k+1\)个可重集,首先可以得到一个显然的结论:较大的数一定比较小的数先放入一个集合中。同样,由于每一轮\(ans\getsans+\maxsum_i\),其中\(sum_i\)表示第\(i\)个集合的元素和,那么,我们一定会将当前的元素放入当前和最大的哪个集合......
  • CF1416B Make Them Equal 题解
    解题思路观察可以发现,每次操作后序列元素之和不变,那么我们可以将每一次操作看作是\(a_i\)向\(a_j\)移动了\(i\timesx\)。由此可得,若序列和\(sum\bmodn\not=0\),那么一定无解,否则一定存在一个合法的操作方案。因为每次移动时移动的数应为\(i\)的倍数,所以\(a_1\)可以向......
  • CF1446C Xor Tree 题解
    解题思路与其考虑删除哪些点,不如考虑保留哪些点。考虑到和异或有关,那么我们可以把这些数倒序插入trie树中,然后我们就可以在trie树上跑一个简单的dp:若当前节点为叶子节点,那么保留,返回\(1\);若当前节点在链上,那么直接继承儿子节点;若当前节点有两个儿子,那么更新为较大儿子......
  • CF1413C Perform Easily 题解
    解题思路其实是很简单的一道题,考虑计算出所有\(b_i\)在减去每一个\(a_j\)后所有可能的值,将这个值按照从小到大的顺序排序,那么我们可以考虑固定最小值,查找最大值,这个时候从最小值到最大值的区间内应该每一种\(b_i\)都出现了一次。那么,我们可以使用一个桶或者map搭配双指针......
  • (14/60)二叉树理论基础、递归遍历、迭代遍历、统一迭代
    二叉树理论基础分类满二叉树:只有度为0和度为2的结点,且度为0结点在同一层上(每一层的结点都是满的)。完全二叉树:除了底层外其他层结点都是满的(底层当然也可以是满的),且底层结点从左往右连续不断。二叉搜索树:树的每个结点满足:左子树所有结点值均小于根结点的值右子树所有......