【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

//从大到小枚举第i(1..len1)位
//剩余的数字从小到大排序。
//看看组成的数字是不是小于等于b
//如果是的话。
//说明第i位就是选这个数字了。
//接下来枚举下一位。

【代码】

  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int N = 20;
  5. string s1,s2;
  6. int len1,len2;
  7. int bo[N],a[N],b[N];
  8. vector<int> v,vans;
  9. bool get_ans(){
  10. for (int i = 0;i <(int) vans.size();i++)
  11. v[i+1] = vans[i];
  12. int nn = (int) vans.size();
  13. for (int i = 0;i<=9;i++)
  14. for (int j = 1;j <= bo[i];j++)
  15. v[++nn] = i;
  16. for (int i = 1;i <= len1;i++)
  17. if (v[i]!=b[i] && v[i]>b[i]) return false;
  18. else if (v[i]!=b[i] && v[i]<b[i])return true;
  19. return true;
  20. }
  21. int main(){
  22. #ifdef LOCAL_DEFINE
  23. freopen("rush_in.txt", "r", stdin);
  24. #endif
  25. ios::sync_with_stdio(0),cin.tie(0);
  26. cin >> s1 >> s2;
  27. len1 = s1.size(),len2 = s2.size();
  28. if (len1<len2){
  29. sort(s1.begin(),s1.end());
  30. reverse(s1.begin(),s1.end());
  31. cout <<s1<<endl;
  32. return 0;
  33. }
  34. v.resize(len1+1);
  35. //len1==len2;
  36. for (int i = 0;i < len1;i++)
  37. a[i+1] = s1[i]-'0';
  38. for (int i = 0;i < len2;i++)
  39. b[i+1] = s2[i]-'0';
  40. for (int i = 1;i <= len1;i++) bo[a[i]]++;
  41. bool haved = 0;
  42. for (int i = 0;i < len1;i++){
  43. for (int j = 9;j>=0;j--)
  44. if (bo[j]){
  45. int k = s2[i]-'0';
  46. if (j<=k || haved){
  47. bo[j]--;
  48. vans.push_back(j);
  49. if (get_ans()){
  50. if (j<k) haved =1;
  51. break;
  52. }
  53. vans.pop_back();
  54. bo[j]++;
  55. }
  56. }
  57. }
  58. for (int i = 0; i< (int) vans.size();i++)
  59. cout <<vans[i];
  60. //从大到小枚举第i(1..len1)位
  61. //剩余的数字从小到大排序。
  62. //看看组成的数字是不是小于等于b
  63. //如果是的话。
  64. //说明第i位就是选这个数字了。
  65. //接下来枚举下一位。
  66. return 0;
  67. }

【Educational Codeforces Round 36 C】 Permute Digits的更多相关文章

  1. 【Educational Codeforces Round 36 D】 Almost Acyclic Graph

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找到任意一个环. 然后枚举删掉其中的某一条边即可. (因为肯定要删掉这个环的,那么方法自然就是删掉其中的某一条边 (其它环,如果都包 ...

  2. 【Educational Codeforces Round 36 B】Browser

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 分类在区间里面和左边.右边三种情况. 看看l的左边有没有标签.r的右边有没有标签. 就能做完了. [代码] #include < ...

  3. 【Educational Codeforces Round 36 A】 Garden

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举用哪一个桶就好 [代码] #include <bits/stdc++.h> using namespace std; ...

  4. 【Educational Codeforces Round 37 F】SUM and REPLACE

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 那个D函数它的下降速度是很快的. 也就是说到最后他会很快的变成2或者1 而D(2)==2,D(1)=1 也就是说,几次操作过后很多数 ...

  5. 【Educational Codeforces Round 37 E】Connected Components?

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs. 用一个链表来记录哪些点已经确定在某一个联通快里了. 一开始每个点都能用. 然后从第一个点开始进行bfs. 然后对于它的所有 ...

  6. 【Educational Codeforces Round 37 C】 Swap Adjacent Elements

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然l..r这一段连续的1可以把l..r+1变成有序的. 那么就把所有的连续1段变成有序的就好. 看看最后是不是升序即可. [代码] ...

  7. 【Educational Codeforces Round 37 B】 Tea Queue

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用一个队列来模拟排队就好. 队列放三元组(x,y,z) x表示人的下标,y和z分别表示进入和退出时间. 然后枚举时间从1到5000 ...

  8. 【Educational Codeforces Round 37 A】 Water The Garden

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 记录下水龙头在哪些位置. 然后每秒钟把index-i和index+i改变状态一下就好(置1 [代码] #include <bi ...

  9. 【Educational Codeforces Round 35 D】Inversion Counting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排列中交换任意两个数字. 排列的逆序对个数的奇偶性会发生变化. 翻转这个过程其实就是len/2对数字发生交换. 交换了偶数次的话,不 ...

随机推荐

  1. JDBC连接SQL Server遇到的问题

    需要使用到微软的JDBC sql server的驱动类,去官网下载jar包 使用的URL模式:"jdbc:sqlserver:地址:端口//;databaseName=YourDatabas ...

  2. shell应用之批量添加用户实例

    这里要实现功能介绍 读取一个用户列表文件 给列表中的用户添加随机密码需要包含大小写字符和数字 保存对应的用户和密码文件 这些用户属于同个用户组 1.列表文件 [root@mail ~]# cat li ...

  3. Java 异常的捕获与处理详解 (一)

    一,异常的产生(Exception) 异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就会中断执行. An exception is a flow of inst ...

  4. Python 生成器 Generator 和迭代器 Iterator

    #最近一周刚开始接触python,基本的语法,和使用特性和Java差别还是蛮大的. 今天接触到Python的迭代器和生成器有点不是很明白,所以搜索了先关资料整理了一些自己的理解和心得 简述(Profi ...

  5. python中一些有用的函数------持续更新中

    strip() 函数 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. str2 = " Runoob " # 去除首尾空格 print (str2.strip()) ...

  6. 将IP表存入SQL里的程序

    将IP表存入SQL里的程序 写得比較粗糙,另一点错误,只是能达到效果.请大家測试  create.asp  ---------------------------------------------- ...

  7. android-Animation进阶(创造用户舒服的动画)

    android中经常使用的动画有Animation ,Animator两种; ---第1种经常使用的是使用在Activity切换中.比方打开一个Activity.关闭一个Activity 个人比較喜欢 ...

  8. 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(1)

    Part II 深入搜索 搜索不仅仅是全文本搜索:数据的很大部分是结构化的值例如日期.数字.这部分开始解释怎样以一种高效地方式结合结构化搜索和全文本搜索. 第十二章 结构化搜索 结构化搜索_ 是指查询 ...

  9. 计算机科学书籍推荐和CSS、js书籍推荐

    计算机科学:<深入理解计算机系统>,这是基础知识 JavaScript:JavaScript高级程序设计:大名鼎鼎的红宝书 <精通CSS:高级Web标准解决方案>:因为我觉CS ...

  10. 解决MyEclipse中安装或升级ADT之后SDK Target无法显示的问题

        故障现象,在MyEclipse里面安装完最新的android sdk和ADT之后,无法新建项目,Build Target为空,显示一直在loading.即如下面图里面显示的,Target Na ...