Beautiful Now

Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0

Problem Description
Anton has a positive integer n, however, it quite looks like a mess, so he wants to make it beautiful after k swaps of digits.
Let the decimal representation of n as (x1x2⋯xm)10 satisfying that 1≤x1≤9, 0≤xi≤9 (2≤i≤m), which means n=∑mi=1xi10m−i. In each swap, Anton can select two digits xi and xj (1≤i≤j≤m) and then swap them if the integer after this swap has no leading zero.
Could you please tell him the minimum integer and the maximum integer he can obtain after k swaps?
 
Input
The first line contains one integer T, indicating the number of test cases.
Each of the following T lines describes a test case and contains two space-separated integers n and k.
1≤T≤100, 1≤n,k≤109.
 
Output
For each test case, print in one line the minimum integer and the maximum integer which are separated by one space.
 
Sample Input
5
12 1
213 2
998244353 1
998244353 2
998244353 3
 
Sample Output
12 21
123 321
298944353 998544323
238944359 998544332
233944859 998544332
枚举每种交换情况,分别取最大和去最小,记得特判前导零
AC代码:
#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <algorithm>
#define ls (r<<1)
#define rs (r<<1|1)
#define debug(a) cout << #a << " " << a << endl
using namespace std;
typedef long long ll;
const ll maxn = 1e2+10;
const ll mod = 998244353;
const double pi = acos(-1.0);
ll n, m;
bool cmp( char p, char q ) {
return p > q;
}
string strmin, strmax, s, tmin, tmax;
void dfs1( ll x, ll cnt, string t ) {
if( cnt > n-1 || x == t.length()-1 ) {
//debug(cnt), debug(tmin), debug(strmin), debug(t);
strmin = min(strmin,t);
return ;
}
if( t[x] == tmin[x] ) {
dfs1(x+1,cnt,t);
return ;
}
char c = 'a';
for( ll i = x+1; i < t.length(); i ++ ) {
if( t[i] <= c ) {
if( x == 0 && t[i] == '0' ) {
continue;
}
c = t[i];
}
}
if( c == 'a' ) {
dfs1(x+1,cnt,t);
return ;
}
for( ll i = x+1; i < t.length(); i ++ ) {
if( t[i] == c ) {
swap(t[i],t[x]);
dfs1(x+1,cnt+1,t);
swap(t[i],t[x]);
}
}
}
void dfs2( ll x, ll cnt, string t ) {
if( cnt > n-1 || x == t.length()-1 ) {
//debug(cnt), debug(tmax), debug(strmax), debug(t);
strmax = max(strmax,t);
return ;
}
if( t[x] == tmax[x] ) {
dfs2(x+1,cnt,t);
return ;
}
char c = '0';
bool flag = true;
for( ll i = x+1; i < t.length(); i ++ ) {
if( t[i] >= c ) {
c = t[i];
flag = false;
}
}
for( ll i = x+1; i < t.length(); i ++ ) {
if( t[i] == c ) {
swap(t[i],t[x]);
dfs2(x+1,cnt+1,t);
swap(t[i],t[x]);
}
}
}
string rev( string s ) {
string t = "";
for( ll i = 0, j = s.length()-1; i < s.length(); i ++, j -- ) {
t = t + s[j];
}
return t;
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
ll T, t = 1;
cin >> T;
while( T -- ) {
s = "";
ll j = 0;
cin >> m >> n;
while(m) {
char c = (m%10)+'0';
s = s + c;
m /= 10;
}
s = rev(s);
tmin = s, tmax = s;
sort(tmin.begin(),tmin.end());
sort(tmax.begin(),tmax.end(),cmp);
if( tmin[0] == '0' ) {
char c = 'a';
ll inx = -1;
for( ll i = 1; i < tmin.length(); i ++ ) {
if( tmin[i] != '0' && tmin[i] < c ) {
c = tmin[i];
inx = i;
}
}
if( inx != -1 ) {
swap(tmin[inx],tmin[0]);
}
}
if( n >= s.length()-1 ) {
cout << tmin << " " << tmax << endl;
} else {
strmin = s;
dfs1(0,0,strmin);
strmax = s;
dfs2(0,0,strmax);
cout << strmin << " " << strmax << endl;
}
}
return 0;
}
/*
123112 2
111322 322111
10001 2
*/

  

最新文章

  1. Apache2.4开启GZIP功能
  2. OSX 下搭建Asp.Net vNext的开发环境
  3. Windows编程中UNICODE和_UNICODE定义问题
  4. Java简单类——一对多映射(省、市)
  5. 24. Longest Consecutive Sequence
  6. hdu 1845
  7. WCF中因序列化问题引起的异常和错误。
  8. CentOS 6.3下PostgreSQL 的安装与配置
  9. mac系统在控制台中ping网址提示不能解析host
  10. [gulp] gulp lint 忽略文件
  11. Nginx限制模块研究
  12. 初窥C++11:自己主动类型推导与类型获取
  13. Java网络请求getInputStream异常
  14. 关于Application的onCreate以及Activity生命周期在源码里都是什么时候调用的
  15. QPainter绘制遇到的小问题
  16. webpack模塊打包機
  17. 2017-2018-2 20165234 实验三 《Java面向对象程序设计》实验报告
  18. AngularJS——第6章 作用域
  19. Java基础——网络编程(三)
  20. Data Set Config配置元件

热门文章

  1. 释放你的硬盘空间!——Windows 磁盘清理技巧
  2. sqoop增量导数据
  3. 创建String对象过程的内存分配
  4. 编码规范 | Java函数优雅之道(上)
  5. 同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线
  6. Spark 系列(十四)—— Spark Streaming 基本操作
  7. Codeforces 343D Water Tree
  8. 记录一次基于docker搭建jira平台
  9. 如何彻底禁用 werfalut.exe
  10. Ubuntu下安装php7.1的gd,mysql,pdo_mysql扩展库