Stay Hungry,Stay Foolish!

C - Socks 2

C - Socks 2

https://atcoder.jp/contests/abc334/tasks/abc334_c

 

思路

前后缀方法:

https://zhuanlan.zhihu.com/p/673837822

其中给出了证明:

1. 对于成对的袜子参不参与凑对匹配,不影响总的色差

2. 对于不成对的袜子, 采用相邻匹配的方法,可以使得色差最小。

 

基于此实时给出动态规划方法:

 

 

 

Code

https://atcoder.jp/contests/abc334/submissions/48933373

#include <bits/stdc++.h>
using namespace std;
long long dp[400005][2];
int main(){
    int n,k;
    cin>>n>>k;
    vector<long long>v;
    v.push_back(0);
    for(int i=0;i<k;i++){
        long long a;
        cin>>a;
        v.push_back(a);
    }

    for(int i=2;i<v.size();i++){
//      cout<<dp[i][0]<<" "<<dp[i][1]<<' ';
        if (i % 2 == 0){
            dp[i][0] = dp[i-2][0]+v[i]-v[i-1];
        }else {
            dp[i][1] = min(dp[i-1][0], dp[i-2][1]+v[i]-v[i-1]);
        }
 //      cout<<dp[i][0]<<" "<<dp[i][1]<<endl;
    }

    cout<<dp[v.size()-1][k%2]<<endl;
}

 

posted @ 2023-12-30 19:00  lightsong  阅读(3)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel