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. Linux之文件传输

    本文借鉴<Linux命令大全> 1. bye命令 功能:终端FTP连线并结束程序 语法:bye 补充:在ftp模式下,输入bye即可中断目前的连线作业,并结束ftp的执行. 2. ftp命 ...

  2. 渗透测试神器Burp Suite v1.7.11发布(含下载)

    BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了Proxy,Spider,Scanner,Intruder,Repeater,Sequenc ...

  3. 将OB86的故障信息保存在DB86中去

    出现DP站故障的时候,CPU会自动调用OB86 ,OB86 的20B 局部变量里面有丰富的故障信息,生成数据块DB86 在DB86 中生成5个双字元素的数组ARAY 在OB86中调用 "BL ...

  4. [Codeforces]1263B PIN Code

    题目 A PIN code is a string that consists of exactly 444 digits. Examples of possible PIN codes: 70137 ...

  5. tensorflow学习笔记(二)常量、变量、占位符、会话

    常量.变量.占位符.会话是tensorflow编程的基础也是最常用到的东西,tensorflow中定义的变量.常量都是tensor(张量)类型. 常量tf.constant() tensorflow中 ...

  6. Java中JSON字符串与java对象的互换实例详解(转)

    http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...

  7. leetcode1 twoSum

    """ Given an array of integers, return indices of the two numbers such that they add ...

  8. 看完本文,Essay写作再也不需要凑字数

    很多同学都说过自己写论文的时候出现“词穷”的情况,无奈只能靠“胡编乱造”来凑字数写出开头段,这其实是大家的阅读量没有达到要求.但不能因为出现这种情况就对自己的论文不负责任,否则你的论文分数可能就不会对 ...

  9. Java For 循环

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  10. 【pwnable.kr】input

    这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...