2020牛客寒假算法基础集训营5

链接:link
来源:牛客网

A 模板

题目描述

用尽可能少的步数将一个字符串转化为另一个字符串,转化规则如下:

  • 将其中任意一个字母替换为另一个
  • 把最后一个字母删除
  • 在尾部添加一个字母

求最少步数

输入描述

输入数据共33行,第一行包括两个整数 n , m ( 1 ≤ n , m ≤ 1 0 5 ) n,m(1 \leq n,m \leq 10^5) n,m(1n,m105)表示两个字符串的长度
第二行包含一个长度为 n n n的字符串 s 1 s_1 s1,表示第一个字符串。
第三行包含一个长度为 m m m的字符串 s 2 s_2 s2,表示第二个字符串。

思路

做题做多了可能会以为是一个字符串匹配的dp,但一看题目,只能在尾部做添加和删除操作,所以只要前面的修改,不够的添加,就是最少步数了

AC代码

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define maxn 100005
using namespace std;
char word1[maxn],word2[maxn];
int ans;
int main(){
   
    int n, m;
    scanf("%d%d",&n,&m);
    scanf("%s%s",word1,word2);
    int mn=min(n,m);
    int mx=max(n,m);
    for(int i=0;i<mn;i++){
   
        if(word1[i]!=word2[i])ans++;
    }
    ans+=mx-mn;
    printf("%d",ans);
}

B 牛牛战队的比赛地

题目描述

由于牛牛战队经常要外出比赛,因此在全国各地建立了很多训练基地,每一个基地都有一个坐标 ( x , y ) (x,y) (x,y)
这周末,牛牛队又要出去比赛了,各个比赛的赛点都在 x x x轴上。牛牛战队为了方便比赛,想找一个到达训练基地最大距离最小的地方作为比赛地。

输入描述

输入数据第一行包含一个整数 N ( 1 ≤ N ≤ 100000 ) N(1 \leq N \leq 100000) N(1N100000),表示牛牛战队训练基地的数量。
接下来 N N N行,每行包括 2 2 2个整数 x , y ( − 10000 ≤ x , y ≤ 10000 ) x,y(-10000 \leq x,y \leq 10000) x,y(10000x,y10000),表示每一个训练基地的坐标。

思路

很容易想到二分答案,答案相当于半径,判断就是对每个点算出在这个半径下能够到达的x轴上的最左点和最右点,所有最右点的最小值大于所有最左点的最大值就表示可以

AC代码

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define maxn 100005
using namespace std;
struct Point{
   
    double x,y;
}p[maxn];
double l,r;
int n;
int check(double x){
   
    double resr,resl;
    resr=100000.0,resl=-100000.0;
    for(int i=1;i<=n;i++){
   
        if(x<fabs(p[i].y))return 0;
        double d=sqrt(x*x-p[i].y*p[i].y);
        resl=max(resl,p[i].x-d);
        resr=min(resr,p[i].x+d);
    }
    if(resr>=resl)return 1;
    return 0;
}
int main(){
   
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
   
        scanf("%lf%lf",&p[i].x,&p[i].y);
    }
    r=40000.0;
    l=0.0;
    while(r-l>1e-8){
   
        double mid=(l+r)/2;
        if(check(mid)==1)r=mid;
        else l=mid;
    }
    printf("%lf",l);
}

C C语言IDE

题目描述

链接:link
来源:牛客网

输入

输入将给出一个在C99标准下可以正常编译运行的C语言代码,同时此份代码具有以下约束:

  • 除引用头文件外,没有其他的编译预处理部分,如:#if,#ifdef,#ifndef,#else,#elif,#endif,#define,#undef,#error,#pragma,_Pragma,#line等。
  • 所有的函数的参数与返回值内不会出现任何形式的数组类型,如:char a[]等,如果有指针,保证指针的一定紧跟在类型名后,如char*,long long*等。保证不会出现函数指针。
  • 由单引号修饰的字符不可能是{,},(,),'或"。
  • 由双引号修饰的字符串内一定不包含{,},(,),‘或",也不包含’/’,’/’,’//'的子串。
  • 不会出现函数内嵌套函数的情况。
  • 不会在/* /内出现/ */的嵌套结构。
  • 不会把一句代码拆成两行写。
  • main函数的返回值一定是int类型。当一个函数没有返回值时,一定有前置void标识。
  • 程序内不会出现const标识符。
    输入数据大小保证小于10KB。

输出

按照以下的格式一行输出一个代码中出现的函数,你可以以任意顺序输出各个函数,每个函数仅可被输出一次。
返回类型名(包括void) 函数名(参数1类型,…,参数n类型)
类型里如有空格,每处最多保留一个空格。

思路

大模拟?

WA代码

不清楚到底有几种变量名。我觉得这题出的让我很难受。没过就不放了

D 牛牛与牛妹的约会

牛牛在辛苦的一天的比赛之后,要去找牛妹玩,其实牛妹那天也在比赛。他为了找到牛妹,要尽快的从自己的比赛地到她的比赛地。还记得吗,比赛地都是只在 x x x轴上,所以两个人的坐标都满足 y = 0 y=0 y=0。牛牛除了可以以
1 1 1单位距离/单位时间的速度移动任意时间以外,还可以花费 1 1 1单位时间进行闪现。每次闪现时,如果当前他的坐标是 x = k x=k x=k。他将闪现到 x = x= x= k 3 \sqrt[3]{k} 3k

思路

开始我以为这题要算出 k − 1 = k 3 k-1=\sqrt[3]{k} k1=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值