UVA 11925 Generating Permutations

如何运用好DeepSeek为自己服务:智能增强的范式革命 || 目录 1.1 认知增强的三次浪潮1.2 DeepSeek认知增强模型1.3 人机认知耦合协议1.4 认知增强的数学基础。 阅读详情

构造法吧,类似冒泡排序,当队首是n的时候特判不换前两个位置了。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <list>
#include <vector>
using namespace std;
const int INF = 0x7fffffff;
const int maxn = 300+5;
int n, a[maxn];

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

void change() {
    int t = a[n-1];
    for(int i = n - 1; i >= 0; --i)
        a[i] = a[i-1];
    a[0] = t;
}

int main() {
    while(scanf("%d", &n) != EOF && n) {
        vector<int> ans;
        for(int i = 0; i < n; ++i)
            scanf("%d", &a[i]);
        while(!is()) {
            if(a[0] != n && a[0] > a[1]) {
                swap(a[0], a[1]);
                ans.push_back(1);
            }
            if(is()) break;
            change();
            ans.push_back(2);
        }
        for(int i = ans.size() - 1; i >= 0; --i)
            printf("%d", ans[i]);
        printf("\n");
    }
    return 0;
}


5G MBS(组播广播服务)深度解析:从标准架构到商用实践 阅读详情

相关推荐

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

UVa:11925 Generating Permutations

题意:由一个排列,给两种操作(1,交换头两个数字;2,将第一个数字放到最后)。问从由一个升序原始序列1,2,3...n变成给定排列的操作序列是什么? 思路:注意题意,不要搞错了,是从123...变成给定排列,而不是给的排列变成123..这样。显然从给定的变成有序状态比较好做,所以可以逆向思考。操作1不变,操作2等价于将尾部数字放到头部,这样最后只需要逆序输出操作序列即可。具体做法用操作1每次维护

Fighting 1510

双目相机立体匹配算法概述(含Python代码)

立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。

m0_59257547的博客 8292

Generating Permutations UVA - 11925

题目传送门题意:这个题意紫书描述出了一些问题,题意是给你两种操作,让你从原来的严格升序列变成现在的序列。 操作一:交换最前面的两个数字。 操作二:把最后一个数字放到最前面。思路:这个题要逆向思维,然后就可以用冒泡的思想。但是一开始这个样子一直都是死循环,后来发现要把首位是n的情况特判。#include <algorithm> #include <cmath> #include <cstdio>

且听风吟 404

银河麒麟V10系统下,手把手解决Ollama安装报错‘GLIBCXX_3.4.25 not found’

本文详细介绍了在银河麒麟V10系统下解决Ollama安装报错‘GLIBCXX_3.4.25 not found’的实战指南。通过隔离编译新版libstdc++、环境变量引导和服务化封装等安全方案,确保在不破坏系统稳定性的前提下顺利运行Ollama,适用于国产操作系统与AI工具的兼容性需求。

weixin_42556197的博客 484

【VisualStdio】手把手教你做一个上位机(1)控件设计布局

网上有很多形形色色的制作上位机教程,有些写的挺好的,但是过于单调。

m0_73409202的博客 5437

UVa 11925 - Generating Permutations(构造法)

给出一个1到n的排列,给出操作顺序,使升序排列能变为所给排列。 书上的表述又出错了,导致WA了一次。倒着从所给排列变回升序排列,然后倒着打印解。当前两个已经是升序,就把最后一个拿到前面,否则交换之后再拿。 感觉只要不是求最少步解的题,都可以用构造法转化成类似方法求解。

wcr1996的专栏 2652

C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

本文主要介绍Linux和Windows下使用C语言获取各种硬件信息,包括CPU序列号、硬盘序列号、网卡信息(包括网卡名字、IP地址、MAC地址、网卡是否插入网线等)。

叶落花枯的博客 9379

uva 11925——Generating Permutations

题意:给定一个1-n的排列,用不超过2*n2的操作把他变成升序。每次操作只有两种,一种是交换前两个元素,另外一种是把最后一个元素放到最后一位。 思路:贪心。用双端队列来保存数据,每次当v[0]>v[1]&&v[0]!=n时用交换前两个的策略把当前排好,否则就放后面等待被排。 code:#include #include #include #include #includ

坚持不懈 579

【定位教程2----旋转中心标定之方法一】

【定位教程2----旋转中心标定之方法一】

Quintin 3万+

反爬虫:POST 请求参数中 Sign 的加密机制详解,并设计带 Sign 校验的网站

本文介绍了API请求中sign签名的生成原理及实现方法。sign是通过对请求参数加密生成的一串字符串,用于验证请求合法性,防止参数篡改、重放攻击和伪造请求。其生成步骤包括参数排序、拼接字符串、加盐和哈希加密。文章还演示了如何在FastAPI后端实现带sign验证的新闻网站,包括参数校验、时间戳验证和签名比对等安全措施,有效提升API安全性,增加爬虫逆向难度。

数据知道的博客 4077

UVA - 11925 Generating Permutations 推理

题目大意:这题的题目是错的,他的第二个操作是把最后一个调到第一个,然后输出时要逆序输出解题思路:类似冒泡排序法。先如果第一个是n的话,就调后面的到前面来,然后进行比较,取最大的放前面,这下下一次n到前面的时候,n-1就在n的后面了。#include<cstdio> #include<vector> #include<deque> #define maxn 310 using namespace st

静静地码 951

【PINN物理信息网络】基于PINN物理信息网络求解泊松方程(python)

【PINN物理信息网络】基于PINN物理信息网络求解泊松方程(python)

k8291121的博客 2812

UVa 11925 Generating Permutations

本文提出一种解决排列变换问题的方法,通过两种操作将初始排列转换为目标排列。采用逆向思维,从目标排列出发,定义逆向操作规则:交换逆序的前两个元素或将末位元素移到首位,记录操作序列后反转得到解。算法保证在有限步数内收敛,复杂度为O(n³),满足题目长度限制。该方法实现简单可靠,通过双端队列高效处理两端操作。

寂静山林 324

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

UVa 11925 - Generating Permutations

这题用了冒泡排序的思想,不过紫书上的描述有误,建议参考原题。 #include using namespace std; deque a; vector res; bool is_order(){ for (int i = 1; i != a.size(); ++i) if (a[i] < a[i-1]) return false; return true; } int ma

爆米 928

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

uva11925 Generating Permutations

逆序做,逆序输出 紫书上的描述有点问题 感觉很经典 ans.push_back(2); a.insert(a.begin(),a[n-1]); a.erase(a.end()-1); a.push_back(k);vector 的操作 没有证明这样做的复杂度要求... #include<cstdio>...

dengdouweng1282的博客 149

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

UVA11925-Generating Permutations(贪心)

Problem UVA11925-Generating Permutations Accept: 214 Submit:1429Time Limit: 1000 mSec Problem Description A permutation on the integers from 1 to n is, simply put, a particular rearrangement o...

weixin_30627341的博客 144

习题8-7 生成排列(Generating Permutations, UVa11925)

思路: 冒泡排序的思想。 题目要求从123 -> 到213,可以转换一下 从无序到有序可以用冒泡解决 123 -> 213, 213变为123则123->213,同理123 -> 231等价于312 -> 123。 注意处理多余的2操作即可。#include #include #include #include #include #include #include #incl

%%% 366

UVA 11925 Generating Permutations (贪心)

题意:给出一个排列,有两种操作1.交换前两个 2.将第一个数移动到最后,通过不超过2*n^2次操作使得一个升序的排列变成所给排列(紫书题意有误) 分析:逆向来做,通过操作使得所给序列变为生序,对于操作1不用改变,对于操作2可以将后面的数拿到前面来,最后逆向输出操作序列。 代码: #include &lt;iostream&gt; #include &lt;cstdio&gt; #inclu...

Insist_77的博客 292

UVA 11925 Generating Permutations——构造

问如何把给定123.。。n通过两个操作变成给定序列,首先逆向思考一下,从给定序列变成123.。。n比较简单,同时第二个操作变成从尾拿到首,然后根据排序的思想,比较前两个,若是逆序则交换,然后把最后一个拿到第一个重复这个过程,直到序列为正序,注意如果第一个是n第二个是1则不交换,只有这一个特判。#include &lt;cstdio&gt; #include &lt;cstring&gt; #inc...

hao_zong_yin的博客 420

UVA 11925 Generating Permutations 逆向思维

#include #include #include #include #include #include #include using namespace std; #define all(x) (x).begin(), (x).end() #define for0(a, n) for (int (a) = 0; (a) < (n); (a)++) #define for1(a, n) for

便纵有千种风情 564

习题 8-7 生成排列(Generating Permutations,UVa11925)

原题链接:https://vjudge.net/problem/UVA-11925 分类:构造法 备注:思维题 给一个数字n,和一个长度为n的排列,求如何操作使得1,2,…,n变成给定的排列。操作1为把前两个数交换位置,操作2为把第一个数放到最后。 逆向操作,即把操作2改为把最后一个数放到前面,从给定的序列变成1,2,…,n的序列。 按照一般想法,小的数在大的数前面,如果前两个数,前者更大则要交换位置,否则把尾部的数放到头部,除非第一个数是n的时候不换位置,不然可能死循环。 #include<bits

TK_wang_的博客 241

UVA11925 生成排列 Generating Permutations

转换成将原排列装换成有序排列,最后倒着输出操作。 考虑操作的必然性,每次两个操作选一个,如果第一个元素大于第二个,就交换,否则将最后的元素拿到最前面。 考虑边界,当第一个元素为n时必须将最后的元素拿到最前面。 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int a[600050],n,pos,change[180.

gyp0205的博客 212

Uva 11925 Generating Permutations

Thinking about it:   要求是从1~n的一个序列,通过题目给的两种方式,变为要求的序列。   如果如果反过来,是将目标序列排序变成生序序列的话,那么可以发现这种排序方式很像冒泡排序。例如 4 2 1 3 的基本思路就是 先将 3 放到 4 前面 得到 3 4 2 1 ,再将2放到3前面,得到 2 3 4 1 , 最后就是将 1 放到 2 前面 得到 1 2 3 ...

weixin_30852451的博客 100

UVA 11925 - Generating Permutations

这道题要反方向思考,把题中给的序列转为升序序列,运用冒泡排序,但要注意特殊情况,当序列中的第二个数字为1时,直接把数字从序列尾放到序列头。#include #include #include #include using namespace std; deque num; vector ans; int n; bool judge() { for(int i = 1; i <

L. 337
上一篇: UVA 12627 - Erratic Expansion
下一篇: UVA 1153 - Keep the Customer Satisfied
THE___BEST
博客等级 码龄12年 10粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值