题目传送门

题意:

给你n和k,你每次能交换n的两个位,问最多k次后的最小和最大值

思路:

考虑到n到1e9,所以可以用全排列来暴力,但是我们不能全排列之前的数位,

因为n中的位数可能相等,那样很难计算交换次数,因此我们只能全排列下标

然后我们要怎样计算每次排列的交换次数,这里用到了循环节

比如:0 1 2 3 4    然后2和3交换

0 1 3 2 4   那么a[2]=3;a[3]=2;这里就存在循环

这里就可以用来处理次数

代码:

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int T;
int n,k;
char s[];
int a[];
int vis[];
int len; bool check()//检查次数
{
for(int i=;i<len;i++) vis[i]=;
int ans=;
for(int i=;i<len;i++)
{
if(vis[i]) continue;
int cnt=;
while(vis[i]==)
{
cnt++;
vis[i]=;
i=a[i];
}
ans+=cnt-;
if(ans>k) return false;
}
return true;
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s %d",&s,&k);
len=strlen(s);
for(int i=;i<len;i++)
a[i]=i;
int minn=INF,maxn=;
do{
if(s[a[]]!=''&&check())//首位不为0
{
int ans=;
for(int i=;i<len;i++)
{
ans=ans*+s[a[i]]-'';
}
minn=min(minn,ans);
maxn=max(maxn,ans);
}
}while(next_permutation(a,a+len));
printf("%d %d\n",minn,maxn);
}
return ;
}

参考博客:https://blog.csdn.net/smilelingling/article/details/81542938

hdu6351 Beautiful Now (全排列+循环节)的更多相关文章

  1. HDU-6351 Beautiful Now 全排列暴力

    Beautiful Now 题意 给出一个最大为10^9的数字n,以及一个k,你最多交换n中任意两个位置的数字k次,问形成的最大数字和最小数字. 思路 看到这题,我靠这题暴力交换一下,不难啊,咋没人做 ...

  2. HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)

    传送门:HDU 5895 Mathematician QSC 这是一篇很好的题解,我想讲的他基本都讲了http://blog.csdn.net/queuelovestack/article/detai ...

  3. hdu 2837 Calculation 指数循环节套路题

    Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. HDU 3746 (KMP求最小循环节) Cyclic Nacklace

    题意: 给出一个字符串,要求在后面添加最少的字符是的新串是循环的,且至少有两个循环节.输出最少需要添加字符的个数. 分析: 假设所给字符串为p[0...l-1],其长度为l 有这样一个结论: 这个串的 ...

  5. Period(KMP,循环节问题)

    题意: 求给你个串,前i位子串由某个字符串重复k次得到,求所有的i和k 分析: i-next[i]恰好是一个循环节 #include <map> #include <set> ...

  6. uva202:循环小数(循环节+抽屉原理)

    题意: 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度. 思路: 设立一个r[]数组记录循环小数,u[]记录每次的count,用于标记,小数计算可用 r ...

  7. poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 14653   Accepted: 6965 Descripti ...

  8. [KMP求最小循环节][HDU3746][Cyclic Nacklace]

    题意 给你个字符串,问在字符串末尾还要添加几个字符,使得字符串循环2次以上. 解法 无论这个串是不是循环串 i-next[i] 都能求出它的最小循环节 代码: /* 思路:kmp+字符串的最小循环节问 ...

  9. [KMP求最小循环节][HDU1358][Period]

    题意 求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法 直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i ...

随机推荐

  1. MySQL数据库的自动备份与数据库被破坏后的恢复(3)

    [2] 当数据库被修改后的恢复方法 数据库被修改,可能存在着多方面的原因,被入侵.以及相应程序存在Bug等等,这里不作详细介绍.这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法. 具体和上面 ...

  2. 【leetcode】1155. Number of Dice Rolls With Target Sum

    题目如下: You have d dice, and each die has f faces numbered 1, 2, ..., f. Return the number of possible ...

  3. nuxt.js 封装axios

    1.安装axios cnpm install axios --save 2.在plugins文件夹下面创建service.js import axios from 'axios' import { M ...

  4. github-搜索功能

    in:name spring boot stars:>3000   //在标题上查找spring boot 并且 stars >3000 in:readme spring boot sta ...

  5. CDMA与OFDM之技术比较

    频谱利用率.支持高速率多媒体服务.系统容量.抗多径信道干扰等因素是目前大多数固定宽带无线接入设备商在选择CDMA(码分多址)或OFDM(正交 频分复用)作为点到多点(PMP)的关键技术时的主要出发点. ...

  6. 利用Pandas和matplotlib分析我爱我家房租区间频率

    前几天利用python爬取了我爱我家的租房的一些数据,就想着能不能对房租进行一波分析,于是通过书籍和博客等查阅了相关资料,进行了房租的区间分析.不得不说,用python做区间分析比我之前用sql关键字 ...

  7. layui jquery ajax,url,type,async,dataType,data

    $.ajax({ url: '/foensys/user/userDelete/'+data[0].id, type:"get", async:true, dataType:&qu ...

  8. word的公式编辑器在插入对象里面!!!!!!!!!!!!!

    word的公式编辑器在  插入->对象  里面!!!!!!!!!!!!!

  9. mysql Alias操作符 语法

    mysql Alias操作符 语法 作用:为列名称和表名称指定别名 大理石构件 语法:SELECT column_name(s) FROM table_name AS alias_name mysql ...

  10. Gradle教程-w3cschool

    Gradle,这是一个基于 JVM 的富有突破性构建工具.Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目.本教程主要讲解了如何使用 Gradle 构建系 ...