uva 11212 UVa11212 Editing a Book

Grok 3国内怎么用?超详细使用指南+实用指令模板 主要是用于快速分析学术论文,提取关键信息,总结研究成果。Analyze the following research paper: [粘贴或上传论文内容]1. Extract key findings, methodologies, and conclusions. (提取主要发现、方法和结论。2. Identify statistical significance and data points. (识别统计显著性和数据点。 阅读详情

此题题目意思很简单:就是问最少的可以剪切和粘贴的次数。


但是实现起来确实是很麻烦,主要是思路不清晰

此题加深了我对迭代加深搜索的理解  同时其中剪枝是非常难以想到的。

借用刘汝佳先生书上所说:此题采用迭代加深搜索,下面是刘汝佳先生的代码

<span style="font-size: 13.3333339691162px; font-family: Arial, Helvetica, sans-serif;">// UVa11212 Editing a Book</span>
// Rujia Liu
// This implementation is not very fast, but easy to understand
#include<cstdio>
#include<cstring>
using namespace std;

const int maxn = 9;
int n, a[maxn];

bool is_sorted() {
  for(int i = 0; i < n-1; i++)
    if(a[i] >= a[i+1]) return false;
  return true;
}

// the number of integers with incorrect successor
int h() {
  int cnt = 0;
  for(int i = 0; i < n-1; i++)
    if(a[i]+1 != a[i+1]) cnt++;
  if(a[n-1] != n) cnt++;
  return cnt;
}

bool dfs(int d, int maxd) {
  if(d*3 + h() > maxd*3) return false;
  if(is_sorted()) return true;

  int b[maxn], olda[maxn];
  memcpy(olda, a, sizeof(a));
  for(int i = 0; i < n; i++)
   for(int j = i; j < n; j++) {
     // cut and paste  are <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">the difficult  part.</span>
     int cnt = 0;
     for(int k = 0; k < n; k++)
       if(k < i || k > j) b[cnt++] = a[k];

     // insert before position k
     for(int k = 0; k <= cnt; k++) {
       int cnt2 = 0;
       for(int p = 0; p < k; p++) a[cnt2++] = b[p];
       for(int p = i; p <= j; p++) a[cnt2++] = olda[p];
       for(int p = k; p < cnt; p++) a[cnt2++] = b[p];

       if(dfs(d+1, maxd)) return true;
       memcpy(a, olda, sizeof(a));
     }
   }
  return false;
}

int solve() {
  if(is_sorted()) return 0;
  int max_ans = 5; // after experiments, we found ans <= 5 for n <= 9
  for(int maxd = 1; maxd < max_ans; maxd++)
    if(dfs(0, maxd)) return maxd;
  return max_ans;
}

int main() {
  int kase = 0;
  while(scanf("%d", &n) == 1 && n) {
    for(int i = 0; i < n; i++) scanf("%d", &a[i]);
    printf("Case %d: %d\n", ++kase, solve());
  }
  return 0;
}


电源芯片TPS54560典型应用电路及设计详解 TPS54560 是一款配有集成型高侧 MOSFET 的 60V、5A DC-DC转换器,输入电压范围7-60V,输出电压可通过外部反馈电阻设置成略低于输入电压的任意值。**所以,**R5=31.25KΩ、R6:10KΩ(常用值)时,即可设置输出电压为 3.3V。**所以,**R5=140KΩ、R6:10KΩ(常用值)时,即可设置输出电压为12V。设计 TPS54560 的输出电压时,主要通过外部反馈电阻网络来设置输出电压。因此,输出 3.3V ,输入电压24V时推荐的电感值为 8µH 至 10µH。 阅读详情

相关推荐

MATLAB演示元胞自动机算法

一、元胞自动机理论 元胞自动机与格子理论是一个非常好的模型,许多复杂的问题都可以通过它来建立模型,下面就简要介绍一下。 元胞自动机 实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。 元胞 元胞又可称为单元、细胞,是元胞自动机的最基本的组成部分。 元胞具有以下特点: 元胞自动机最基本的单元。 元胞有记忆贮存状态的功...

frange zone 2万+

UVa_11212(迭代加深搜索)

#include<iostream> #include<cstring> using namespace std; const int maxn = 400000; bool Vis[maxn]; int n; int D[10]; int kangtuo(int A[9]) { int t = 0; for (int i = 0; i<n; i++) { i

FollowWindD 364

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5808

UVA - 11212(IDA*)

链接:UVA - 11212 题意:给出一个数字为1~n的某种排列,只能用剪切和粘贴操作,求将其变得有序的最小操作次数。 题解:用IDA*,枚举上界进行搜索,并找出剪枝所用的乐观函数h。此题的乐观函数为,g( )  #include using namespace std; const int maxn = 10; int n, a[maxn]; bool judge() {

鬼沐冢 385

fsQCA实战:从数据校准到结果解读的完整流程(附R代码示例)

本文提供了一份完整的模糊集定性比较分析(fsQCA)实战指南,详细阐述了从数据校准、必要条件分析、真值表构建到布尔最小化与结果解读的全流程。通过R语言代码示例,帮助研究者掌握如何将理论转化为可操作的分析步骤,并产出稳健的中间解,以揭示导致结果的复杂条件组合。

d6e7f8g9h的博客 1173

手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

数字IC后端设计培训教程之手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

weixin_37584728的博客 2938

UVA 11212 Editing a Book(IDA*)

【题目链接】UVA-11212 【题意】给一串长度为n的数字序列(n 【样例】 Sample Input 6 2 4 1 5 3 6 5 3 4 5 1 2 0 Sample Output Case 1: 2 Case 2: 1 【分析】        做的第一道IDA*。        当然应该考虑一下为什么不得不走向IDA*。        首先考虑单纯的dfs:

No Rain,No L'Arc~en~Ciel 390

基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现

本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。

YOLO 705

UVA11212 Editing a Book(编辑书稿)

UVA11212 Editing a Book 题目链接 这道题有一定的难度,参考了一些大佬的代码,在这里写一篇题解巩固一下。 问题分析 首先,本题采用IDA*算法求解,参考紫皮书上的解释,这道题启发函数的求解是解题的一个关键。 其次是三个加速的策略: 1.每次只剪切一段连续的数字。 2.假设剪切片段的第一个数字为a,最后一个数字为b,这个片段要么粘贴到a-1下一个位置,要么粘贴到b+1的前一个位置。 3.已经排好序的数字不要分开剪切,始终看做一个整体。 (以上解释纯属搬书,下面结合代码具体分析) 最后,启

polarday的博客 415

【微信小程序】微信小程序 manifest.json 配置 ES6 转 ES5 开关:3步让你的代码兼容性更强

ES6(ECMAScript 6)是 JavaScript 的最新标准,引入了许多新的语法和特性,如箭头函数、模板字符串、解构赋值等。然而,不是所有的环境都支持 ES6,特别是旧版本的浏览器和一些特定的运行环境。为了确保代码的兼容性,我们需要将 ES6 代码转换为 ES5 代码。通过本文的详细讲解,相信你已经学会了如何在文件中配置微信小程序的 ES6 转 ES5 开关。这个小小的配置步骤能够显著提高代码的兼容性和稳定性。如果你有任何问题或需要进一步的帮助,欢迎随时留言交流。

java专栏 1361

【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。

渗透之路,攻防之间皆学问 6710

IDA*——迭代加深搜索 (UVa11212)

IDA* 迭代加深搜索:从小到大枚举搜索深度上限maxd,每次执行只考虑深度不超过maxd的节点。只要解的深度有限,能够快速找到最优解 其实设置深度上限就是为了剪枝,有的情况下每种情况都有上万个分支,最差情况下要得到最优解会非常慢,但是这些分支又是不可避免的,所以我们可以通过限制向下迭代的层数,逐渐放宽搜索区域知道找到结果 那么IDA*问题的关键就是如何限制迭代的层数,换种说法是至少还要多少步才能...

Happig的博客 393

YOLOv12改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

《YOLOv12高效涨点改进专栏》提供500+创新改进方案,涵盖卷积、主干网络、注意力机制等模块优化,适用于检测、分割等任务。改进点来自顶会论文和个人经验,支持多种模型版本和任务场景。专栏包含详细教程、数据集增强、性能评估工具等,帮助科研人员快速实现模型优化和论文发表。提供完整运行项目和环境配置指导,适合计算机及相关专业研究人员使用,持续更新保障长期科研需求。

Ai缝合怪、助力小伙伴高效发论文 2307

UVa11212 Editing a Book

本文介绍了UVa11212 Editing a Book题目,要求通过剪切粘贴操作将文章段落排列成升序。题目分析指出可使用IDA*算法求解,其中关键启发函数考虑后继不正确的数字个数h,证明每次操作h最多减少3。给出了两个加速策略:避免破坏已连续片段,以及优化粘贴位置选择。代码实现了该算法,通过迭代加深搜索找到最少操作次数。对于n≤9的情况,最多需要8步即可完成。

hlhgzx的博客 664

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UVA 11212 Editing a Book 【IDA*】

题目链接 题意 给一个n个数的全排列,可以进行将任意连续的一段截下来插入到任意位置的操作,问至少需要多少步这样的操作能够是序列变成递增的序列。 分析 题中n的最大值为9,状态数为9的阶乘,不过1e6左右,看似可以直接BFS。但是每一种状态后的决策数量太多了(任意位置的任意长度再插入到任意位置) 考虑到n个数的全排列,要使之恢复递增的顺序,最多移动n-...

a18235146924的博客 118

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Editing a Book UVA - 11212

题意:有一篇由n(2&lt;=n&lt;=9)个自然段组成的文章,希望将它们排列成1,2......n。可以用剪切和粘贴快捷键来完成任务。每次可以剪切一段连续的自然段,粘贴时按照顺序粘贴。注意粘贴板只有一个,所以不能连续剪切两次,只能剪切和粘贴交替。例如为了将2,4,1,5,3,6变为升序,可以剪切1将其放到2前,然后剪切3放到4前,。再如对于排列3,4,5,1,2,只需一次剪切和一次粘贴即可--...

沐妖的博客 195

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

迭代加深搜索算法总结 + Editing a Book UVa11212题解

迭代加深搜索算法: 对于可以用回溯法解决,但是解答树结点数大的恐怖的问题的一种解决办法,有的问题甚至用bfs连一层节点都遍历不完就超时了。具体方法就是依次枚举搜索层数,从1到一个上限。 结构: int solve() {   for (int maxd = 1; maxd < MAXN; maxd++) {     if (dfs(0, maxd)) retu...

weixin_34318272的博客 187

UVa11212 编辑书稿(Editing a book)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=841&page=show_problem&problem=2153 题意:你有一篇n(2≤n≤9)个自然段组成的文章,希望将它们排列成1,2,…,n。可以用Ctrl+X(剪切)和Ctrl+V(粘贴)快捷键来完成任务。每次

Frade's Blog 2555

UVa 11212 Editing a Book

黑书P207 例题 IDA* 搜索,估价函数设计得很经典。 #include #include #include using namespace std; class Board { public: int a[16]; int h; int n; bool readIn() { int i; scanf("%d",

仰望圣光的plusplus7 2068

编辑书稿(Editing a Book, UVa 11212)迭代加深搜索

题目:https://vjudge.net/problem/UVA-11212 分析:本题可以用IDA*算法求解。不难发现n≤9时最多只需要8步,因此深度上限为8。IDA*的关键在于启发函数。考虑后继不正确的数字个数h,可以证明每次剪切时h最多减少3,因此当3d+h&gt;3maxd时可以剪枝,其中d为当前深度,maxd为深度限制(3)。如何证明每次剪切时h最多减少3呢? 如图7-19所示...

Nicolas的博客 533

uva 11212 Editing a Book

题目:Editing a Book 题意:有一本有n段的书,段的编号为1~n,段的顺序是乱的。有“剪切”和“粘贴”的两种操作,问至少要用多少组剪切和粘贴才能把顺序调整正确。 思路: IDA*。 估价函数为:h>3*(maxd-d)。h代表前后不匹配 (如果a[i]-a[i-1]==1,那么i与i-1匹配) 的段的个数。由于每次操作h最多加大3 (如书上图,假设a的最后一个数

iwi 424

UVA11212 Editing a Book (IDA*)

对于可以用回溯法求解但解答树的深度没有明显上限的题目,可以考虑用迭代加深搜索(iterative deepening)。如果设计出以一个乐观估价函数,预测从当前结点至少还要扩展基层结点才能得到解,则迭代加神搜索编程了IDA*算法。——《算法竞赛入门经典》p207 讲真看书里第一个埃及分数问题,看得我是一脸懵逼。感觉好像是这么个道理,但是没懂到底什么意思。接着就跳过先看了下面那道例题,也就是Edi

JasonWu的博客 296

UVa OJ 11212 - Editing a Book

UVa OJ 11212 - Editing a Book(IDA*)Problem  你有一篇由n(2≤n≤9)个自然段组成的文章,希望将它们排列成1, 2,…, n。可以用 Ctrl+X(剪切)和Ctrl+V(粘贴)快捷键来完成任务。每次可以剪切一段连续的自然段,粘贴时按照顺序粘贴。注意,剪贴板只有一个,所以不能连续剪切两次,只能剪切和粘贴交替。   例如,为了将{2,4,1,5,3,6}变为

Yuuki_Dach's Blog 437

Editing a Book(UVA - 11212)

实际上我的代码还有一些地方可以优化,比如对同一个Node指针用shrink用了很多次,可以改成一次。这题我用迭代加深搜索(iterative deepening)来做的,今天刚学的这玩意,现学现用。顺带一提,虽然说是剪切之后粘贴,但是实际上一次剪切+一次粘贴 = 两个相邻的片段交换位置。我的Node结点把连成串的数字变成一个整体,这样在搜索的时候就不会让原来的链变得更乱了。当Node结点只有一个的时候,说明只有一个串了,答案出来了。因为h一次最大减少3个,所以可以根据这个剪枝。maxd:最大的搜索深度。

Fool256353的博客 253

[算法竞赛入门经典] UVa11212 Editing a Book 完全注释

1. d为当前深度,maxd为深度限制,因为每次剪切时h最多减少3,所以 时剪枝 的意思是消除h个后继不正确的数字,至少需要步 2. 为何h每次剪切最多减少3 // https://github.com/aoapc-book/aoapc-bac2nd/blob/master/ch7/UVa11212.cpp // UVa11212 Editing a Book // Rujia...

Lord_sh的博客 356
上一篇: 算法竞赛入门经典--第7章,迭代加深搜索---埃及分数
下一篇: uva 12325 - Zombie's Treasure Chest
LuckyqXd
博客等级 码龄12年 2粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值