P2534 [AHOI2012]铁盘整理

题目描述

输入输出格式

输入格式:

共两行。第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R。(1<=R<=100)

输出格式:

一个正整数,表示使铁盘从小到大有序需要的最少翻转次数。

输入输出样例

输入样例#1:

5
2 4 3 5 1

输出样例#1:

5

//第一种:使用string.h中的strrev函数,只用于字符串
#include <iostream>
#include <cstring>
using namespace std;
int main()
{  char s[]="hello";  strrev(s);  cout<<s<<endl;   return 0;
}  //第二种:使用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 0;
}   

反转操作

#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[2333333],vis2[1048577];
int hash1(int x[]){int res=1;for(int i=1;i<=n;i++)res=(res*103%mod1+x[i])*13%mod1;return res;
}
int hash2(int x[]){int res=1;for(int i=1;i<=n;i++)res=(res*117%mod2+x[i])*27%mod2;return res;
}
int main(){freopen("Cola.txt","r",stdin);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&cur.a[i]),t[i]=cur.a[i];sort(t+1,t+n+1);int t1=hash1(t),t2=hash2(t);if(hash1(cur.a)==t1&&hash2(cur.a)==t2){puts("0");return 0;}cur.step=0;q.push(cur);while(!q.empty()){cur=q.front();q.pop();for(int i=2;i<=n;i++){nxt=cur;reverse(nxt.a+1,nxt.a+i+1);int h1=hash1(nxt.a),h2=hash2(nxt.a);if(h1==t1&&h2==t2){printf("%d",cur.step+1);return 0;}if(!vis1[h1]||!vis2[h2]){vis1[h1]=1;vis2[h2]=1;nxt.step=cur.step+1;q.push(nxt);}}}return 0;
}

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=0;for(int i=2;i<=n;i++)if(abs(a[i]-a[i-1])!=1)res++;return res;
}
void dfs(int limit,int step){int h=get();if(!h&&a[1]<a[2]){printf("%d",limit);exit(0);}if(h+step>limit||step==limit)return;for(int i=2;i<=n;i++){if(abs(a[i]-a[i+1])!=1){reverse(a+1,a+i+1);dfs(limit,step+1);reverse(a+1,a+i+1);}}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&e[i].w),e[i].id=i;sort(e+1,e+n+1);for(int i=1;i<=n;i++)a[e[i].id]=i;a[0]=-0x7f7f7f7f;a[n+1]=0x7f7f7f7f;for(int k=0;;k++)dfs(k,0);
}

100分 迭代加深搜索

转载于:https://www.cnblogs.com/thmyl/p/7687749.html

洛谷P2534 [AHOI2012]铁盘整理相关推荐

  1. 洛谷 P2534 [AHOI2012]铁盘整理

    P2534 [AHOI2012]铁盘整理 题目描述 输入输出格式 输入格式: 共两行.第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R.(1& ...

  2. 洛谷 P2534 [AHOI2012]铁盘整理(IDA*(dfs+迭代加深+估值函数))

    题目链接:P2534 [AHOI2012]铁盘整理 题解:本篇为IDA*的应用,做这题前建议先做前一篇文章的题目:点这 这题中难在估值函数的确定,总的来说IDA*基本上格式都差不多,主要难在估值函数的 ...

  3. P2534 [AHOI2012]铁盘整理(IDA*)

    题目大意: 解题思路: 其实只要注意到,如果数字是连续的,那么第i层与第i+1层的高度差为1,而每次只能翻转1~k层,相当于只能改变第k层与第k+1层的差,即只能改变一个相邻差 IDA*步骤: 离散化 ...

  4. 二分答案——yyy2015c01 的 U 盘(洛谷 P2370)

    题目选自洛谷P2370 两种解法,01背包+排序,或是直接二分即可 写了二分最后只有40的分...刚好过了给的四个样例 哭辽~想了半天不知道哪里错了 题目背景 在 2020 年的某一天,我们的 yyy ...

  5. 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁

    这次分数还好.但全是搜索题还没上200就有点打击人了--[本狸才177QAQ 血色先锋队/血色敢死队 传送门:洛谷P1332 & 入门OJ P2259 Description 邪魔天国领主复活 ...

  6. 洛谷 AT763【感雨時刻の整理】

    题目描述 雨の降っていた時刻というのは.降水量と並んで重要です.今.ある 11 日の.雨が降っていた時刻に関するメモが見つかったので.これを整理して.雨の降っていた時刻を調べたいと思います. 整理は. ...

  7. 洛谷日报 2020年3月前索引

    2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https://www.luo ...

  8. 洛谷日报索引(2020、2019、2018)

    历年洛谷日报索引 2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https: ...

  9. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

最新文章

  1. javascript 手势缩放 旋转 拖动支持:hammer.js
  2. 独家|OpenCV1.8 使用XML和YAML文件实现文件的输入/输出
  3. 图深度学习:成功,挑战以及后面的路
  4. Android开发之单例模式初探
  5. php开发入门,PHP开发入门教程之面向对象
  6. yolov2移植到android,darknet(yolov2)移植到caffe框架
  7. 史上最丧心病狂的商品定价套路:如何从数学角度,榨干你身上的每一分钱
  8. gitlab mr wip 怎么弄成_基于GitLab的工作流程设计
  9. linux之dd命令
  10. 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法
  11. Skyline系列软件的安装和使用
  12. Win10 1903:美化鼠标指针
  13. 用Matplotlib画两张花里胡哨的图
  14. 5.2为每种类型的模块内聚举一个例子
  15. Android N for Developers(API概览)
  16. 身份证识别+人脸识别---“人证合一”查验系统
  17. 杭州旭航集团,申请纳斯达克IPO上市,募资9800万美元
  18. 2022骨传导蓝牙耳机哪个最专业、目前最好的骨传导耳机
  19. 导弹拦截(动规,贪心)
  20. Hibernate(9)_双向n对n

热门文章

  1. sklearn保存svm分类模型_机器学习100天-Day1601线性支持向量机分类
  2. 六年级计算机应用计划,六年级信息工作计划
  3. 关于小白(我)理解Spring的一些注解
  4. 如何让fragment每次都重新加载_带上税控在哪都能开票,如何重新安装开票软件?...
  5. mysql转openldap_用mysql作openldap的后台数据库
  6. 计算机二级最高分那个公式,计算机二级excel中常考公式及讲解[共24页].doc
  7. 小米蓝牙左右互联_小米真无线蓝牙耳机Air2评测:支持弹窗动画,半入耳设计全面升级...
  8. php 实时更新内容_PHP+Redis 有序集合实现 24 小时排行榜实时更新
  9. selenium拖动元素java_使用Java在Selenium WebDriver中聚焦元素的正确方法
  10. python程序是由一系列代码组成的_以下选项中,对程序的描述错误的是() (6.0分)_学小易找答案...