uva 11212 Editing a Book
https://vjudge.net/problem/UVA-11212
题意:
n个数的排列,每次操作可以移动连续的一段
最问少移动多少次使这n个数升序排列
IDA*
估价函数:
考虑后即不正确的数字个数sum
每次移动最多使sum减少3
所以如果剩余递归层数*3<sum ,剪枝
#include<cstdio> #include<cstring> using namespace std; int n,T,maxd; bool stop; bool check(int *a) {bool p=true;for(int i=1;i<=n;i++)if(a[i]!=i) { p=false; break; }return p; } void dfs(int now,int *a) {if(stop) return;if(now==maxd+1) { if(check(a)) stop=true; return;}int sum=0;for(int i=1;i<n;i++) if(a[i+1]!=a[i]+1) sum++;if((maxd-now+1)*3<sum) return;int tmp[10];memcpy(tmp,a,sizeof(*tmp)*(n+1));for(int len=1;len<n;len++)for(int s=2;s+len-1<=n;s++)for(int pos=1;pos<s;pos++){for(int i=1;i<=len;i++) a[pos+i-1]=tmp[s+i-1];for(int i=pos,j=1;i<s;i++,j++) a[pos+len-1+j]=tmp[i];dfs(now+1,a);memcpy(a,tmp,sizeof(*a)*(n+1)); } } int main() {int a[10]; while(scanf("%d",&n)==1){if(!n) return 0;T++; bool ok=true; stop=false;for(int i=1;i<=n;i++) {scanf("%d",&a[i]);if(a[i]<a[i-1]) ok=false;}if(ok) { printf("Case %d: 0\n",T); continue; }for(maxd=1;maxd<=n;maxd++){dfs(1,a);if(stop) { printf("Case %d: %d\n",T,maxd); break; }}} }
转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7282164.html
uva 11212 Editing a Book相关推荐
- 紫书搜索 例题7-10 UVA - 11212 Editing a Book 迭代加深搜索 IDA*
题目链接: https://vjudge.net/problem/UVA-11212 题意: 题解: IDA*,每次改变深度上限去剪枝 代码: 1 #include <bits/stdc++.h ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- ajax如何做到异步交互,1.ajax简单实现异步交互
效果:点击获取信息 testAjax.jsp: pageEncoding="UTF-8"%> Insert title here function getName(){ va ...
- UVA 10115 Automatic Editing (字符串的替换和查找)
分析:水题,熟悉字符串的find和replace函数便可轻易解决 好久每一1A的题了,UVA的格式要求真是醉了,每次都得调试半天格式 #include <cstdio> #include ...
- UVA 10115 Automatic Editing
字符串函数的应用. # include <cstdio> # include <cstring># define RULESN 10 + 5 # define MAXLEN 8 ...
- UVa 10115 - Automatic Editing
题目:给你一些字符串的替换关系,以及一个句子.按顺序替换,输出最后结果. 分析:字符串.按照替换顺序依次替换(这个替换用过之后,就不再使用),每个替换可能出现多次. 这里注意,如果当前串中有多个可被当 ...
- [搜索]UVa 129 困难的串
题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...
- uva 401.Palindromes
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- Uva 3767 Dynamic len(set(a[L:R])) 树套树
Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...
最新文章
- 再说TCP神奇的40ms
- 基于AFNetworking3.0网络封装
- vuex中的getters
- css的input文本框的 propertychange、focus、blur
- my batis plus 小数没有0_Excel中的数据去掉小数点,教你3个函数解决!
- 对二进制文件的操作(c++ 程序设计 by 谭浩强 课本实例)
- Uva 11054 - Wine trading in Gergovia(模拟)
- alter table 加多个字段_多个单列索引和联合索引的区别详解
- 如何显示或隐藏Mac电脑右上角的声音图标
- fg、bg、jobs、、nohup、ctrl + z命令
- ubuntu修改IP后无法正常上网的解决
- win10系统如何配置web服务器,如何在windows10下搭建web服务器
- 汇编语言期末复习总结
- 一个更高效的RACK机制
- 设计模式——Revealing Module(揭示模块)模式
- qchart实现图片缩放 qt_Qt图形图像开发曲线图表模块QChart库缩放/平移详细方法与实例...
- vue IE兼容性问题汇总
- QQ推广,QQ在线代码
- 《英语语法新思维 基础版2》读书笔记(一)
- 魔域手游安卓修改服务器地址,魔域互通端游手游架设
热门文章
- 双机热备+Win2003下集群案例
- Error: Cannot find module 'babel-runtime/regenerator'
- leetcode 839 Similar String Groups
- 当谈论设备指纹时,我们到底在说什么?(转)
- codevs 2639 约会计划
- bzoj 4602: [Sdoi2016]齿轮
- Centos7源码安装mysql及读写分离,互为主从
- 转:人气资源大集合~~~2014年12月
- TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子)
- 关于c++类中的指针成员问题