【复杂度分析】loj#6043. 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
2024-09-03 19:37:23
感觉有点假
题目大意
数据范围:$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
最新文章
- DevExpress使用的过期版本解决方法
- Oracle 存储过程 split 代码实现
- Android之数据库升级onUpgrade降级onDowngrade
- U盘安装ubuntu server 12.04的问题检测不到CDROM的解决
- 修改NGINX版本名称为任意WEB SERVER
- (转)How to build an Apple Push Notification provider server (tutorial)
- 自定义cell相关注意事项
- simple-spa 一个简单的单页应用实例
- [TCP/IP] TCP的传输连接管理
- 【足迹C++primer】32、定制操作_2
- django 中自带的加密方法
- C# winform 打开主界面并关闭登录界面
- APUE习题3.2用dup实现dup2以及shell中重定向符号的使用
- 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
- 【转载一】Grafana –美观、强大的可视化监控指标展示工具
- php 加密 解密 方法
- java study3
- MySQL语句相关
- 导出delphi编写的ios程序在xcode下的日志
- 关于gcc编译器中函数不用进行原型声明的解释
热门文章
- (转)Shell脚本之break,continue,和exit区别
- Hbase与传统数据库的区别
- MakeFile基本使用
- netty之==线程模型
- react做股票、期货交易遇到的问题(不完全是react)及解决方法。
- DIV+CSS图片不间断滚动jquery特效(Marquee插件)及移动标签marquee整理
- Sass基础(二)
- 5.jQuery&;Ajax
- 【JavaScript】JavaScript赋值语句中的逻辑与&;&;和逻辑或||
- 转:解决Arcsde用户锁定的问题