【Educational Codeforces Round 36 C】 Permute Digits
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
//从大到小枚举第i(1..len1)位
//剩余的数字从小到大排序。
//看看组成的数字是不是小于等于b
//如果是的话。
//说明第i位就是选这个数字了。
//接下来枚举下一位。
【代码】
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 20;
string s1,s2;
int len1,len2;
int bo[N],a[N],b[N];
vector<int> v,vans;
bool get_ans(){
for (int i = 0;i <(int) vans.size();i++)
v[i+1] = vans[i];
int nn = (int) vans.size();
for (int i = 0;i<=9;i++)
for (int j = 1;j <= bo[i];j++)
v[++nn] = i;
for (int i = 1;i <= len1;i++)
if (v[i]!=b[i] && v[i]>b[i]) return false;
else if (v[i]!=b[i] && v[i]<b[i])return true;
return true;
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >> s1 >> s2;
len1 = s1.size(),len2 = s2.size();
if (len1<len2){
sort(s1.begin(),s1.end());
reverse(s1.begin(),s1.end());
cout <<s1<<endl;
return 0;
}
v.resize(len1+1);
//len1==len2;
for (int i = 0;i < len1;i++)
a[i+1] = s1[i]-'0';
for (int i = 0;i < len2;i++)
b[i+1] = s2[i]-'0';
for (int i = 1;i <= len1;i++) bo[a[i]]++;
bool haved = 0;
for (int i = 0;i < len1;i++){
for (int j = 9;j>=0;j--)
if (bo[j]){
int k = s2[i]-'0';
if (j<=k || haved){
bo[j]--;
vans.push_back(j);
if (get_ans()){
if (j<k) haved =1;
break;
}
vans.pop_back();
bo[j]++;
}
}
}
for (int i = 0; i< (int) vans.size();i++)
cout <<vans[i];
//从大到小枚举第i(1..len1)位
//剩余的数字从小到大排序。
//看看组成的数字是不是小于等于b
//如果是的话。
//说明第i位就是选这个数字了。
//接下来枚举下一位。
return 0;
}
【Educational Codeforces Round 36 C】 Permute Digits的更多相关文章
- 【Educational Codeforces Round 36 D】 Almost Acyclic Graph
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找到任意一个环. 然后枚举删掉其中的某一条边即可. (因为肯定要删掉这个环的,那么方法自然就是删掉其中的某一条边 (其它环,如果都包 ...
- 【Educational Codeforces Round 36 B】Browser
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 分类在区间里面和左边.右边三种情况. 看看l的左边有没有标签.r的右边有没有标签. 就能做完了. [代码] #include < ...
- 【Educational Codeforces Round 36 A】 Garden
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举用哪一个桶就好 [代码] #include <bits/stdc++.h> using namespace std; ...
- 【Educational Codeforces Round 37 F】SUM and REPLACE
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 那个D函数它的下降速度是很快的. 也就是说到最后他会很快的变成2或者1 而D(2)==2,D(1)=1 也就是说,几次操作过后很多数 ...
- 【Educational Codeforces Round 37 E】Connected Components?
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs. 用一个链表来记录哪些点已经确定在某一个联通快里了. 一开始每个点都能用. 然后从第一个点开始进行bfs. 然后对于它的所有 ...
- 【Educational Codeforces Round 37 C】 Swap Adjacent Elements
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然l..r这一段连续的1可以把l..r+1变成有序的. 那么就把所有的连续1段变成有序的就好. 看看最后是不是升序即可. [代码] ...
- 【Educational Codeforces Round 37 B】 Tea Queue
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用一个队列来模拟排队就好. 队列放三元组(x,y,z) x表示人的下标,y和z分别表示进入和退出时间. 然后枚举时间从1到5000 ...
- 【Educational Codeforces Round 37 A】 Water The Garden
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 记录下水龙头在哪些位置. 然后每秒钟把index-i和index+i改变状态一下就好(置1 [代码] #include <bi ...
- 【Educational Codeforces Round 35 D】Inversion Counting
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排列中交换任意两个数字. 排列的逆序对个数的奇偶性会发生变化. 翻转这个过程其实就是len/2对数字发生交换. 交换了偶数次的话,不 ...
随机推荐
- numpy基础篇-简单入门教程1
np.split(A, 4, axis=1),np.hsplit(A, 4) 分割 A = np.arange(12).reshape((3, 4)) # 水平方向的长度是4 print(np.spl ...
- 洛谷 P3902 递增
P3902 递增 题目描述 现有数列A_1,A_2,\cdots,A_NA1,A2,⋯,AN,修改最少的数字,使得数列严格单调递增. 输入输出格式 输入格式: 第1 行,1 个整数N 第2 行, ...
- 洛谷 P2440 木材加工
P2440 木材加工 题目背景 要保护环境 题目描述 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有 剩余),需要得到的小段的数目是给定的.当然,我们希望得到 ...
- maven中使用mybatis
1.Mybatis优缺点 优点: Mybatis实现了对Dao层的封装,隔离了SQL语句,便于管理,避免了像JDBC那样操作数据集,便于扩展等等. 缺点: Mybatis属于?半自动“ORM”,比Hi ...
- 关于APP上架制作二维码相关
1.安卓版本APP上架并生成二维码问题:安卓版本上架国内市场,这个情况比较复杂一些,比如百度,网址是以上传APP生成的一个编号来进行的,每次升级更新后都发生了变化,也就相当于每次升级后网址发生改变(比 ...
- failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found 一.总结 一句话总结:这里出现的问题是我在博客园删除了一篇文章,时 ...
- Linux安全应用之防垃圾邮件服务器的构建
Linux安全应用之防垃圾邮件服务器的构建 一.垃圾邮件产生的原因 垃圾邮件(SPAM) 也称作UCE(Unsoticited Commercial Email.未经许可的商业电子邮件)或UBE(Un ...
- 【基础篇】DatePickerDialog日期控件的基本使用(二) ——分别获取年、月、日、时、分
项目步骤: 1.在Main.xml布局文件中定义对应的组件,Main.xml内容如下: <?xml version="1.0" encoding="utf-8&qu ...
- 威联通212P 在admin用户密码正确情况下仍然无法登录WEB页面解决办法
*登录 telnet 执行以下语句: [~] # cp /etc/default_config/passwd /mnt/HDA_ROOT/.config/passwd[~] # cp /etc/def ...
- PHP date()获取某时间段以周、月、季度为粒度的时间段数组
date()函数: PHP date() 参考:https://www.hi-docs.com/php/date.html Linux date()参考:http://www.cnblogs.com ...