Codeforces 1025D Recovering BST
这个题被wa成傻逼了。。。。
ma[i][j]表示i,j能不能形成一条直接作为排序二叉树的边,n^3更新维护ma即可,按说应该是要爆复杂度的,数据玄学吧。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<list>
#include<climits>
#include<bitset>
using namespace std;
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("ouput.txt", "r", stdin);freopen("output.txt", "w", stdout);
#define left asfdasdasdfasdfsdfasfsdfasfdas1
#define tan asfdasdasdfasdfasfdfasfsdfasfdas
typedef long long ll;
typedef unsigned int un;
const int desll[][]={{,},{,-},{,},{-,}};
const ll mod=1e9+;
const int maxn=7e2+;
const int maxm=1e6+;
const double eps=1e-;
int m,n;
int ar[maxn];
char ch[maxn];
int gcd(int a,int b)
{
return b==?a:gcd(b,a%b);
}
bool gcdl[maxn][maxn];
bool ma[maxn][maxn],vis[maxn];
set<int> ve[maxn];
void init(){
memset(gcdl,,sizeof(gcdl));
for(int i=;i<=n;i++){
for(int j=i;j<=n;j++){
if(gcd(ar[i],ar[j])>)gcdl[i][j]=gcdl[j][i]=;
}
}
memset(ma,,sizeof(ma));
}
void dfs(int u)
{
vis[u]=;
for(int i=;i<=n;i++){
if(i==u || ma[u][i]==)continue;
if(vis[i]==)dfs(i);
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&ar[i]);
}
init();
for(int i=;i<=n;i++){
if(i>){
if(gcdl[i][i-])ma[i][i-]=;
}
if(i<n){
if(gcdl[i][i+])ma[i][i+]=;
}
}
for(int j=;j<=n;j++){
for(int i=;i<=n;i++){
if(i+j<=n && ma[i][i+j]==){
if(gcdl[i][i+j] && ma[i+j][i+]){
ma[i][i+j]=;
}
if(ma[i][i+j]==){
for(int k=i+;k<i+j;k++){
if(ma[i][k] && ma[k][i+j]){
ma[i][i+j]=;
break;
}
}
}
}
if(i-j>= && ma[i][i-j]==){
if(gcdl[i][i-j] && ma[i-j][i-]){
ma[i][i-j]=;
}
if(ma[i][i-j]==){
for(int k=i-;k>i-j;k--){
if(ma[i][k] && ma[k][i-j]){
ma[i][i-j]=;
break;
}
}
}
}
}
}
bool fond=false;
for(int i=;i<n;i++){
if(ma[i][] && ma[i][n]){
fond=true;break;
}
}
if(ma[][n] || ma[n][])fond=true; if(fond)printf("Yes\n");
else printf("No\n");
return ;
}
Codeforces 1025D Recovering BST的更多相关文章
- CodeForces - 1025D: Recovering BST (区间DP)
Dima the hamster enjoys nibbling different things: cages, sticks, bad problemsetters and even trees! ...
- 【非原创】codeforces 1025D - Recovering BST【区间dp+二叉搜索树】
题目:戳这里 题意:给一个不下降序列,有n个数.问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件.主要得了解二叉搜索树的性质, ...
- Codeforces 1025 D - Recovering BST
D - Recovering BST 思路:区间dp dp[l][r][0]表示l到r之间的数字可以构成一个二叉搜索树,并且以r+1为根节点 dp[l][r][0]表示l到r之间的数字可以构成一个二叉 ...
- CF 1025 D. Recovering BST
D. Recovering BST http://codeforces.com/contest/1025/problem/D 题意: 给出一个连续上升的序列a,两个点之间有边满足gcd(ai ,aj) ...
- Recovering BST CodeForces - 1025D (区间dp, gcd)
大意: 给定$n$个数, 任意两个$gcd>1$的数间可以连边, 求是否能构造一棵BST. 数据范围比较大, 刚开始写的$O(n^3\omega(1e9))$竟然T了..优化到$O(n^3)$才 ...
- D. Recovering BST Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
http://codeforces.com/contest/1025/problem/D 树 dp 优化 f[x][y][0]=f[x][z][1] & f[z+1][y][0] ( gcd( ...
- Codeforces Round #505 D. Recovering BST(区间DP)
首先膜一发网上的题解.大佬们tql. 给你n个单调递增的数字,问是否能够把这些数字重新构成一棵二叉搜索树(BST),且所有的父亲结点和叶子结点之间的gcd > 1? 这个题场上是想暴力试试的.结 ...
- Codeforces #505(div1+div2) D Recovering BST
题意:给你一个升序的数组,元素之间如果gcd不为1可以建边,让你判断是否可以建成一颗二叉搜索树. 解法:dp,首先建图,然后进行状态转移.因为如果点k左端与i相连,右端与k相连,则i和k可以相连,同时 ...
- Solution -「CF 1025D」Recovering BST
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\),问是否存在一棵二叉搜索树,使得其中序遍历为 \(\{a_n\}\),且相邻接的两点不互素. ...
随机推荐
- linux文件上传下载笔记(rz,sz,sftp,scp)命令
软件(包)安装/卸载 yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or nyum remove 包名(不支持*)rpm -i ...
- django-settings里redis连接与缓存配置
# Django-redis的缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache. ...
- (原)UE4.20 自定义编辑器 - 基础(一)创建编辑器模块
@author:白袍小道 前言: 本小文参考了UnrealC++,游戏编辑器(应该都找不到了嘿嘿)等书籍. 引擎基于UnrealEngine4.20版本(由于UnrealC++ 用的是 ...
- CodeForces-1061B Views Matter
题目链接 https://vjudge.net/problem/CodeForces-1061B 题面 Description You came to the exhibition and one e ...
- svn 数据库 账号密码
47.106.107.201 云商传媒李孔文 2018/8/22 19:26:35 root 云商传媒李孔文 2018/8/22 19:26:39 sn123456 云商传媒李孔文 2018/8/22 ...
- PEAR DB 初学笔记
1.数据查询 i. DB_common::getAll() DB_FETCHMODE_ORDERED . DB_FETCHMODE_ASSOC . DB_FETCHMODE_OBJECT ii. DB ...
- 团队项目-任务分解[Alpha0]
团队项目-任务分解[Alpha0] 标签(空格分隔): 团队博客 适用范围: 本文档 适用对象 团队全体成员 适用时间 alpha阶段第一周计划 10.24-10.28 适用内容 目标.分工.时长估计 ...
- GeoIP2 数据库更新地址
GeoIP2 数据库更新地址 数据库文件下载网页地址 http://dev.maxmind.com/geoip/geoip2/geolite2/ http://geolite.maxmind.com/ ...
- android Toolbox和BusyBox
在安卓系统中,Toolbox是能够实现内存的管理,备份管理和清除数据等功能的系统文件.用来对手机性能进行设置,需要root权限.能够被软件调用. 我们在updater-script文件中,知道有类似s ...
- 转:CentOS 6.5 nginx
CentOS 6.5安装及简单配置Nginx 一.准备事项 (1) 因为nginx需要访问80端口所以请先关闭或者开放防火墙端口,和selinux. 参考命令 关闭防火墙: [root@local ~ ...