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的序列, ...
随机推荐
- GIN+GORILLA=A GOLANG WEBSOCKET SERVER
鉴于聊天已然成为大部分app的基础功能,而大部分app用户基数有没有辣么大,常用的聊天server架构如xmpp或者消息队列实现之类的用起来还挺麻烦的,有比较难跟网页端做交互,加之H5标准落地,所以w ...
- 基于BASYS2的VHDL程序与仿真——50%占空比8分频器
转帖请注明转自http://www.cnblogs.com/connorzx/p/3547673.html 一.新建工程 1.点击File->New Project, 2.点击Next 注:此处 ...
- GDP与股市市值
巴菲特提出一个判断市场估值高低的原则:市场总市值与GDP之比的高低,反映了市场投资机会和风险度.如果所有上市公司总市值占GDP的比率在70%-80%之间,则买入股票长期而言可能会让投资者有相当不错的报 ...
- html5--5-12 渐变色
html5--5-12 渐变色 学习要点 掌握渐变色的绘制方法 渐变色绘制方法 createLinearGradient() 创建线性渐变 createLinearGradient(x1,y1,x2, ...
- 自建 AppRTC
自建 AppRTC 字数3158 阅读1718 评论2 喜欢2 AppRTC 是 webrtc 的一个 demo.自建 AppRTC 可以苦其心志劳其筋骨饿其体肤,更重要的是能学会 webrtc 服务 ...
- Log4j输出格式控制--log4j的PatternLayout参数含义
参数 说明 例子 %c 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字 ...
- FFmpeg常用命令 (二)
使用网络上的各种转码软件,简直崩溃了!比如,它竟然强行把你要编辑的视频的前面,现在可以使用ffmpeg. ffmpeg做IT media的都知道,很强大,只不多对windows用户比较麻烦,可以使用L ...
- ftp主要流程
判断是否是root用户,若不是则提示并退出. 建立server socket. 等待用户连接,并建立相应用户的子进程.
- httpclient:实现有验证码的模拟登陆
//1.这种方式是先把验证码的图片下载到本地.并且根据网页解析获得token值//2.手动在控制台输入验证码//3.因为验证码图片已经下载下来,后面就可以使用图像文字识别package DoubanS ...
- sql语句之正则表达式
select * from employee where name regexp '^jin' select * from employee where name regexp '^jin.*(g|n ...