bzoj 5449 序列
https://www.lydsy.com/JudgeOnline/problem.php?id=5449
话说很早以前做过。。算是IDA*的板子吧,一个简单的估价函数就可以过去了
%:pragma GCC optimize()
#include<cstdio>
#include<algorithm>
using namespace std;
int a[],n,maxd,T;
bool fl;
inline bool check()
{
for(int i=;i<n;++i)
if(a[i]>a[i+])
return ;
return ;
}
//reverse一次,相邻两数绝对值之差大于1的最多减少1个,
//因此相邻两数绝对值之差大于1的个数一定小于等于所需reverse次数
inline int hh()
{
int cnt=;
for(int i=;i<n;++i)
if(abs(a[i+]-a[i])>)
cnt++;
return cnt;
}
inline void reverse1(const int& r)
{
int i,t;
for(i=;i<=r/;++i)
{
t=a[i];a[i]=a[r-i+];a[r-i+]=t;
}
}
void dfs(int x,int last)
{
if(fl) return;
if(x==maxd)
{
if(check()) fl=;
return;
}
if(x+hh()>maxd) return;
for(int i=;i<=n;++i)
if(i!=last)
{
reverse(a+,a+i+);
dfs(x+,i);
reverse(a+,a+i+);
}
}
int main()
{
int i;
scanf("%d",&T);
while(T--)
{
fl=;
scanf("%d",&n);
for(i=;i<=n;++i)
scanf("%d",&a[i]);
for(maxd=;maxd<=;++maxd)
{
dfs(,);
if(fl) break;
}
printf("%d\n",maxd);
}
return ;
}
此题http://210.33.19.103/contest/823/problem/2(序列)同以上题
upd20190222:
根据网上一些高分程序优化了一下估价函数和代码...
%:pragma GCC optimize()
#include<cstdio>
#include<algorithm>
using namespace std;
int a[],n,maxd,T;
bool fl;
inline int abs1(int x){return x>?x:-x;}
inline int hh()
{
int cnt=(a[n]!=n);
for(int i=;i<n;++i)
if(abs1(a[i+]-a[i])>)
++cnt;
return cnt;
}
void dfs(int x,int last)
{
int h=hh();
if(!h) {fl=;return;}
if(x+h>maxd) return;
for(int i=;i<=n;++i)
if(i!=last)
{
reverse(a+,a+i+);
dfs(x+,i);
if(fl) return;
reverse(a+,a+i+);
}
}
int main()
{
int i;
scanf("%d",&T);
while(T--)
{
fl=;
scanf("%d",&n);
for(i=;i<=n;++i)
scanf("%d",&a[i]);
for(maxd=;maxd<=;++maxd)
{
dfs(,);
if(fl) break;
}
printf("%d\n",maxd);
}
return ;
}
bzoj 5449 序列的更多相关文章
- BZOJ 1251 序列终结者(Splay)
题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术 ...
- [bzoj]2962序列操作
[bzoj]2962序列操作 标签: 线段树 题目链接 题意 给你一串序列,要你维护三个操作: 1.区间加法 2.区间取相反数 3.区间内任意选k个数相乘的积 题解 第三个操作看起来一脸懵逼啊. 其实 ...
- bzoj 1858 序列操作
bzoj 1858 序列操作 带有随机多个区间单值覆盖的区间操作题,可考虑用珂朵莉树解决. #include<bits/stdc++.h> using namespace std; #de ...
- bzoj 1283 序列 - 费用流
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次 ...
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
- BZOJ 1251: 序列终结者
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 3773 Solved: 1579 [Submit][Status][Dis ...
- Bzoj 4403: 序列统计 Lucas定理,组合数学,数论
4403: 序列统计 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 328 Solved: 162[Submit][Status][Discuss] ...
- bzoj 维护序列seq(双标记线段树)
Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 4184 Solved: 1518[Submit][Status][Discus ...
- bzoj 2962 序列操作
2962: 序列操作 Time Limit: 50 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 有一个长度为n的序列, ...
随机推荐
- poj2773 —— 二分 + 容斥原理 + 唯一分解定理
题目链接:http://poj.org/problem?id=2773 Happy 2006 Time Limit: 3000MS Memory Limit: 65536K Total Submi ...
- 基于BASYS2的VHDL程序与烧写——按键消抖程序
请尊重作者版权,转载请注明源地址http://www.cnblogs.com/connorzx/p/3548364.html 按键在按下的过程中通常会产生一段时间的抖动,为了消除这种抖动,一般采取两种 ...
- php filter 安全过滤函数
转自:http://www.blags.org/archives/741.html php 利用filter 扩展编写的参数处理静态类,欢迎使用.希望大家看得开心,用得放心. <?php /** ...
- cowboy中分布式节点通信
项目开发中,web前端节点需要与远端的聊天服节点通信.聊天服使用了otp,但我对otp下的分布式通信不太清楚,造成了一些问题. 1)首先是cowboy节点的命名.具体参数是配置在工程目录rel下的vm ...
- CISCO-从路由器上下载IOS
准备工作:一台装有TFTP服务器的PC,一台带有IOS的路由器,并用网线连接上 设置路由器接口和计算机网卡的IP地址在同一网段,并且互相能ping通. 1,安装Cisco TFTP Server 2, ...
- BZOJ_3781_小B的询问_莫队
BZOJ_3781_小B的询问_莫队 Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值 ...
- Watir 简化日常工作实例
公司的官方主页要优化搜索任务,一共有110个独立页面,开发工程师做了以下工作:1. 为所有这些页面的每个图片添加了alt:2. 为页面上的每个标题添加了面包屑:3. 为网站最重要的标题设置H1标签,而 ...
- Console Event Handling
http://www.codeproject.com/Articles/2357/Console-Event-Handling Console Event Handling Kumar Gaurav ...
- 爬取动态网页:Selenium
参考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬虫过程中,一般情况下都是直接解析html源码进行分析解析即可.但是,有一种情 ...
- 技术胖Flutter第三季-14布局RowWidget的详细讲解
flutter总的地址: https://jspang.com/page/freeVideo.html 视频地址: https://www.bilibili.com/video/av35800108/ ...