Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >命名那个数字

命名那个数字

作者头像
glm233
发布于 2020-09-28 02:14:40
发布于 2020-09-28 02:14:40
61200
代码可运行
举报
运行总次数:0
代码可运行

P3864 [USACO1.2]命名那个数字 Name That Number

分析:此题本来有个极复杂的代码,后来看了某位大佬的stl解法,感觉极为简便自己写了一个,

采用*lower_bound指针操作学到了(其功能是查询区间中匹配字符串)

还有substr(n)b表示截取第n个字符后的字符串,(substr的一种用法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
string s[5000],k[3*3*3*3*3*3*3*3*3*3*3*3+1];
string num,key[10]={"","","ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"};
int cnt,flag;
void dfs(string num,string result)
{
    if(num.empty())
    {
        k[cnt++]=result;
        return ;
    }
    for(int i=0;i<3;i++)dfs(num.substr(1),result+key[num[0]-'0'][i]);
    return ;
}
int main()
{
    ios::sync_with_stdio(false);
    cin>>num;
    for(int i=1;i<=4617;i++)
    {
        cin>>s[i];
    }
    dfs(num,"");
    for(int i=0;i<cnt;i++)
    {
        if(*lower_bound(s+1,s+4618,k[i])==k[i])
        {
              cout<<*lower_bound(s+1,s+4618,k[i])<<endl;
            flag=1;
        }
    }
    if(!flag)cout<<"NONE"<<endl;
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Arranging Your Team HDU - 3720 【DFS】
题意:此题大意是指首先给你23个队员的信息,包括他们的名字,能力值,在赛场上的职位。然后给出几个若能满足某两个队员同时在球场上就额外加上一定的值。最后让你从23个队员中选出11个人,使得最终的value最大。 具体思路:由于从样例中可以发现字符串比较多,加之需要进行姓名和姓名、score之间关系的记录,这就用到了map。利用dfs对所有队员进行遍历,具体说明在代码中指出。
_DIY
2019/08/23
2850
敢死队
这里牵涉一个是否要考虑按照顺序的问题。 如 132 和 123 表示的是一种情况,对于这种情况要进行排除 我的思路是 集中从小到大排序。
Max超
2019/01/21
3350
【USACO 1.2】Name That Number
给你一串数字(≤12个),每个数字可以对应3个字母,求生成的所有字符串里,在字典内的有哪些。
饶文津
2020/06/02
3870
搜索(DFS BFS)专题练习
题意:很简单的问题,就是一个地图,上面S是入口,然后E是出口。#代表陷阱不能走,问我们是否能够走出迷宫。
杨鹏伟
2020/09/10
4550
Codeforces Round #560 (Div. 3)
给你n个数,这n个数是x的所有因子(除了1和x),若存在,则把n个数排序,任何对称的两个数之积就是,
用户2965768
2019/06/14
4110
Archived | 306-07-关系型容器
我们可以发现所谓一些数据结构比如说数组和链表,它们都有一些相似的性质。我们看下面两个例子:
gyro永不抽风
2021/05/21
4470
Codeforces Round #806 (Div. 4)(A~F)
A. YES or YES? 题目大意 Origional Link 判断是否是yes顺序的不区分大小写的字符串 是则输出YES,否则输出NO 思想 读入暴力判断 代码 #include <bits/
浪漫主义狗
2022/09/16
3790
UVA - 1152 --- 4 Values whose Sum is 0(二分)
首先枚举a和b, 把所有a+b记录下来放在一个有序数组,然后枚举c和d, 在有序数组中查一查-c-d共有多少个。注意这里不可以直接用二分算法的那个模板,因为那个模板只能查找是否有某个数,一旦找到便退出。利用lower_bound,upper_bound比较方便,这两个函数就是用二分实现的,二者之差就是相等的那部分。
_DIY
2019/09/11
3590
超超超高频面试题,快来混个脸熟(二)
这套题是某大厂为在校生举办的活动,据说是大厂高频面试原题,我代大家刷一刷,给大家伙混个脸熟
ACM算法日常
2021/09/28
4320
不得不说,牛客多校题目质量确实是不错的
题意:定义 表示与结点 相邻的点集,给出一列边。要求支持下面两个操作:
ACM算法日常
2021/12/06
4300
补题A-E Codeforces Round 953 (Div. 2)
假设每个点都投资1元,对于a[i],投资1元的期望收益是a[i]/n,总的期望收益是sum(a)/n。
WuShF
2025/02/26
831
补题A-E Codeforces Round 953 (Div. 2)
hdu4288 Coder(段树+分离)
就是直接申明一个vector的容器。然后直接用vector里面的操作比方 insert,erase等等操作。
全栈程序员站长
2022/07/05
2240
离散化思想详细讲解
1.什么是离散化 数据离散化是一个非常重要的思想。 为什么要离散化?当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。 打个比方,某个题
杨鹏伟
2020/09/10
9580
【小码匠自习室】CSP-J/S复赛准备:STL复习(二)
注:本文部分内容源于厳選!C++ アルゴリズム実装に使える 25 の STL 機能【後編】,针对日文进行了翻译
小码匠
2022/12/06
9720
消除文法的左递归
其中,β是不以P开头的符号串。那么,我们可以把P的规则改写为如下的非直接左递归形式:
里克贝斯
2021/05/21
4.2K0
消除文法的左递归
USACO银组2024-01月题解分享 :T1最难, T3小学奥数,360太恶心
题面:https://www.luogu.com.cn/problem/P10136
小码匠
2024/02/21
3940
USACO银组2024-01月题解分享 :T1最难, T3小学奥数,360太恶心
C++上机考试试题解析
C++上机考试试题解析 0x1 求日期是该年的第几天 输入日期(年、月、日),输出它是该年的第几天。 Input year, month, day:1981 3 1 判断闰年方法:a%4==0&&a%100!=0||a%400==0 #include<iostream> using namespace std; int main() { cout<<"Input year, month, day:"; int a,b,c,temp=0; int days,i; cin>>a
慕白
2018/07/06
6.1K0
Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
最长上升子序列(Longest Increasing Subsequence),简称LIS,也有些情况求的是最长非降序子序列,二者区别就是序列中是否可以有相等的数
IsLand1314
2024/10/15
1480
Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
牛客小白月赛22 A~~J
A.链接:https://ac.nowcoder.com/acm/contest/4462/A 来源:牛客网
杨鹏伟
2020/09/11
4070
你真的懂二分吗?
二分算法,又称为二分搜索或折半搜索,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分成两半,然后根据目标值与中间元素的大小关系来决定是继续在左侧还是右侧进行搜索。这个过程会不断重复,直到找到目标值或搜索范围为空为止。
摆烂小白敲代码
2024/09/23
1010
你真的懂二分吗?
相关推荐
Arranging Your Team HDU - 3720 【DFS】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验