C-Cities(区间DP)
C-Cities(区间DP)
题意:
给n个数。每次操作可以将连续的一段相同(可以只有一个数)的数变为任意数。
求最少多少次操作可以使所有数都相同。
思路:
区间DP,直接区间DP会超时。
需要进行优化,对于区间[L,R],可以找到与a[r]相同的数,然后把区间分为两半。
如果a[l]==a[r],则dp[L][R]–;
代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[5005],pre[5005];
void solve(){
原创
2021-04-27 20:33:14 ·
199 阅读 ·
0 评论