这个题被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 ;
}

最新文章

  1. 【BZOJ】4245: [ONTAK2015]OR-XOR
  2. linux下RDP客户端及服务器
  3. C++ 输出调试的一些技巧
  4. insert table 和create table as 区别
  5. paper 98:图像视觉各个领域文献目录
  6. MVC异常日志生产者消费者模式记录(异常过滤器)
  7. date 笔记
  8. ffmpeg 按时间戳读取文件 -re
  9. [转载]汇编eax寄存器和AX,AH,AL之间的关系
  10. Hibernate 配置详解(12) 其实我也不想用这么土的名字
  11. 提示:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components.错误
  12. vue非父子组件间通信
  13. Linux学习之路 -- 简单日常使用命令
  14. 爬虫入门 手写一个Java爬虫
  15. python/零起点(一、列表)
  16. PHP XML SimpleXML
  17. AUTOSAR-关于配置文件的思考
  18. Oracle调优总结
  19. C语言 sscanf用法详解
  20. 第二章 微服务构建:Spring Boot

热门文章

  1. linux下多线程断点下载工具-axel
  2. windows 10的资源管理器不显示映射的网络驱动器怎么办?
  3. Linux忘记root密码的解决办法
  4. cannot bind to 127.0.0.1:5037 报错
  5. 团队项目-第一次Scrum 会议
  6. js 图片自动循环切换setInterval();
  7. session-cookie 和token登录验证
  8. [blockchain-035]eos的部署安装智能合约
  9. DB2设置code page(日文943)
  10. Codeforces Round #281 (Div. 2) B 模拟