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; }
标签:int,abc334,long,Socks,https,contests From: https://www.cnblogs.com/lightsong/p/17936671.html