博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2824: [AHOI2012]铁盘整理
阅读量:5254 次
发布时间:2019-06-14

本文共 1115 字,大约阅读时间需要 3 分钟。

显然到最终状态有一个下界,即为当前状态下,在最终状态中不相邻的相邻个数。

再加一些奇怪的剪枝就可以过了。另外这个题加强数据的题有剧毒。

#include 
using namespace std;int b[60], a[60];int pre, Ans;int n;int lim;inline int check() { int ret = 0; for(int i = 1; i < n; ++ i) { if(abs(a[i] - a[i + 1]) != 1) ++ ret; } return ret + (a[n] != n);}inline void dfs(int now) { if(check() + now > lim) return; if(now == lim) { for(int i = 1; i <= n; ++ i) if(a[i] != i) return; printf("%d\n", lim); exit(0); } for(int i = 2; i <= n; ++ i) if(a[i + 1] - a[i] != 1) { for(int j = 1; j <= i / 2; ++ j) { swap(a[j], a[i - j + 1]); } dfs(now + 1); for(int j = 1; j <= i / 2; ++ j) { swap(a[j], a[i - j + 1]); } }}int main() { scanf("%d", &n); for(int i = 1; i <= n; ++ i) { scanf("%d", &b[i]); } for(int i = 1; i <= n; ++ i) { for(int j = 1; j <= n; ++ j) { if(b[j] <= b[i]) ++ a[i]; } } Ans = 2 * n - 2; for(lim = 1; lim <= 2 * n - 2; ++ lim) { dfs(0); }}

 

转载于:https://www.cnblogs.com/iamqzh233/p/9427187.html

你可能感兴趣的文章
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
S5PV210根文件系统的制作(一)
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
查看>>
【SVM】libsvm-python
查看>>
C++循环单链表删除连续相邻重复值
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
ASP.NET使网页弹出窗口不再困难
查看>>
Leetcode Balanced Binary Tree
查看>>
Leetcode 92. Reverse Linked List II
查看>>
windown快速安装xgboost
查看>>
Linux上安装Libssh2
查看>>
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>