洛谷P2534 [AHOI2012]铁盘整理
P2534 [AHOI2012]铁盘整理
题目描述


输入输出格式
输入格式:
共两行。第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R。(1<=R<=100)
输出格式:
一个正整数,表示使铁盘从小到大有序需要的最少翻转次数。
输入输出样例
5
2 4 3 5 1
5
//第一种:使用string.h中的strrev函数,只用于字符串
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[]="hello";
strrev(s);
cout<<s<<endl;
return ;
} //第二种:使用algorithm中的reverse函数,也适用于整型数组及其他存储结构
#include <iostream>
#include <string>
#include <algorithm>
using namespace std; int main()
{
string s="hello";
reverse(s.begin(),s.end());
cout<<s<<endl;
return ;
}
反转操作
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define mod1 2333333
#define mod2 1048577
#define maxn 51
using namespace std;
int n,t[maxn];
struct node{
int a[maxn],step;
}cur,nxt;
queue<node>q;
bool vis1[],vis2[];
int hash1(int x[]){
int res=;
for(int i=;i<=n;i++)res=(res*%mod1+x[i])*%mod1;
return res;
}
int hash2(int x[]){
int res=;
for(int i=;i<=n;i++)res=(res*%mod2+x[i])*%mod2;
return res;
}
int main(){
freopen("Cola.txt","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&cur.a[i]),t[i]=cur.a[i];
sort(t+,t+n+);
int t1=hash1(t),t2=hash2(t);
if(hash1(cur.a)==t1&&hash2(cur.a)==t2){puts("");return ;}
cur.step=;
q.push(cur);
while(!q.empty()){
cur=q.front();q.pop();
for(int i=;i<=n;i++){
nxt=cur;
reverse(nxt.a+,nxt.a+i+);
int h1=hash1(nxt.a),h2=hash2(nxt.a);
if(h1==t1&&h2==t2){
printf("%d",cur.step+);
return ;
}
if(!vis1[h1]||!vis2[h2]){
vis1[h1]=;vis2[h2]=;
nxt.step=cur.step+;
q.push(nxt);
}
}
}
return ;
}
20分 裸搜
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define maxn 51
using namespace std;
int n,a[maxn];
struct node{
int w,id;
bool operator < (const node b)const{
return w<b.w;
}
}e[maxn];
int get(){
int res=;
for(int i=;i<=n;i++)
if(abs(a[i]-a[i-])!=)res++;
return res;
}
void dfs(int limit,int step){
int h=get();
if(!h&&a[]<a[]){
printf("%d",limit);
exit();
}
if(h+step>limit||step==limit)return;
for(int i=;i<=n;i++){
if(abs(a[i]-a[i+])!=){
reverse(a+,a+i+);
dfs(limit,step+);
reverse(a+,a+i+);
}
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&e[i].w),e[i].id=i;
sort(e+,e+n+);
for(int i=;i<=n;i++)a[e[i].id]=i;
a[]=-0x7f7f7f7f;a[n+]=0x7f7f7f7f;
for(int k=;;k++)dfs(k,);
}
100分 迭代加深搜索
洛谷P2534 [AHOI2012]铁盘整理的更多相关文章
- 洛谷 P2534 [AHOI2012]铁盘整理
P2534 [AHOI2012]铁盘整理 题目描述 输入输出格式 输入格式: 共两行.第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R.(1& ...
- BZOJ2824 AHOI2012 铁盘整理 【IDA*】
BZOJ2824 AHOI2012 铁盘整理 Description 在训练中,一些臂力训练器材是少不了的,小龙在练习的时候发现举重器械上的铁盘放置的非常混乱,并没有按照从轻到重的顺序摆放,这样非常不 ...
- BZOJ 2824: [AHOI2012]铁盘整理
BZOJ 2824: [AHOI2012]铁盘整理 标签(空格分隔): OI-BZOJ OI-搜索 Time Limit: 10 Sec Memory Limit: 128 MB Descriptio ...
- [AHOI2012]铁盘整理
题目描述 输入输出格式 输入格式: 共两行.第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R.(1<=R<=100) 输出格式: ...
- 【题解】洛谷P2532 [AHOI2012]树屋阶梯(卡特兰数+高精)
洛谷P2532:https://www.luogu.org/problemnew/show/P2532 思路 来自Sooke大佬的推导: https://www.luogu.org/blog/Sook ...
- (bzoj1337 || 洛谷P1742 最小圆覆盖 )|| (bzoj2823 || 洛谷P2533 [AHOI2012]信号塔)
bzoj1337 洛谷P1742 用随机增量法.讲解:https://blog.csdn.net/jokerwyt/article/details/79221345 设点集A的最小覆盖圆为g(A) 可 ...
- 洛谷p2370yyy2015c01的U盘题解
没什么特殊的想法 就是看自己很久没有更新关于题解类的文章了而已 (其实这是我好久之前做的, 只是把它从洛谷博客搬到了这里而已) 题目 首先分析题目要二分 他长成这个亚子太二分了 所以就要二分 最好是先 ...
- 洛谷P2532 [AHOI2012]树屋阶梯(Catalan数)
P2532 [AHOI2012]树屋阶梯 题目描述 输入输出格式 输入格式: 一个正整数N(1<=N<=500),表示阶梯的高度. 输出格式: 一个正整数,表示搭建方法的个数.(注:搭建方 ...
- 洛谷 P1103 书本整理(动规)
洛谷 P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发 ...
随机推荐
- hihocoder-1285 智力竞赛(区间dp)
智力竞赛 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi.小Ho还有被小Hi强拉来的小Z,准备组队参加一个智力竞赛.竞赛采用过关制,共计N个关卡.在第i个关卡中,小 ...
- Convolutional Neural Networks for Visual Recognition 4
Modeling one neuron 下面我们开始介绍神经网络,我们先从最简单的一个神经元的情况开始,一个简单的神经元包括输入,激励函数以及输出.如下图所示: 一个神经元类似一个线性分类器,如果激励 ...
- [原]NYOJ-大数阶乘-28
大学生程序代写 //http://acm.nyist.net/JudgeOnline/problem.php?pid=28 /*题目28题目信息运行结果本题排行讨论区大数阶乘 时间限制:3000 ms ...
- 树套树Day1线段树套平衡树bzoj3196
您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查 ...
- redisCheckMem脚本
最近维护的redis cluster需要扫描每个实例的内存使用率,首先我们需要获取实例已经使用的内存,获取实例的最大内存配额,两个值相比就能获取到内存使用比例. 实例的最大内存获取方法: $REDIS ...
- bzoj 1007: [HNOI2008]水平可见直线 半平面交
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=1007; 题解 其实就是求每条直线的上半部分的交 所以做裸半平面交即可 #include ...
- bzoj 1113 海报pla
Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值 ...
- CSS禁止鼠标事件---pointer-events:none
pointer-events:none顾名思意,就是鼠标事件拜拜的意思.元素应用了该CSS属性,链接啊,点击啊什么的都变成了“浮云牌酱油”.
- Gson小记
Gson过滤字段,只要在字段前面添加“transient”关键字即可:之前就是因为Channel字段序列化的时候导致了stack over异常.
- CCS V5 使用教程一: 安装激活与创建工程
CCS下载与安装 下载地址 Liscense下载地址 安装教程 创建工程 工程创建教程