50分WA 调好必关
查看原帖
50分WA 调好必关
1557225
Miracle640楼主2025/8/3 18:30

::::error[50分评测信息] 半江瑟瑟\color{green}半江瑟瑟 半江红\color{red}半江红(点我) :::: ::::error[50分代码\color{red}50分代码 以及\color{black}以及 思路\color{lightgreen}思路] :::info[思路] 大数尽可能往两端,小数跟在大一点的数后面
呃……好像就这
a---b---c---b---a
c与c之间的距离:0(这个只有一个)
b:2
a:4
然后就有了代码里的公式
a---b---b---a
b:1
a:3
于是又有了公式 :::

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    cin >> a >> b;//输入
    int n[b];
    for(int i = 0;i < b;i++)
    {
        cin >> n[i];//输入
    }
    sort(n,n + b);//排序
    long long p = b,cnt = 0;//保险开longlong
    if(a % 2 == 0)//偶数
    {
        for(int i = a / 2;i > 0;i--)//往中间看
        {
            if(p > 0)//还有小一点的数
            {
                p--;//那就-(刚才是小到大排序的,现在得反过来看)
            }
            cnt += n[p] *(i * 2 - 1);//间隔为i*2-1个
        }
    }
    else//奇数
    {
        for(int i = a / 2;i > 0;i--)//奇数(默认向下取整)
        {
            if(p > 0)
            {
                p--;
            }
            cnt += n[p] * i * 2;//我把括号省略了
        }
    }
    cout << cnt;//输出
    return 1;//每日防抄1/1
}

:::: ::::info 据说前半部分是 n<kn<k ::::

2025/8/3 18:30
加载中...