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
*/

  

hdu6351 Beautiful Now 杭电第五场 暴力枚举的更多相关文章

  1. hdu6354 杭电第五场 Everything Has Changed 计算几何

    Everything Has Changed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java ...

  2. hdu6373 Pinball 杭电第六场 物理知识

    Pinball Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total S ...

  3. 杭电第四场 hdu6336 Problem E. Matrix from Arrays 打表找规律 矩阵前缀和(模板)

    Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 ...

  4. 杭电第六场 hdu6362 oval-and-rectangle 积分求期望

    oval-and-rectangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. 喝奶茶最大值(不能喝自己班级的)2019 Multi-University Training Contest 8--hdu杭电第8场(Roundgod and Milk Tea)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6667 题意: 有 n个班级,每个班级有a个人.b个奶茶,每个班的人不能喝自己的奶茶,只能喝别人班的奶茶 ...

  6. hdu 1290_献给杭电五十周年校庆的礼物

    Description 或许你曾经牢骚满腹或许你依然心怀忧伤或许你近在咫尺或许你我天各一方 对于每一个学子母校 永远航行在生命的海洋 今年是我们杭电建校五十周年,这是一个值得祝福的日子.我们该送给母校 ...

  7. HDU 1290 献给杭电五十周年校庆的礼物(面分割空间 求得到的最大空间数目)

    传送门: 献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. [HDU1290]献给杭电五十周年校庆的礼物

    [HDU1290]献给杭电五十周年校庆的礼物 题目大意: 问\(n(n\le1000)\)个平面能够将一个三维空间分成几部分. 思路: 公式\(\frac{n^3+5n+6}6\). 源代码: #in ...

  9. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

随机推荐

  1. Python flask构建微信小程序订餐系统

    第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆ht ...

  2. 技巧:结合Zabbix与SNMP监控嵌入式设备

    在如何利用Zabbix监控网络设备三篇文章的前两篇中,我们介绍了如何通过Zabbix代理监控网络设备.但有些设备无法安装Zabbix代理,需要采用其他方法监控.需要考虑无法安装软件的嵌入式设备或应用程 ...

  3. 为什么你要用 Spring?

    ​ 前言 现在Spring几乎成为了Java在企业级复杂应用开发的代名词,得益于Spring简单的设计哲学和其完善的生态圈,确实为廉颇老矣,尚能饭否的 Java 带来了“春天”,有很多同学刚接触Jav ...

  4. php 生成随机字符串,数字,大写字母,小写字母,特殊字符可以随意组合

    * 生成随机字符串* @param int       $length  要生成的随机字符串长度* @param string    $type    随机码类型:0,数字+大小写字母:1,数字:2, ...

  5. luogu1373_小a和uim之大逃离 多维dp

    传送门 巧妙之处在于dp的设计只用设计差值即可,因此不会mle,枚举的顺序问题也解决了 #include <bits/stdc++.h> using namespace std; #def ...

  6. .net持续集成测试篇之Nunit 测试配置

    系列目录 在开始之前我们先看一个陷阱 用到的Person类如下 public class Person:IPerson { public string Name { get; set; } publi ...

  7. 编码规范 | Java函数优雅之道(上)

    导读 随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题.持续地优化代码,提高代码的质量,是提升系统生命力的有效手段之一.软件系统思维有句话“Less coding, ...

  8. 定时器任务django-crontab的使用【静态化高频率页面,增加用户体验】【系统的定时器,独立于项目执行】【刘新宇】

    页面静态化 思考: 网页的首页访问频繁,而且查询数据量大,其中还有大量的循环处理. 问题: 用户访问首页会耗费服务器大量的资源,并且响应数据的效率会大大降低. 解决: 页面静态化 1. 页面静态化介绍 ...

  9. c#引用本地dll发布后运行exe错误

    在config 文件夹 configuration 配置节点下面 添加 <runtime> <gcConcurrent enabled="true" /> ...

  10. Netty源码分析--内存模型(上)(十一)

    前两节我们分别看了FastThreadLocal和ThreadLocal的源码分析,并且在第八节的时候讲到了处理一个客户端的接入请求,一个客户端是接入进来的,是怎么注册到多路复用器上的.那么这一节我们 ...