CF1025D Recovering BST
Posted wangyiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1025D Recovering BST相关的知识,希望对你有一定的参考价值。
思路:
dp。
实现:
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int MAXN = 705; 4 int a[MAXN], g[MAXN][MAXN], dp[2][MAXN][MAXN]; 5 int check(int p, int s, int l, int r) 6 { 7 if (l == r) return g[p][l] != 1; 8 if (dp[s][l][r] != -1) return dp[s][l][r]; 9 int flg = 0; 10 for (int i = l; i <= r; i++) 11 { 12 if (g[p][i] == 1) continue; 13 if (i > l && !check(i, 0, l, i - 1)) continue; 14 if (i < r && !check(i, 1, i + 1, r)) continue; 15 flg = 1; break; 16 } 17 return dp[s][l][r] = flg; 18 } 19 int main() 20 { 21 int n; 22 while (cin >> n) 23 { 24 for (int i = 1; i <= n; i++) cin >> a[i]; 25 for (int i = 1; i <= n; i++) 26 { 27 for (int j = 1; j <= n; j++) 28 g[i][j] = __gcd(a[i], a[j]); 29 } 30 memset(dp, -1, sizeof dp); 31 int flg = 0; 32 for (int i = 1; i <= n; i++) 33 { 34 if (i > 1 && !check(i, 0, 1, i - 1)) continue; 35 if (i < n && !check(i, 1, i + 1, n)) continue; 36 flg = 1; break; 37 } 38 cout << (flg ? "Yes" : "No") << endl; 39 } 40 return 0; 41 }
以上是关于CF1025D Recovering BST的主要内容,如果未能解决你的问题,请参考以下文章
Codefores 1025D Recovering BST
codeforce #505D - Recovering BST 区间DP