博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF1025D]Recovering BST
阅读量:5086 次
发布时间:2019-06-13

本文共 1570 字,大约阅读时间需要 5 分钟。

题面

给出一些数,若要求两数\(gcd>1\)才能连边,询问他们是否能构成一棵二叉搜索树

  • \(n\leq700\)

    解析

    如果没注意到二叉搜索树这一条件,这题绝对做不出来。。。

二叉搜索树的定义是,对同一节点,左儿子权值比它小,右儿子权值比它大。

于是有一个很重要的性质,中序遍历上点权从小到大

可以得出推论:

  • 一棵子树(在中序遍历上可视为一段区间\([l,r]\)),把它作为左儿子,根结点的父亲一定为\(r+1\);把它作为右儿子,根节点父亲一定为\(l-1\)

然而注意到,如果暴力设\(f[i][j][k][0/1]\)表示以\(k\)为根,\([i,j]\)作为其左/右儿子是否合法是会\(MLE\),而且有许多无效状态。

于是需应用上面推论,设两个判合法性的数组:

  • \(L[i][j]\)表示区间\([i,j-1]\)作为\(j\)的左儿子是否合法
  • \(R[i][j]\)表示区间\([i+1,j]\)作为\(j\)的右儿子是否合法

转移:

\(k\)为区间\([i,j]\)的根,
如果\(L[i][k]=1\)\(r[k][j]=1\),则该状态合法,可以转移;
没地方转移了就\(puts("Yes")\)
如果\(k\)可以与\(l-1\)相连,说明以\(l-1\)为根,\([l,r]\)为右儿子的状态合法。
如果\(k\)可以与\(r+1\)相连,说明以\(r+1\)为根,\([l,r]\)为左儿子的状态合法。

#include
#include
#include
#include
#include
#include
#define ll long long#define re register#define il inline#define fp(i,a,b) for(re int i=a;i<=b;i++)#define fq(i,a,b) for(re int i=a;i>=b;i--)using namespace std;il ll gi(){ re ll x=0,p=1; re char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') p=-1,ch=getchar(); while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar(); return p*x;}const int N=710;int n,a[N],f[N][N],L[N][N],R[N][N];int main(){ ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) cin>>a[i],L[i][i]=R[i][i]=1; fp(i,1,n) fp(j,i,n) if(__gcd(a[i],a[j])>1) f[i][j]=f[j][i]=1; fq(l,n,1) fp(r,l,n) fp(k,l,r) if(L[l][k]&&R[k][r]) { if(l==1&&r==n) {puts("Yes");return 0;} if(f[l-1][k]) R[l-1][r]=1; if(f[k][r+1]) L[l][r+1]=1; } puts("No"); return 0;}

转载于:https://www.cnblogs.com/yanshannan/p/9505936.html

你可能感兴趣的文章
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>