感觉有点假

题目大意

数据范围:$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

最新文章

  1. DevExpress使用的过期版本解决方法
  2. Oracle 存储过程 split 代码实现
  3. Android之数据库升级onUpgrade降级onDowngrade
  4. U盘安装ubuntu server 12.04的问题检测不到CDROM的解决
  5. 修改NGINX版本名称为任意WEB SERVER
  6. (转)How to build an Apple Push Notification provider server (tutorial)
  7. 自定义cell相关注意事项
  8. simple-spa 一个简单的单页应用实例
  9. [TCP/IP] TCP的传输连接管理
  10. 【足迹C++primer】32、定制操作_2
  11. django 中自带的加密方法
  12. C# winform 打开主界面并关闭登录界面
  13. APUE习题3.2用dup实现dup2以及shell中重定向符号的使用
  14. 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
  15. 【转载一】Grafana –美观、强大的可视化监控指标展示工具
  16. php 加密 解密 方法
  17. java study3
  18. MySQL语句相关
  19. 导出delphi编写的ios程序在xcode下的日志
  20. 关于gcc编译器中函数不用进行原型声明的解释

热门文章

  1. (转)Shell脚本之break,continue,和exit区别
  2. Hbase与传统数据库的区别
  3. MakeFile基本使用
  4. netty之==线程模型
  5. react做股票、期货交易遇到的问题(不完全是react)及解决方法。
  6. DIV+CSS图片不间断滚动jquery特效(Marquee插件)及移动标签marquee整理
  7. Sass基础(二)
  8. 5.jQuery&amp;Ajax
  9. 【JavaScript】JavaScript赋值语句中的逻辑与&amp;&amp;和逻辑或||
  10. 转:解决Arcsde用户锁定的问题