【2018.3.10】模拟赛之一-ssl2574Closest【深搜】

目录地址

前言

感谢黎某儿(划掉)教我这道题☆⌒(*^-゜)v。


正题

给出两个n位数A,B。我们需要找到两个最近的靠近A的n位数(第一个比A大或与A相等,第二个严格比A小),使得它们的十进制表示是B中所有数字的某个排列。


输入输出(需要自取)

Input

输入文件closest.in包含2行:
第1行为一个正整数A。
第1行为一个正整数B。
(A,B均为n位的正整数)

Output

输出文件closest.out共有2行。
第一行:最小的不比A小的n位数,没有前导0,包含B中的所有字符,以某一顺序排列。如果这样的数不存在,那么输出0。
第二行:最大的比A小的n位数,没有前导0,包含B中的所有字符,以某一顺序排列。如果这样的数不存在,那么输出0。

Sample Input

输入样例1

3075
6604

输入样例2

3000203
4562454

Sample Output

输出样例1

4066
0

输出样例2

4244556
2655444


解题思路

B用桶存,然后分两段输出,一段是相等的和第一个不相等(大的或小的),第二段是将桶剩下的输出(从大到小或从小到大),然后用dfs更正。


代码

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int c[61],f[10],t[10],p[61];
char read;
int n,maxn,mark;
bool flag,flag2,ok;
void dfs(int i)//深搜
{if (i>n)//全部等于的情况{flag=true;ok=true;for (int j=1;j<=n;j++) printf("%d",p[j]);return;}flag2=false;for (int j=c[i];j<=9;j++){if (f[j]>0){p[i]=j;f[j]--;flag2=true;if (j>c[i])//找到一个了{flag=true;break;}dfs(i+1);//深搜if (ok) return;f[j]++;//回溯}}if (flag){for (int j=1;j<=i;j++) printf("%d",p[j]);//输出第一部分ok=true;return;}if (!flag2)//找不到了{return;}
}
void dfs2(int i)//相仿,看上面↑
{if (i>n){ok=true;return;}flag2=false;for (int j=c[i];j>=0;j--){if (t[j]>0 && (i!=1 || j!=0)){p[i]=j;t[j]--;flag2=true;if (j<c[i]){flag=true;break;}dfs2(i+1);if (ok) return;}}if (flag){for (int j=1;j<=i;j++) printf("%d",p[j]);ok=true;return;}if (!flag2){return;}
}
int main()
{while ((read=getchar())!='\n'){n++;c[n]=read-48;//输入}for (int i=1;i<=n;i++) {cin>>read;t[read-48]++;f[read-48]++;}//输入flag=false;ok=false;dfs(1);//搜if (!flag && !flag2) printf("0");//找不到else for (int i=0;i<=9;i++)for (int j=1;j<=f[i];j++)printf("%d",i);//输出第二段printf("\n");flag=false;dfs2(1);if (!flag && !flag2) printf("0");else if(flag2 && !flag){if (prev_permutation(p+1,p+1+n))//如果连段可以全部相等就输出上一个排列for (int j=1;j<=n;j++) printf("%d",p[j]);}else for (int i=9;i>=0;i--)for (int j=1;j<=t[i];j++)printf("%d",i);//输出第二段
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是mysql的主从复制?

​ MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式&#xff0c;这样从节点不用一直访问主服务器来更新自己的数据&#xff0c;数据的更新可以在远程连接上进行&#xff0c;从节点可以复制主数据库中的所有数据库…

asp.net core新特性(1):TagHelper

进步&#xff0c;才是人应该有的现象。—— 雨果 今天开始&#xff0c;我就来说说asp.net core的新特性&#xff0c;今天就说说TagHelper标签助手。虽然学习.net&#xff0c;最有帮助的就是microsoft的官方说明文档了&#xff0c;里面把一些使用说明都写的非常清楚&#xff0c;…

Java中的事务——全局事务与本地事务

转载自 Java中的事务——全局事务与本地事务 在上一篇文章中说到过&#xff0c;Java事务的类型有三种&#xff1a;JDBC事务、JTA(Java Transaction API)事务、容器事务。 这是从事务的实现角度区分的&#xff0c;本文从另外一个角度来再次区分一下Java中的事务。站在事务管…

SSM整合简单登录案例

[1] 在数据库中创建用户信息表 [2] 搭建SSM开发环境 使用idea创建登录功能的web项目 在web-inf目录下创建lib文件夹&#xff0c;并导入SSM的jar包. 在src下创建MVC的包结构 在src下创建并配置SSM的xml文件 ① applicationcontext.xml <?xml version"1.0"…

19级、20级:班级日常分享,一天一瞬间

点击上方蓝色关注我们&#xff01;由于近期班级里面总是有或大或小的问题&#xff0c;所以就和丁老师商量的制定了长达29条的班规&#xff0c;昨天利用下午上课的时间在班内逐条讲解。因为班规是以安全、学习、道德以及身心健康为中心出发的&#xff0c;所以条条都合理&#xf…

同步VS异步

同步异步 &#xff0c; 举个例子来说&#xff0c;一家餐厅吧来了5个客人&#xff0c;同步的意思就是说&#xff0c;来第一个点菜&#xff0c;点了个鱼&#xff0c;好&#xff0c; 厨师去捉鱼杀鱼&#xff0c;过了半小时鱼好了给第一位客人&#xff0c;开始下位一位客人&#xf…

【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】

目录地址 前言 其实可以不用哈希的&#xff0c;好像会更慢。还有之前看错题了&#xff0c;所以会有些奇怪的地方 正题 给出一个字符串&#xff0c;求最长的至少出现过两次的子串 输入输出&#xff08;需要自取&#xff09; Input 输入文件ygas.in第一行包含该字符串。数据…

面向 Visual Studio 开发者的 Git 内部源代码

在我撰写的 Git DevOps 文章 (msdn.com/magazine/mt767697) 中&#xff0c;我介绍了 Git 版本控制系统 (VCS) 与可能已经很熟悉的集中式 VCS 的区别。然后&#xff0c;我演示了如何在 Visual Studio 中使用 Git 工具完成一些 Git 任务。在本文中&#xff0c;我将汇总 Git 在新发…

Intellij IDEA神器居然还有这些小技巧

转载自 Intellij IDEA神器居然还有这些小技巧 Intellij IDEA真是越用越觉得它强大&#xff0c;它总是在我们写代码的时候&#xff0c;不时给我们来个小惊喜。出于对Intellij IDEA的喜爱&#xff0c;我决定写一个与其相关的专栏或者系列&#xff0c;把一些好用的Intellij IDE…

SpringMVC中使用作用域对象完成数据的流转

文章目录SpringMVC中使用作用域对象完成数据的流转[1] 作用域对象复习[2] SpringMVC中使用作用域对象流转数据[3] SpringMVC的Model对象的使用SpringMVC中使用作用域对象完成数据的流转 [1] 作用域对象复习 PageContext对象 作用域范围:当前jsp页面内有效request对象 作用域范…

为什么总是喜欢看我桌面呢?

点击上方蓝色关注我们&#xff01;每天上课&#xff0c;尤其是19级&#xff0c;在刚刚连接上投影仪的那一瞬间&#xff0c;差不多50双眼睛盯着我的桌面看&#xff0c;由于桌面上的字比较小&#xff0c;所以大家眼睛都不带的眨一下的。我的桌面也没啥好看的呀&#xff0c;不就是…

原码,反码,补码

原码就是符号位加上真值的绝对值&#xff0c; 即用第一位表示符号&#xff0c; 其余位表示值。 反码的表示方法是:正数的反码是其本身&#xff1b;负数的反码是在其原码的基础上&#xff0c; 符号位不变&#xff0c;其余各个位取反。 补码的表示方法是:正数的补码就是其本身&am…

【2018.3.10】模拟赛之三-ssl2576 平台

目录地址 前言 水题不想说&#xff0c;连自带快排都懒得用了 正题 有n个平台&#xff0c;每个平台头尾有两根柱子支撑到地板或另一个平台上&#xff0c;求支撑平台需要的柱子数 输入输出&#xff08;需要自取&#xff09; Input 输入文件platforme.in第一行包括1个整数N…

再谈消息队列技术

上周&#xff0c;我们举办了第二届技术沙龙&#xff0c;我这边主要演讲了消息队列技术的议题&#xff0c;现分享给大家&#xff1a; 在我们团队内部&#xff0c;随着消息应用中心&#xff08;任务中心&#xff09;的广泛应用&#xff0c;有时候我们感觉不到消息队列的存在&…

服务器性能指标(二)——CPU利用率分析及问题排查

转载自 服务器性能指标&#xff08;二&#xff09;——CPU利用率分析及问题排查 平常的工作中&#xff0c;在衡量服务器的性能时&#xff0c;经常会涉及到几个指标&#xff0c;load、cpu、mem、qps、rt等。每个指标都有其独特的意义&#xff0c;很多时候在线上出现问题时&…

20级:班级日常分享,一天一瞬间

点击上方蓝色关注我们&#xff01;今天批改的作业不仅仅是卡个印有“优”字样式的章&#xff0c;当然也不仅仅是用红笔写个“SSSS9.28”字样的批语了。除了给每个学生的作业本上都卡了“优”的章之外&#xff0c;还送给每位同学一句或长或短的话&#xff0c;有表扬有批评&#…

SpringMVC的视图解析器

文章目录SpringMVC的自定义视图解析器[1] SpringMVC的视图解析器[2] SpringMVC的自定义视图解析器SpringMVC自定义视图解析器的使用[1] 目前项目资源的声明位置和访问中存在的问题[2] 使用自定义视图解析器优化资源跳转路径[3] 使用restful声明公共单元方法请求转发WEB-INF下的…

【2018.3.10】模拟赛之四-ssl2133 腾讯大战360【SPAF,图论,最短路径】

目录地址 前言 打错了一个地方之接60&#xff0c;还有输出“Peace”能拿60。还有题目坑爹害得我用了哈希&#xff0c;可以无视 QAQ 正题 有一个n*n的图&#xff0c;有m条边&#xff0c;不知道几个城市&#xff0c;给出两个位置&#xff0c;求两个位置移动到相遇&#xff08;…

互联网级监控系统必备-时序数据库之Influxdb技术

时间序列数据库&#xff0c;简称时序数据库&#xff0c;Time Series Database&#xff0c;一个全新的领域&#xff0c;最大的特点就是每个条数据都带有Time列。 时序数据库到底能用到什么业务场景&#xff0c;答案是&#xff1a;监控系统。 Baidu一下&#xff0c;互联网监控系…