感觉有点假

题目大意

数据范围:$n<=100$


题目分析

由于题目给出的是 置换,所以相当于只需枚举每个环的两个状态。

主要是复杂度分析这里:

一元环:不存在

二元环:特判保平安

三元环:不存在

四元环:复杂度$O(2^{25})$,但是特判一下顺序就可以秒下来了

六元环:复杂度$O(2^{17})$至此及以后的复杂度都是可以接受的了

不知道为什么倒着搜就会更快?

 #include<bits/stdc++.h>
const int maxn = ; int n,las,p[maxn],w[maxn],deg[maxn]; void dfs(int x)
{
if (x==){
if (las) return;
for (int i=; i<=n; i++)
putchar(w[i]?'(':')');
exit();
}
if (w[x]!=-){
int che = w[p[x]];
if (w[p[x]]!=-&&((-w[x])!=w[p[x]])) return;
w[p[x]] = -w[x];
las -= w[x]?:-;
if (las >= ) dfs(x-);
las += w[x]?:-;
w[p[x]] = che;
}else{
w[x] = ;
int che = w[p[x]], chk = ;
for (int i=p[x],f=w[x]; i!=x; i=p[i])
f = -f, chk &= (w[i]==-)||(f==w[i]);
if (chk){
int bck[maxn],bct = ;
for (int i=p[x],f=w[x]; i!=x; i=p[i])
f = -f, bck[++bct] = w[i], w[i] = f;
las -= w[x]?:-;
if (las >= ) dfs(x-);
las += w[x]?:-;
for (int i=p[x],f=; i!=x; i=p[i])
w[i] = bck[f], ++f;
} w[x] = ;
che = w[p[x]];
if (w[p[x]]==-||((-w[x])==w[p[x]])){
w[p[x]] = -w[x];
las -= w[x]?:-;
if (las >= ) dfs(x-);
las += w[x]?:-;
w[p[x]] = che;
} w[x] = -;
}
}
int main()
{
memset(w, -, sizeof w);
scanf("%d",&n);
for (int i=; i<=n; i++) scanf("%d",&p[i]), ++deg[p[i]];
dfs(n);
return ;
}

END

【复杂度分析】loj#6043. 「雅礼集训 2017 Day7」蛐蛐国的修墙方案的更多相关文章

  1. loj 6043「雅礼集训 2017 Day7」蛐蛐国的修墙方案

    loj 爆搜? 爆搜! 先分析一下,因为我们给出的是一个排列,然后让\(i\)给\(p_i\)连边,那么我们一定会得到若干个环,最后要使得所有点度数为1,也就是这些环有完备匹配,那么最后一定全是偶环. ...

  2. LOJ #6043. 「雅礼集训 2017 Day7」蛐蛐国的修墙方案

    我可以大喊一声这就是个SB题吗? 首先讲一句如果你像神仙CXR一样精通搜索你就可以得到\(80pts\)(无Subtask)的好成绩 我们考虑挖掘一下题目的性质,首先发现这是一个置换,那么我们发现这的 ...

  3. loj6043 「雅礼集训 2017 Day7」蛐蛐国的修墙方案

    传送门:https://loj.ac/problem/6043 [题解] 我们考虑这是个置换,所以一定形成了很多不相交的环. 对于每个环,我们只能选一段.不选.选一段.不选这样交替下去. 显然只有偶环 ...

  4. 【LOJ6043】「雅礼集训 2017 Day7」蛐蛐国的修墙方案(搜索技巧题)

    点此看题面 大致题意: 给你一个长度为\(n\)的排列\(p\),要求构造一个合法的括号序列,使得如果第\(i\)个位置是左括号,则第\(p_i\)个位置一定是右括号. 暴搜 很容易想出一个暴搜. 即 ...

  5. 【刷题】LOJ 6041 「雅礼集训 2017 Day7」事情的相似度

    题目描述 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的有相同的事情发 ...

  6. loj#6041. 「雅礼集训 2017 Day7」事情的相似度(SAM set启发式合并 二维数点)

    题意 题目链接 Sol 只会后缀数组+暴躁莫队套set\(n \sqrt{n} \log n\)但绝对跑不过去. 正解是SAM + set启发式合并 + 二维数点/ SAM + LCT 但是我只会第一 ...

  7. LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度 LCT+SAM+线段树

    Code: #include<bits/stdc++.h> #define maxn 200003 using namespace std; void setIO(string s) { ...

  8. LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度

    我可以大喊一声这就是个套路题吗? 首先看到LCP问题,那么套路的想到SAM(SA的做法也有) LCP的长度是它们在parent树上的LCA(众所周知),所以我们考虑同时统计多个点之间的LCA对 树上问 ...

  9. loj#6041. 「雅礼集训 2017 Day7」事情的相似度(后缀自动机+启发式合并)

    题面 传送门 题解 为什么成天有人想搞些大新闻 这里写的是\(yyb\)巨巨说的启发式合并的做法(虽然\(LCT\)的做法不知道比它快到哪里去了--) 建出\(SAM\),那么两个前缀的最长公共后缀就 ...

随机推荐

  1. InnoDB还是MyISAM?

    两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用. 我作为使用MySQL的用户角度出发,Innodb和My ...

  2. [转]ASP.NET Core集成微信登录

    本文转自:http://www.cnblogs.com/early-moon/p/5819760.html 工具: Visual Studio 2015 update 3 Asp.Net Core 1 ...

  3. [转].Net Core上用于代替System.Drawing的类库

    本文转自:http://www.tuicool.com/wx/iuaINjy 目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出 ...

  4. GPU学习随笔

    NVML   NVAPI   GDK GDK包含NVML NVAPI库不能提供获取GPU使用率的接口 NVML能提供但不支持geforce系列 NVAPI.dll NVAPI64.dll动态加载可以查 ...

  5. phoneGap异步加载JS失败

    现在正在做一个phoneGap项目,安卓平台,有个异步加载JS总是失败,phoneGap也不好调试,一个问题纠结了一下午 最后找了半天,找到了原因,因此写本文记录一下,也顺便帮帮遇到同样问题的人 原因 ...

  6. Calendar计算一个月前的日期,踩坑记录

    错误示范:calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);//获取一个月前的今天这种写法假设传入的日期为2019-03-3 ...

  7. HTML的行内元素与块级元素的区别?

    块级元素:独占一行,其宽度自动填满父元素的宽度,可以容纳行内元素和其他块级元素,可以设置margin和padding值. 行内元素:不会独占一行,与其他行内元素排成一行,直到其父元素拍不下,才会从新一 ...

  8. 轻松完成excel读写操作- 基于POI的框架BingExcel的使用(1)

    Bingexcel User Guide 使用maven进行项目开发目前项目的maven仓库是在github上,浏览地址为 https://github.com/bingyulei007/mvn-re ...

  9. IIS 发表web 之后,访问注册表项失败得问题

    错误: 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\xx\xxxx\xxxxx”的访问被拒绝. 解决办法: 打开IIS,找到应用程序池,然后找到自己web使用得程序池,右键高级 ...

  10. jstl Maven 依赖导致的 Jar 包冲突

    概述 Jar 包冲突是日常开发过程中,时常会遇到的问题.本文介绍由 jstl 的 Maven 依赖导致的 Jar 包冲突问题,以及对应的解决方法. jstl 的 Maven 依赖配置 <depe ...