zoukankan      html  css  js  c++  java
  • noip模拟赛 幻灯结界

    题目描述
    59式给你出了一道**题:
    n个防御人(守方)还有n个攻击坦克(攻方)
    每个防御人有护甲a[i],而攻击方每个坦克有火力b[i]
    如果一个防守方的护甲不小于攻击方的攻击力,就可以防的住
    然而我们保持了最大限度的克制,所以每个攻击方的攻击力都减去了t
    而且防守方有zcy所以你有x次机会加强一个人的护甲,把它的护甲变成y
    求安排一个防御的方案,一个人正好对一个坦克,使得t尽可能的小,并且满足没有人被坦克打败。
    然而由于zcy吊打集训队,所以不要求你输出方案,只要求输出最小的可能的t
    这个t是根据你的人和坦克的配对方案而变化的,不是人为给出的
    可以认为你给出了一个方案后,某某某才确定出了这个t值,而你要让某某某确定出的这个t值最小
    也就是说这个题求的就是那个最小的t

    输入输出格式
    输入格式:
    第一行三个数n,x,y
    之后一行n个数表示每个守方的护甲
    之后一行n个数表示每个攻击坦克的火力
    输出格式:
    一行一个数表示答案
    输入输出样例
    说明
    样例#3#4#5#6见下发的文件
    【子任务】
    子任务会给出部分测试数据的特点。
    如果你在解决题目中遇到了困难, 可以尝试只解决一部分测试数据。
    每个测试点的数据规模及特点如下表:
    测试点编号 n的范围   x的范围   y的范围
    输入样例#1
    2 0 0
    6 4
    8 9
    输出样例#1
    4
    输入样例#2
    8 6 4
    1 9 2 6 0 8 1 7
    6 4 6 4 8 9 8 9
    输出样例#2
    2
    测试点编号 n的范围   x的范围   y的范围
    测试点1 n = 10 x = 0 无限制
    测试点2 n = 10 x = 0 无限制
    测试点3 n = 10 无限制 y = 0
    测试点4 n = 10 无限制 y = 0
    测试点5 n = 1000 x = 0 无限制
    测试点6 n = 1000 x = 0 无限制
    测试点7 n = 1000 无限制 y = 2000000000
    测试点8 n = 1000 x = n 无限制
    测试点9 n = 100000 无限制 无限制
    测试点10 n = 200000 无限制 无限制
    对于100%的数据,n <= 200000 , 0<=ai,bi,x,y<=2000000000
    【说明】
    【样例1说明】
    当克制值t4的时候
    用守卫4挡坦克8,守卫6挡坦克9
    可以挡住
    【样例2说明】
    当克制值t2的时候
    把守卫0112都变成4
    之后按如下顺序排列守方和攻击方
    9 4 6 4 4 8 7 4
    9 6 8 4 6 9 8 4

    分析:比较水的一道题,这x次肯定是用的越多越好,把最小的x个提出来,看看能不能用y替代,每个值肯定都要比y小,把修改后的数组排个序,坦克也排个序,从小到大一一匹配就好。

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int maxn = 200010;
    
    int n, x, y, a[maxn], b[maxn], ans;
    
    int main()
    {
        scanf("%d%d%d", &n, &x, &y);
        for (int i = 1; i <= n; i++)
            scanf("%d", &a[i]);
        for (int i = 1; i <= n; i++)
            scanf("%d", &b[i]);
        sort(a + 1, a + 1 + n);
        sort(b + 1, b + 1 + n);
        for (int i = 1; i <= x; i++)
            a[i] = max(a[i], y);
        sort(a + 1, a + 1 + n);
        for (int i = 1; i <= n; i++)
            ans = max(ans, b[i] - a[i]);
        printf("%d
    ", ans);
    
        return 0;
    }
  • 相关阅读:
    Es module vs require
    phaser3 画虚线实现
    新的计划
    [转]Boostrap Table的refresh和refreshOptions区别
    Storing Java objects in MySQL blobs
    【转】Ubuntu下搜狗输入法突然无法输入中文
    团队作业六
    团队作业七
    团队作业四
    团队作业三
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7658986.html
Copyright © 2011-2022 走看看