首页 > 其他 > 详细

CF1025D Recovering BST

时间:2018-09-09 10:30:31      阅读:158      评论:0      收藏:0      [点我收藏+]

思路:

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

原文:https://www.cnblogs.com/wangyiming/p/9611302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!