wing是什么_nativepage原理

wing是什么_nativepage原理给定 n 本书,编号为 1∼n。在初始状态下,书是任意排列的。在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。我们的目标状态是把书按照 1∼n 的顺序依次排列。求最少需要多少次操作。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据包含两行,第一行为整数 n,表示书的数量。第二行为 n 个整数,表示 1∼n 的一种任意排列。同行数之间用空格隔开。输出格式每组数据输出一个最少操作次数。如果最少操作次数大于或等于 5 次,则输出 5 or more。每个

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定 n 本书,编号为 1∼n。

在初始状态下,书是任意排列的。

在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。

我们的目标状态是把书按照 1∼n 的顺序依次排列。

求最少需要多少次操作。

输入格式
第一行包含整数 T,表示共有 T 组测试数据。

每组数据包含两行,第一行为整数 n,表示书的数量。

第二行为 n 个整数,表示 1∼n 的一种任意排列。

同行数之间用空格隔开。

输出格式
每组数据输出一个最少操作次数。

如果最少操作次数大于或等于 5 次,则输出 5 or more。

每个结果占一行。

数据范围
1≤n≤15

输入样例:
3
6
1 3 4 6 2 5
5
5 4 3 2 1
10
6 8 5 3 4 7 2 9 1 10
输出样例:
2
3
5 or more

题解
IDA*,每一次变动都会改变3个数的后继,所以我们可以先统计每个数的后继,然后看看当前状态是否能达到要求。

  1. IDA*
#include<bits/stdc++.h>
using namespace std;
int n;
const int N = 1e2;
string t;
int f(){ 

int tot = 0;
for(int i = 1;i < n;i ++)
if(t[i - 1] != t[i] - 1)tot ++;
return (tot + 2) / 3;
}
bool IDAstar(int u,int maxn){ 

if(f() > maxn - u)return false;
if(u == maxn){ 

return true;
}
string temp = t;
for(int len = 1;len <= n - 1;len ++){ 

for(int l = 0;l <= n - len;l ++){ 

int r = l + len - 1;
string substr = temp.substr(l,r - l + 1);
for(int k = r + 1;k < n;k ++){ 

t.insert(k + 1,substr);
t.erase(l,r - l + 1);
if(IDAstar(u + 1,maxn))return true;
t = temp;
}
}
}
return false;
}
int a[N];
int main(){ 

int T;
cin>>T;
while(T --){ 

cin>>n;
t = "";
for(int i = 0;i < n;i ++){ 

cin>>a[i];
t += a[i];
}
int maxn = 0;
while(maxn <= 4 && IDAstar(0,maxn) == false ){ 

maxn ++;
}
if(maxn == 5){ 

cout<<"5 or more"<<endl;
}
else cout<<maxn<<endl;
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168655.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MySQL慢查询日志分析详解[通俗易懂]

    MySQL慢查询日志分析详解[通俗易懂]MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢…

    2022年10月12日
  • Flowable数据库

    Flowable数据库Flowable数据表清单:Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。ACT_RE_*:’RE’代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。ACT_RU_*:’RU’代表runtime。这些表存储运行时信息,例如流程实例(proces…

  • 【C++】0314算法阿里笔试题「建议收藏」

    【C++】0314算法阿里笔试题「建议收藏」一、题目二、自己的dfs的题解#include<bits/stdc++.h>usingnamespacestd;intres3=INT_MAX;inttransfet(vector<string>&tmp){intsum=0;for(auto&t:tmp){sum+=stoi(t);}returnsum;}voiddfs(stringstr,vector&l

  • webstorm激活 3月最新注册码

    webstorm激活 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • android 获取屏幕分辨率_安卓系统分辨率设置

    android 获取屏幕分辨率_安卓系统分辨率设置在Activity中  //ME722测试480*854  竖屏Displaydisplay=this.getWindowManager().getDefaultDisplay();intnHeight=display.getHeight();     //569intnWidth=display.getWidth();       //320Displa

  • emwin实体按键_qt指示灯控件

    emwin实体按键_qt指示灯控件分享一个emWin软键盘控件[复制链接]本帖最后由glcd于2016-6-2716:30编辑花了两天时间做了个emWin软键盘控件,并命名为ButtonSKB控件:image001.png(20.29KB,下载次数:0)2016-6-2716:19上传前言:(1)ButtonSKB已经是1个控件,即可以像使用Button控件一样使用ButtonSKB。(2)ButtonSKB…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号