题意:给定数N(1<=N<=1e9),k(1<=k<=1e9),求对N的任意两位数交换至多k次能得到的最小与最大的数,每一次交换之后不能出现前导零。

因为N最多只有10位,且给了2500ms,当时觉得可以枚举全排列,再判断前导零和最少交换次数。

最少交换次数是(每个循环节中的个数-1)之和。

当时想的是全排列N的每位数,但是这样会出现一个问题:N中可能出现相同的数,这样求循环节中元素个数就会很困难。‘

其实应该对下标进行全排列,因为下标是不可能相同的,这样就可以O(len) 地计算出每个排列的最少交换次数。然后取符合条件的最小最大的数为答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn =10;
const LL INF= (1LL)<<60;
int k,len;
int pos[maxn];
int num[maxn];
bool vis[maxn];int check(){memset(vis,0,sizeof(vis));int cnt =0;for(int i=0;i<len;++i){if(vis[i]) continue;int tmp=0;while(!vis[i]){tmp++;vis[i]=1;i = pos[i];}cnt += tmp-1;if(cnt>k) return 0;}return cnt;
}char str[maxn];
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifint T;scanf("%d",&T);while(T--){memset(str,0,sizeof(str));scanf("%s %d",str,&k);len = strlen(str);LL N=0;for(int i=0;i<len;++i) num[i] = str[i]-'0',pos[i]=i,N = N*10+num[i];LL ans1= N,ans2=N;do{if(num[pos[0]]!=0 && check()){LL tmp =0;for(int i=0;i<len;++i){tmp*=10;tmp+= num[pos[i]];}if(tmp<ans1) ans1=tmp;if(tmp>ans2) ans2=tmp;}}while(next_permutation(pos,pos+len));printf("%lld %lld\n",ans1,ans2);}return 0;
}

转载于:https://www.cnblogs.com/xiuwenli/p/9432817.html

HDU 6351 (Beautiful Now) 2018 Multi-University Training Contest 5相关推荐

  1. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  2. HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3

    /* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意:给出排列 a[N],求所有区间的第 ...

  3. hdu 6351 Beautiful Now

    http://acm.hdu.edu.cn/showproblem.php?pid=6351 题意:任意交换两个数至多k次求得到的最大的数和最小的数 #include<bits/stdc++.h ...

  4. HDU 4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)

    题意:给定n*m个格子,每个格子能填0-k 的整数.然后给出每列之和和每行之和,问有没有解,有的话是不是唯一解,是唯一解输出方案. 思路:网络流,一共 n+m+2个点   源点 到行连流量为 所给的 ...

  5. 9行代码AC——HDU 6857 -Clockwise or Counterclockwise(2020 Multi-University Training Contest 8)(判断三点顺序)

    励志用尽量少的代码做高效表达 Problem Description It is preferrable to read the pdf statment. After some basic geom ...

  6. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  7. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  8. Sichuan University Programming Contest 2018 Preliminary

    嗯为了防止大家AK,所以这次的A题和K题我们就当做不存在好了! 经历了昨天写了两个多小时的博客没保存的心态炸裂,今天终于下了个Markdown.所以我猜这篇的格式应该会更好看一点! 好吧废话不多说 题 ...

  9. HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

    /* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...

  10. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others ...

最新文章

  1. 报名丨图神经网络前沿学术研讨会:清北高校vs企业,9位学者联袂分享
  2. python3 赋值 浅拷贝 深拷贝 简介
  3. Android远程桌面助手(B1391)
  4. 获取项目版本号与设置引导页的判断条件
  5. socket网络间通信初识
  6. My team and my group in my opportunity and my appointment
  7. WordPress Restful API registration to Kyma WordPress API注册到Kyma的实现原理
  8. kafka grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  9. pta最长连续递增子序列C语言,pta 习题集 5-5 最长连续递增子序列 (dp)
  10. Android系统 (150)---Android 开发者工具
  11. Powershell tricks::Powershell Remoting
  12. java 线程访问控件_多线程下访问控件的方式
  13. 数据库设计时设计标识字段的一些思考
  14. 超详细Hexo+Github博客搭建小白教程
  15. 中值滤波器的matlab实现
  16. 运动控制芯片 Motion Control ICs
  17. 2011-11-27神马浮云的一天
  18. 【win10蓝屏】记录一下,随机蓝屏,开机蓝屏,使用中蓝屏的经历
  19. Unity 中英文转换
  20. Python-练习 42. Is-A, Has-A, 对象和类

热门文章

  1. 中国HBase技术社区第十届meetup--HBase生态实践 (杭州站)...
  2. iOS换肤功能的简单处理框架
  3. opencv python 读取图像/显示图像/保存图像
  4. 【翻译】GRAIL-手写识别
  5. CentOS 7 配置Java环境变量
  6. [傅里叶变换及其应用学习笔记] 二十二. 快速傅里叶变换
  7. PHP的XML Parser(转)
  8. 防火墙配置文件iptables详解
  9. Unix环境高级编程第三版源代码编译与使用说明
  10. double除以int结果是int吗_游戏开发java中int可以用汉字吗?