B: 牛牛战队的比赛地(二分做法)
题意:二维平面给定n个点,在x轴找一点使得到n个点距离的最大值最小。

思路:
我们可以将问题转化为在x轴找到一个圆心,使得该圆包含这n个点且半径最小,这样就变成了最小圆覆盖问题。有关于最大值最小此类问题,我们第一个想到的就应该是二分了,关键在于二分半径后如何check呢?
首先我们需要明白这样一个前提,也是解题的关键点:一个半径为R的圆,我们任意在圆上或圆内找一个点,也做半径为R的圆,那么这个圆一定会包含之前那个圆的圆心。
明白了这个,问题就easy了,我们将二分得到的半径R,把n个点都拿来做这样半径为R的圆,与x轴相交的部分,说明圆心可能落在这一范围内,然后我们只要看这些区域是否产生矛盾就好了。比如点1与x轴相交范围为[3,6],点2为[7,10],没有相交的部分,显然答案矛盾,即不存在半径为R的圆可以包含全部点。

#include <bits/stdc++.h>
#define x first
#define y second
#define d double
using namespace std;
;
int n;
pair<d, d> p[N];

bool check(d o)
{
    d l, mi = -1e18, ma = 1e18;
    ; i <= n; i++)
    {
        if (o < fabs(p[i].y))
            return false;
        l = sqrt(o - p[i].y) * sqrt(o + p[i].y); ///等价于sqrt(o*o-p[i].y*p[i].y)
        mi = max(mi, p[i].x - l);
        ma = min(ma, p[i].x + l);
    }
    return mi <= ma; ///判断最大的左端点<=最小的右端点即可
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin >> n;
    ; i <= n; i++)
        cin >> p[i].x >> p[i].y;
    d l = , r = 1e18, mid;
    ;
    while (t--)
    {
        mid = (l + r) / 2.0;
        if (check(mid))
            r = mid;
        else
            l = mid;
    }
    cout << ) << r;
    ;
}

D:牛牛与牛妹的约会 (贪心)
题解:我们先明确何时开根号走会更优,即:x - x^(1/3) > 1,解得x>2.3247179,因此我们贪心的按开根号走直到x<=2.3247179,同时维护最小值即可。

#include <bits/stdc++.h>
using namespace std;
double cal(double x)
{
    , r = x, mid;
    ;
    while (q--)
    {
        mid = (l + r) * 0.5;
        if (mid * mid * mid >= x)
            r = mid;
        else
            l = mid;
    }
    return r;
}
int main()
{
    int t;
    while (~scanf("%d", &t))
    {
        while (t--)
        {
            double a, b;
            scanf("%lf%lf", &a, &b);
            , ans = fabs(a - b);
            )
            {
                while (a >= 2.3247179)
                {
                    now += 1.0;
                    a = cal(a);
                    ans = min(ans, fabs(a - b) + now);
                }
            }
            )
            {
                a = -a;
                b = -b;
                while (a >= 2.3247179)
                {
                    now += 1.0;
                    a = cal(a);
                    ans = min(ans, fabs(a - b) + now);
                }
            }
            printf("%.9f\n", ans);
        }
    }
    ;
}

E: Enjoy the game (博弈)
题解:多写几个就看出来了,是二次幂后手胜,否则先手胜。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    )))    ///判断是否为2次幂
        cout << "Alice";
    else
        cout << "Bob";
    ;
}

H:Hash (进制转化)
题解:
x%mod=p  不难得到  (x+mod)%mod=p
所以字符串加个mod就可以了,判一下长度是否还为6即可。

#include <bits/stdc++.h>
using namespace std;
], a[];
int mod, k, x;
int main()
{
    while (~scanf("%s%d", s, &mod))
    {
        memset(a, , sizeof(a));
        k = x = ;
        ; i < ; i++)
            x = x *  + s[i] - 'a';  ///转为10进制
        x += mod;
        while (x)      ///转回26进制
        {
            a[++k] = x % ;
            x /= ;
        }
        )
        {
            )  ///长度不够6补a即可
                k++;
            ; i--)
                printf("%c", a[i] + 'a');
        }
        else
            printf("-1");
        puts("");
    }
    ;
} 

2020牛客寒假算法基础集训营5 部分题解(BDEH)的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  4. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  5. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

  7. 2020牛客寒假算法基础集训营4 D:子段异或

    D : 子段异或 考察点 : 位运算,前缀和,异或的性质和应用 坑点 : 0 - L 的异或值是 0 的话也是一个区间 相同的值可能有多个,那么这时候区间就会有多个(x * (x + 1) / 2) ...

  8. 2020牛客寒假算法基础集训营6 I.导航系统 (最小生成树)

    https://ac.nowcoder.com/acm/contest/3007/I 题中给定的图必定是一棵树 容易发现,如果将输入的N(N-1)个距离看做N(N-1)条无向边的话,那么如果数据合法, ...

  9. 2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)

    https://ac.nowcoder.com/acm/problem/201961 预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时 ...

随机推荐

  1. Vue.js事件处理

    Vue.js事件处理 1.v-on指令 用法如下:使用v-on:指令指定其执行的具体内容或者方法名即可. <button v-on:click='num++'>giao</butto ...

  2. UDP单播、多播、广播

    一.UDP广播 广播使用的特殊的IP地址:最后一位是255时的IP地址是给广播预留的IP地址,如:192.168.88.255 广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.2 ...

  3. js取值问题----key为数字

    今天远程调用一个接口在处理返回的数据的时候突然发现数组的Key是一个数字 然后如果继续用“.”的话是不会的,会报错 要用中括号就可以解决

  4. springboot内嵌定时任务使用及cron表达式讲解

    第一步:pom引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

  5. vue 加载静态图片

    <img class="headImg" :src="require('../../assets/uploads/'+headImg)" alt=&quo ...

  6. 文本情感分析(二):基于word2vec、glove和fasttext词向量的文本表示

    上一篇博客用词袋模型,包括词频矩阵.Tf-Idf矩阵.LSA和n-gram构造文本特征,做了Kaggle上的电影评论情感分类题. 这篇博客还是关于文本特征工程的,用词嵌入的方法来构造文本特征,也就是用 ...

  7. 移动端 三段式布局 (flex方式)

    分享一种平时用的三段式布局(flex) 主要思路是  上中下    header&footer 给高度  main 占其余部分 html 部分 <div class='wrap'> ...

  8. Java中数组的创建

    Java中数组的使用 1.普通数组变量的定义: //数组 //1.数组是Java中很重要的一部分,今天对数组进行了大致的了解,Java中的数组和C中数组还是有一定的区别的 //以下是总结的几种方法 p ...

  9. Numpy中np.random.randn与np.random.rand的区别,及np.mgrid与np.ogrid的理解

    np.random.randn是基于标准正态分布产生的随机数,np.random.rand是基于均匀分布产生的随机数,其值在[0,1). np.mgrid 与np.ogrid的理解及区别:np.mgr ...

  10. php.basic.functions

    array_unshift call_user_func_array闭包 下面是学院的代码 class Container { protected $binds; protected $instanc ...