题意:给定一个数,和一个最多交换次数k,问在不超过k次操作的情况,问可以得到的最大值和最小值是多少?

个人解题的艰辛路程 , 开始是想到了暴力枚举的可能 , 打出来发现在判断枚举的数组与原来数组交换了多少次出现了错误 , 我们扫一遍枚举的数组于原来的数组不相同就往后面找到相同 , 但这个是不行的 , 这样必须是每一位数都不一样才可以 , 然后无耻的看了题解 , O!原来是枚举位置 ,  然后题解,超时了 , 想了想发现当k>cnt 的时候 ,是一定可以构成出来的 ,不需要枚举 , 所以加了这样Ala

#include<bits/stdc++.h>
using namespace std ;
int A[],a[],T[],sumMAX[],sumMIN[];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(sumMIN,,sizeof(sumMIN));
memset(sumMAX,,sizeof(sumMAX));
int x,k;
scanf("%d%d",&x,&k);
int cnt=;
while(x)
{ a[cnt++]=x%;
sumMAX[x%]++;sumMIN[x%]++;
x/=;
}
for(int i=cnt- ; i>= ; i--)
{
A[cnt--i]=a[i];
}
for(int i= ; i<cnt ; i++) a[i]=i;
int MIN=0x3f3f3f3f,MAX=-;
if(k>=cnt-)///剪枝
{
for(int i= ; i<= ; i++)///第一位排除0
{
if(sumMIN[i])
{
printf("%d",i);
sumMIN[i]--;
break;
}
}
for(int i= ; i<= ; i++)
{
while(sumMIN[i])
{
printf("%d",i);
sumMIN[i]--;
}
}
printf(" ");
for(int i= ; i>= ; i--)
{
while(sumMAX[i])
{
printf("%d",i);sumMAX[i]--;
}
}
puts("");continue;
}
do
{
int now=;
int ans=;
if(A[a[]]==) continue;
for(int i= ; i<cnt ; i++)
T[i]=a[i];
for(int i= ; i<cnt ; i++)
{
if(T[i]!=i)
{
now++;
if(now>k) break;
for(int j=i+ ; j<cnt ; j++)
{
if(T[j]==i)
{
swap(T[i],T[j]);break;
}
}
}
if(now>k) break;
ans=ans*+A[a[i]]; }
if(now<=k)
{
// printf("%d %d\n",ans,now);
MAX=max(MAX,ans) , MIN=min(MIN,ans);
}
} while(next_permutation(a,a+cnt));
printf("%d %d\n",MIN,MAX); }
}

HDU 6351 (带技巧的暴力)的更多相关文章

  1. HDU - 6351 Beautiful Now

    Beautiful Now HDU - 6351 Anton has a positive integer n, however, it quite looks like a mess, so he ...

  2. HDU 2920 分块底数优化 暴力

    其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...

  3. HDU 6351暴力枚举 6354计算几何

    Beautiful Now Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  4. HDU 2588 GCD 【Euler + 暴力技巧】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2588 GCD Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  5. hdu 1006 Tick and Tick 有技巧的暴力

    Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  6. Bazinga HDU - 5510【技巧暴力+字符串】

    题目:https://vjudge.net/problem/HDU-5510 $2015ACM/ICPC$ 亚洲区沈阳站 题目大意: 输入$t$(表示样例个数) 如何每个样例一个 $n$,表示字符串的 ...

  7. hdu 5277 YJC counts stars 暴力

    YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  8. HDU 5311 Hidden String (暴力)

    题意:今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为n的字符串s. 他想要知道能否找到s的三个互不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]满足下 ...

  9. HDU 5762 Teacher Bo (暴力)

    Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...

随机推荐

  1. ./run.sh --indir examples/demo/ --outdir examples/results/ --vis

    (AlphaPose20180911) luo@luo-ThinkPad-W540:AlphaPose$ ./run.sh --indir examples/demo/ --outdir exampl ...

  2. 制作第三方SDK静态库、.framework(修正)

    静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和 .framework 静态库和动态库的使用区别: 静态库:链接时,静态库会被完整地复制 到 可执行文件中 ...

  3. PAT 1017 Queueing at Bank (25) (坑题)

    Suppose a bank has K windows open for service. There is a yellow line in front of the windows which ...

  4. Ext JS v2.3.0 Ext.grid.ColumnModel renderer Record 获取列值

    场景:设置某一列的值,但是需要获取其他列的值 {"header": '<s:property value="name" />', "wid ...

  5. Bitmap类、BitmapFactory及BitmapFactory类中的常用方法

    1.Bitmap 1.1非静态方法 public void recycle()——回收位图占用的内存空间,把位图标记为Dead public final boolean isRecycled() —— ...

  6. 关于winform的appconfig的读写操作

    public string ReadConfig() { List<string> list = new List<string>(); ExeConfigurationFil ...

  7. Server Sql 多表查询、子查询和分页

    一.多表查询:根据特定的连接条件从不同的表中获取所需的数据 多表查询语法: SELECT table1.column, table2.column FROM table1, table2 WHERE ...

  8. C# Excel 操作

    Excel数据到datagridview 里面 (流读取) System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); if (fd. ...

  9. sqlServer sa用户登陆失败的解决办法

    sqlserver sa用户登陆失败的解决办法 如下图以此模仿: 1.右键-属性 2.找到安全: 3.勾选如图: 4.sa用户密码重置: 5.服务重启:

  10. lower_bound下确界

    //lower_bound用于找到首个大于等于某个值的元素 #include<algorithm> #include<iostream> using namespace std ...