【dfs】数字

题目大意

给出x,问你不小于x,且由相同个数的4和7组成的最小的数


解题思路

对于奇数位和大于当前位数最大数的直接特判掉

对于其他的dfs枚举,因为如果一个位置放得比原数大,那么后面的都确定了,所以是O(n)的


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100100
using namespace std;
int n,pp,a[N];
char s[N];
bool dfs(int x,int num1,int num2)
{if(x>n) return true;if(s[x]<'4'&&num1){//比原数大,那么后面直接贪心放最小的a[x]='4';num1--;for(int i=x+1;i<=n;++i)if(num1)a[i]='4',num1--;else a[i]='7',num2--;return true;}if(s[x]=='4'&&num1){a[x]='4';if(dfs(x+1,num1-1,num2))//尝试匹配return true;}if(s[x]<'7'&&num2){a[x]='7';num2--;for(int i=x+1;i<=n;++i)if(num1)a[i]='4',num1--;else a[i]='7',num2--;return true;}if(s[x]=='7'&&num2){a[x]='7';if(dfs(x+1,num1,num2-1))return true;}return false;
}
int main()
{while(~scanf("%s",s+1)){n=strlen(s+1);if(n&1){for(int i=1;i<=(n+1)/2;++i)putchar('4');for(int i=1;i<=(n+1)/2;++i)putchar('7');putchar(10);}else{pp=0;for(int i=1;i<=n/2;++i)if(s[i]>'7'){pp=1;break;}else if(s[i]<'7'){pp=2;break;}if(!pp){for(int i=n/2+1;i<=n;++i)if(s[i]>'4'){pp=1;break;}else if(s[i]<'4'){pp=2;break;}}if(!pp){for(int i=1;i<=n/2;++i)putchar('7');for(int i=1;i<=n/2;++i)putchar('4');putchar(10);}else if(pp==1){for(int i=1;i<=n/2+1;++i)putchar('4');for(int i=1;i<=n/2+1;++i)putchar('7');putchar(10);}else{if(dfs(1,n/2,n/2)){for(int i=1;i<=n;++i)putchar(a[i]);putchar(10);}}}}return 0;
}

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

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

相关文章

【dfs】飞行棋

题目大意 给你一个n*m的网格&#xff0c;现在让你往里面填1~k&#xff08;有的位置已经填了&#xff09;&#xff0c;使其满足所有从(1,1)到(n,m)的路径不会经过相同的数字&#xff08;只能往下或往右&#xff09;&#xff0c;求方案数 解题思路 对于k<nm-1的&#xff0c;…

API测试工具SoapUI Postman对比分析

最近公司要引入API测试工具&#xff0c;经过调查和了解&#xff0c;最终决定在SoapUI 和 Postman两种工具之间做一个选择&#xff0c;两种工具在业界都很有名&#xff0c;相信很多人两种工具也都曾使用过。SoapUISoapUI是一个开源测试工具&#xff0c;通过soap/http来检查、调用…

[POI2008]STA-Station

之前都看过有换根dp&#xff0c;一直不知道是啥意思&#xff0c;本来弱弱树形dp都不太熟悉&#xff0c;不过今天工数课的时候突然想看一下&#xff0c;写个板子题练练吧。 对于我的理解&#xff0c;换根的题目一般是根不确定&#xff0c;而求得答案与根是谁有关&#xff0c;而…

Reports

试题hduoj 题意&#xff1a; 如果相邻的任意两个数相同的话&#xff0c;则输出NO&#xff0c;反之输出YES。 题解&#xff1a; 水题 我队友做的 代码&#xff1a; #include<bits/stdc.h> #define inf 1<<30 #define maxn 200000 using namespace std; int k…

【结论】分肉

题目大意 有两个数x,y&#xff0c;一轮中&#xff0c;如果x≤yx\leq yx≤y&#xff0c;那么xx,y-x&#xff0c;否则x-y,yy&#xff0c;回答经过k轮后较小的数 解题思路 可以发现xy是保持不变的&#xff0c;且x−yx2−x−y,x2>xy(x>y)x-yx\times 2-x-y,x\times 2>xy(…

在 Windows 上可以用 Docker 吗?| 洞见

简介Docker&#xff0c;或者准确一点说&#xff0c;容器技术&#xff0c;在近几年里几乎成为了应用分发和集群部署的默认技术了。背景部分&#xff0c;如果感兴趣&#xff0c;请参考闲谈集群管理模式一文。Docker 生态的成熟还有赖于其周边工具和实践模式的兴起。比如&#xff…

泰勒及洛朗展开学习笔记

2020-1024996 最近太忙了&#xff0c;今天好像没有写题&#xff0c;不过研究了一下数学hh。 2020.10.24今天又有工数课&#xff0c;我又没听&#xff0c;我记得上节工数课我看了换根dp&#xff0c;哦&#xff1f;好吧我没听过工数&#xff0c;那没事了&#xff0c;不过这次不敢…

【结论】串串串(nowcoder 20107-A)

正题 nowcoder 20107-A 题目大意 给你两个01串&#xff0c;有若干询问&#xff0c;每次询问两段长度相等的字串不同位数的奇偶性 解题思路 因为只用判断奇偶性&#xff0c;所以同时修改两个字符是不会改变结果的&#xff0c;那么可以直接将字串修改为只有0/1个1的串&#xf…

SmartSql For Asp.Net Core 最佳实践

常规操作安装 SmartSqlInstall-Package SmartSql安装 SmartSql.DIExtensionInstall-Package SmartSql.DIExtension配置SmartSqlConfig.xml写库&#xff08;Write&#xff09;必选 唯一节点读库&#xff08;Read&#xff09;可选 多节点配置PostgresqlPostgresql 客户端 NpgsqlI…

矩阵乘法学习记录

这要从校赛的一个区间与非操作题说起&#xff0c;群里大佬用的ddp思想使其满足结合律&#xff0c;但是我连矩阵乘法都不会于是从头开始学习矩阵乘法。 P3390 【模板】矩阵快速幂 和快速幂一模一样&#xff0c;只是把数乘换成矩阵乘&#xff0c;只需要定义结构体矩阵然后重载一…

51nod1600-Simple KMP【SAM,树链剖分】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1600 题目大意 给出一个字符串sss&#xff0c;每次在最后插入一个字符后求它的所有分别子串构出的failfailfail树的深度和。 1≤Q≤1051\leq Q\leq 10^51≤Q≤105 解题思路 考虑两个相等的子串长度为le…

课程 预编译框架,开发高性能应用 - 微软技术暨生态大会 2018

微软技术暨生态大会&#xff08;Tech Summit&#xff09;&#xff0c;2018 年在上海世博中心召开。这是最后一次的 Tech Summit 了&#xff1b;明年开始&#xff0c;中国大陆地区就要和其他国家和地区一样&#xff0c;进行全球 Ignite Tour 了。我也有幸成为分会场讲师团队的一…

【DP】方格计数(nowcoder 20107-B)

正题 nowcoder 20107-B 题目大意 在一个H*W的平面上&#xff0c;选择N个点&#xff08;坐标为非负整数&#xff09;&#xff0c;使得每个点之间的距离大于D&#xff0c;问你有多少种方案 解题思路 设fi,j,kf_{i,j,k}fi,j,k​为有i个格子&#xff0c;选择k个格子&#xff0c;…

YbtOJ#853-平面标记【整体二分,凸壳】

正题 题目链接:http://www.ybtoj.com.cn/contest/119/problem/3 题目大意 给出nnn个点(xi,yi)(x_i,y_i)(xi​,yi​)&#xff0c;mmm次给出(ki,ai)(k_i,a_i)(ki​,ai​)表示标记所有满足 yj>kixjaiy_j>\frac{k_i}{x_j^{a_i}}yj​>xjai​​ki​​的未标记点 求每个点…

Ocelot简易教程(五)之集成IdentityServer认证以及授权

最近比较懒&#xff08;编者注&#xff1a;作者不是真懒&#xff0c;而是在憋大招&#xff0c;他最近实现了把Ocelot的配置使用数据库存储&#xff09;&#xff0c;所以隔了N天才来继续更新第五篇Ocelot简易教程&#xff0c;本篇教程会先简单介绍下官方文档记录的内容然后在前几…

【启发式合并】【dfs】树数树(nowcoder 20107-C)

正题 nowcoder 20107-C 题目大意 给一棵树&#xff0c;让你构造一个序列a&#xff0c;使得a中的数互不相等&#xff0c;且相邻点是祖先的关系&#xff0c;回答序列最长长度 解题思路 书中的每个点可以把字数的两个序列连起来 考虑维护一个堆&#xff0c;存子树中的序列&…

CF848E-Days of Floral Colours【dp,分治NTT】

正题 题目链接:https://www.luogu.com.cn/problem/CF848E 题目大意 2n2n2n个花排成一个圆环&#xff0c;nnn种颜色每种两个&#xff0c;要求两个相同颜色之间最小距离为1,21,21,2或nnn。 对于一种染色方案的权值为&#xff1a;删除掉距离为nnn的颜色后&#xff0c;剩下的连续…

2020 China Collegiate Programming Contest Qinhuangdao Site 补题部分

已经补AEFGK E. Exam Results 枚举二分动态开点权值线段树O(nlogN)O(nlogN)O(nlogN) 智商太低&#xff0c;想不到什么贪心只能暴力数据结构维护 对于所有学生的最高成绩只可能是ai(1≤i≤n)a_i(1\leq i\leq n)ai​(1≤i≤n)或者最大的bib_ibi​&#xff0c;对于后面一种情况…

CCPC Training Class

杭电oj 题意&#xff1a; 字符串中出现次数最多的字母的次数是多少&#xff1f; 题解&#xff1a; 题目看不懂。。。又臭又长 懒得看。。 但是仔细看样例就会发现。。其实考的很简单 比赛时这题是我做的&#xff0c;以下为考试原码 代码&#xff1a; #include<string&…

【交互】Omkar and the Meaning of Life(CF-1586D)

正题 CF-1586D 题目大意 有一个大小为n的数列a&#xff0c;你可以进行最多2*n次查询 对于每次查询&#xff0c;你要给出一个大小为n的数列b&#xff0c;ciaibic_ia_ib_ici​ai​bi​&#xff0c;题目会回答c中出现次数大于2的数的最早出现位置 现在让你得出a数组 解题思路 …