【复杂度分析】loj#6043. 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
感觉有点假
题目大意

数据范围:$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」蛐蛐国的修墙方案的更多相关文章
- loj 6043「雅礼集训 2017 Day7」蛐蛐国的修墙方案
		
loj 爆搜? 爆搜! 先分析一下,因为我们给出的是一个排列,然后让\(i\)给\(p_i\)连边,那么我们一定会得到若干个环,最后要使得所有点度数为1,也就是这些环有完备匹配,那么最后一定全是偶环. ...
 - LOJ #6043. 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
		
我可以大喊一声这就是个SB题吗? 首先讲一句如果你像神仙CXR一样精通搜索你就可以得到\(80pts\)(无Subtask)的好成绩 我们考虑挖掘一下题目的性质,首先发现这是一个置换,那么我们发现这的 ...
 - loj6043 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
		
传送门:https://loj.ac/problem/6043 [题解] 我们考虑这是个置换,所以一定形成了很多不相交的环. 对于每个环,我们只能选一段.不选.选一段.不选这样交替下去. 显然只有偶环 ...
 - 【LOJ6043】「雅礼集训 2017 Day7」蛐蛐国的修墙方案(搜索技巧题)
		
点此看题面 大致题意: 给你一个长度为\(n\)的排列\(p\),要求构造一个合法的括号序列,使得如果第\(i\)个位置是左括号,则第\(p_i\)个位置一定是右括号. 暴搜 很容易想出一个暴搜. 即 ...
 - 【刷题】LOJ 6041 「雅礼集训 2017 Day7」事情的相似度
		
题目描述 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的有相同的事情发 ...
 - loj#6041. 「雅礼集训 2017 Day7」事情的相似度(SAM set启发式合并 二维数点)
		
题意 题目链接 Sol 只会后缀数组+暴躁莫队套set\(n \sqrt{n} \log n\)但绝对跑不过去. 正解是SAM + set启发式合并 + 二维数点/ SAM + LCT 但是我只会第一 ...
 - LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度  LCT+SAM+线段树
		
Code: #include<bits/stdc++.h> #define maxn 200003 using namespace std; void setIO(string s) { ...
 - LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度
		
我可以大喊一声这就是个套路题吗? 首先看到LCP问题,那么套路的想到SAM(SA的做法也有) LCP的长度是它们在parent树上的LCA(众所周知),所以我们考虑同时统计多个点之间的LCA对 树上问 ...
 - loj#6041. 「雅礼集训 2017 Day7」事情的相似度(后缀自动机+启发式合并)
		
题面 传送门 题解 为什么成天有人想搞些大新闻 这里写的是\(yyb\)巨巨说的启发式合并的做法(虽然\(LCT\)的做法不知道比它快到哪里去了--) 建出\(SAM\),那么两个前缀的最长公共后缀就 ...
 
随机推荐
- (转)在 VMware 中安装 HMC
			
在 VMware 中安装 HMC 原文:http://blog.csdn.net/ccie38499/article/details/14123493 http://www.54it.top/arch ...
 - DEDE SQL标签可以获取文档静态链接地址
			
在DedeCMS的系统里面,我可以通过由使用SQL语句来配合织梦标签进行更多的个性化调用.比如:推荐会员.推荐企业等.但是我们发现文档链接的底层模板地址的是动态的,那么我们要如何来进行转换,让他链接到 ...
 - poj 3107 树重心
			
http://acm.hust.edu.cn/vjudge/problem/18069 和poj 1655差不多:http://www.cnblogs.com/qlky/p/5780933.html ...
 - 各种推导式<"一行能解决的事,为什么要用那么多行">
			
一.推导式 1.列表:[结果 for循环 条件筛选] 2.字典:{k:v for循环 条件筛选} 3.集合推导式{k for循环 条件筛选} ???为什么没有元组推导式 二.生成器表达式(元组表达式) ...
 - 从零开始的全栈工程师——js篇(正则表达式)
			
正则 就是一条规则 用来检验字符串的格式 目标就是字符串 只要是通过表单提交的数据 都是字符串1.正则定义var reg = new RegExp( )var reg = /格式/ <--简写 ...
 - ASP.NET MVC 音乐商店 - 5. 通过支架创建编辑表单
			
在上一章,我们已经从数据库获取数据,然后显示出来,这一章,我们将允许编辑数据. 创建 StoreManagerController 控制器 我们将要创建称为 StoreManager 的控制器,对于这 ...
 - css3 走马灯效果
			
纯css3实现了一个正六边形的走马灯效果,记录一下css3动画的学习情况,效果如下: 主要用到的css3技术有:keyframes.perspective.perspective-origin.tra ...
 - VS2015卸载方法
			
VS2015卸载 直接再控制面板的卸载程序中找到 VS2015 的程序,邮件更改,安装程序会被打开,里面有三个选项包含卸载,点击卸载[记得在卸载前如果有打开过 VS 最好重启一下,重启后不要打开 VS ...
 - Linux安装 NTFS 支持
			
my system kernel Version is 2.6.18-128.el5 在这个地址下载了 kernel-module-ntfs-2.6.18-128.el5-2.1.27-0.rr.10 ...
 - May 2 2017 Week 18 Tuesday
			
The beauty of the journey is found in the scenery along the way. 旅行之美在于沿途所见的风景. Several years ago, I ...