洛谷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 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]铁盘整理相关推荐
- 洛谷 P2534 [AHOI2012]铁盘整理
P2534 [AHOI2012]铁盘整理 题目描述 输入输出格式 输入格式: 共两行.第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R.(1& ...
- 洛谷 P2534 [AHOI2012]铁盘整理(IDA*(dfs+迭代加深+估值函数))
题目链接:P2534 [AHOI2012]铁盘整理 题解:本篇为IDA*的应用,做这题前建议先做前一篇文章的题目:点这 这题中难在估值函数的确定,总的来说IDA*基本上格式都差不多,主要难在估值函数的 ...
- P2534 [AHOI2012]铁盘整理(IDA*)
题目大意: 解题思路: 其实只要注意到,如果数字是连续的,那么第i层与第i+1层的高度差为1,而每次只能翻转1~k层,相当于只能改变第k层与第k+1层的差,即只能改变一个相邻差 IDA*步骤: 离散化 ...
- 二分答案——yyy2015c01 的 U 盘(洛谷 P2370)
题目选自洛谷P2370 两种解法,01背包+排序,或是直接二分即可 写了二分最后只有40的分...刚好过了给的四个样例 哭辽~想了半天不知道哪里错了 题目背景 在 2020 年的某一天,我们的 yyy ...
- 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁
这次分数还好.但全是搜索题还没上200就有点打击人了--[本狸才177QAQ 血色先锋队/血色敢死队 传送门:洛谷P1332 & 入门OJ P2259 Description 邪魔天国领主复活 ...
- 洛谷 AT763【感雨時刻の整理】
题目描述 雨の降っていた時刻というのは.降水量と並んで重要です.今.ある 11 日の.雨が降っていた時刻に関するメモが見つかったので.これを整理して.雨の降っていた時刻を調べたいと思います. 整理は. ...
- 洛谷日报 2020年3月前索引
2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https://www.luo ...
- 洛谷日报索引(2020、2019、2018)
历年洛谷日报索引 2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https: ...
- 洛谷--橙色百道DP总结
最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...
最新文章
- javascript 手势缩放 旋转 拖动支持:hammer.js
- 独家|OpenCV1.8 使用XML和YAML文件实现文件的输入/输出
- 图深度学习:成功,挑战以及后面的路
- Android开发之单例模式初探
- php开发入门,PHP开发入门教程之面向对象
- yolov2移植到android,darknet(yolov2)移植到caffe框架
- 史上最丧心病狂的商品定价套路:如何从数学角度,榨干你身上的每一分钱
- gitlab mr wip 怎么弄成_基于GitLab的工作流程设计
- linux之dd命令
- 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法
- Skyline系列软件的安装和使用
- Win10 1903:美化鼠标指针
- 用Matplotlib画两张花里胡哨的图
- 5.2为每种类型的模块内聚举一个例子
- Android N for Developers(API概览)
- 身份证识别+人脸识别---“人证合一”查验系统
- 杭州旭航集团,申请纳斯达克IPO上市,募资9800万美元
- 2022骨传导蓝牙耳机哪个最专业、目前最好的骨传导耳机
- 导弹拦截(动规,贪心)
- Hibernate(9)_双向n对n
热门文章
- sklearn保存svm分类模型_机器学习100天-Day1601线性支持向量机分类
- 六年级计算机应用计划,六年级信息工作计划
- 关于小白(我)理解Spring的一些注解
- 如何让fragment每次都重新加载_带上税控在哪都能开票,如何重新安装开票软件?...
- mysql转openldap_用mysql作openldap的后台数据库
- 计算机二级最高分那个公式,计算机二级excel中常考公式及讲解[共24页].doc
- 小米蓝牙左右互联_小米真无线蓝牙耳机Air2评测:支持弹窗动画,半入耳设计全面升级...
- php 实时更新内容_PHP+Redis 有序集合实现 24 小时排行榜实时更新
- selenium拖动元素java_使用Java在Selenium WebDriver中聚焦元素的正确方法
- python程序是由一系列代码组成的_以下选项中,对程序的描述错误的是() (6.0分)_学小易找答案...