第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳)

G.The Witchwood

思路:

从大到小排序,把前k个数加起来

#include <bits/stdc++.h>

using namespace std;

const int N = 1010;

int a[N];

int main()
{
    int n, k;
    cin >> n >> k;
    for(int i = 0; i < n; i ++ ) cin >> a[i];
    sort(a, a + n, greater<int>());
    
    long long sum = 0;
    for(int i = 0; i < k; i ++ ) sum += a[i];
    cout << sum << endl;
    
    return 0;
}

F.Kobolds and Catacombs

思路:

记录一下原数组和排好序后的数组,并记录其前缀和,每次前缀和相等的时候就答案数加一

#include <bits/stdc++.h>

using namespace std;

const int N = 1000010;

int a[N], b[N];

int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i ++ ) cin >> a[i], b[i] = a[i];
    sort(a, a + n);
    long long suma = 0, sumb = 0, res = 0;
    for(int i = 0; i < n; i ++ )
    {
        suma += a[i];
        sumb += b[i];
        if(suma == sumb) res ++ ;
    }
    cout << res << endl;
    
    return 0;
}

 

posted @ 2021-11-08 20:07  彦辰kkkkk  阅读(239)  评论(0)    收藏  举报