1 条题解

  • 0
    @ 2025-8-24 23:17:27

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar K_yuxiang_rose
    洛谷一级保护废物。

    搬运于2025-08-24 23:17:27,当前版本为作者最后更新于2025-06-06 21:56:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    「奇数与偶数相邻的情况最多只出现一次」实际上就是把奇数和偶数分开,那么只需要判断将奇数放在左边更优还是把偶数放在左边更优即可。

    显然奇数与奇数,或偶数与偶数之间不需要交换,所以只需要统计当前奇数(或偶数)的出现次数,判断前面有几个位置已经被奇数(或偶数)占了,就能够求出操作步数了。

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    signed main()
    {
    	int n,cnt1=0,cnt2=0,sum1=0,sum2=0;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		int x;
    		cin>>x;
    		if(x%2) cnt1++,sum1+=(i-cnt1);
    		else cnt2++,sum2+=(i-cnt2);
    	}
    	cout<<min(sum1,sum2);
    	return 0;
    }
    ```
    • 1

    信息

    ID
    12433
    时间
    2000ms
    内存
    1024MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者