题意 :

  • 两人比赛,n个裁判,给分范围[1,h][1, h][1,h],去掉s个最高分和t个最低分,给出n - 1个裁判的给分,第n个裁判想让第1个人赢,并且最小化给1的分数a[n]a[n]a[n] - 给2的分数b[n]b[n]b[n]。

思路 :

  • 显然得出impossible的情况和直接输出“1 - h“的情况后,第一个人的最后得分为了比第二个人高,需要ax比bx高sumb - suma + 1分(相对,不论正负),事实上由于弹性移动,an可能可以更左,bn 可能可以更右,因此分类讨论。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <ctime>
#define endl '\n'
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define lowbit(x) (x&-x)
using namespace std;
const double pi = acos(-1);
typedef long long ll;
typedef pair<int, int> PII;
typedef pair<long, long> PLL;const int N = 1e5 + 10;ll a[N], b[N];int main()
{IOS;int _; cin >> _;while (_ -- ){ll n, s, t, h;cin >> n >> s >> t >> h;for (int i = 1; i <= n - 1; i ++ ) cin >> a[i];for (int i = 1; i <= n - 1; i ++ ) cin >> b[i];sort(a + 1, a + n);sort(b + 1, b + n);// s = 0 / t = 0a[0] = b[0] = 1;a[n] = b[n] = h;ll suma = 0, sumb = 0;int l = t + 1, r = n - 1 - s;for (int i = l; i <= r; i ++ ) suma += a[i], sumb += b[i];ll amx = suma + a[r + 1], ami = suma + a[l - 1];ll bmx = sumb + b[r + 1], bmi = sumb + b[l - 1];if (ami > bmx) cout << 1 - h << endl;else if (amx <= bmi) cout << "IMPOSSIBLE" << endl;else{ll ans = 0;if (ami > bmi) ans = max(ans, a[l - 1] - 1);if (amx > bmx) ans = max(ans, h - b[r + 1]);cout << sumb - suma + 1 - ans << endl;     // 至少需要的差值减去可以更大的差值部分}}return 0;
}

Unfair contest 模拟-分类讨论相关推荐

  1. Vasya and Multisets CodeForces - 1051C 模拟|分类讨论

    题意:把数组分成两个集合 每个集合中元素数量为1的个数相同(此个数可以是0) 分析: 这类问题就是要各种可能情况考虑到     然后分类讨论     完整地正确分类就AC     否则gg 如果数量为 ...

  2. HDU 6627 equation(模拟,分类讨论)

    题意:给你n个ai和bi,给你C,求解方程: 分析:初中数学,分类讨论破除绝对值符号.每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一 ...

  3. 模拟赛Day1(20200203) T1 垃圾题【分类讨论+枚举+dp解决等价匹配问题】

    题目描述: 题目分析: 看到bbb的长度为5,可以感觉到这题就是在锻炼强大合理的分类讨论能力. 首先看bi≤2b_i\le2bi​≤2的部分分,即只有两种数字. 枚举这两种数为x,yx,yx,y,数量 ...

  4. Unfair contest(个人做法)

    Unfair contest 题意: 两个人参赛,n个评委打分,去掉s个最高分,去掉t个最低分,剩下分求平均分,平均分大的获胜.你是第n个评委,此时已知前n-1个评委所打分数,现在轮到你打分,要求你在 ...

  5. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...

  6. P2331 [SCOI2005]最大子矩阵(DP分类讨论)

    P2331 [SCOI2005]最大子矩阵(DP&分类讨论) 考虑dp解决. 若m=1m=1m=1则是一个简单的递推. 若m=2m=2m=2则是分情况讨论. 一个是当前行不取. 一个是选第一列 ...

  7. 分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)

    题目链接 题目大意: 就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少? 解题思路: 大佬有直接二 ...

  8. 2020ICPC(上海) - Walker(分类讨论+二分)

    题目链接:点击查看 题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少 题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2: p1 ...

  9. 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)

    [UOJ#33][UR #2]树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演,那么利用倍数形式,我们只需要求解是i的倍数的对数. 考虑枚举lca,这个 ...

最新文章

  1. apache+tomcat 子目录映射成子域名
  2. DBGrid内使用CheckBox功能
  3. 在Eclipse中使用Java 12
  4. Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
  5. 动手学pytorch之tensor数据(一)
  6. linux rdma服务,容器网络启用RDMA高速通讯-Freeflow
  7. 回溯法解决0-1背包问题
  8. java文件迁移工具,Java的迁移
  9. 新的域名,新的空间,这里不再更新了。
  10. \n \r \r\n
  11. Oracle with..as使用方法
  12. Android Window/Window Z-Order/Surface/SurfaceView
  13. OEM 13c 监控RAC部署
  14. 看aps高级排产如何实现生产计划智能排产
  15. DiskPart使用方法(ZT)
  16. JavaScript完成简单的对联广告
  17. Rust 中的指针:Box、Rc、Cell、RefCell
  18. 国际会议查询方式和相关会议
  19. 计算机中丢失ubiorbitapi,我的刺客信条出现无法启动此程序,因为计算机中丢失ubiorbitapi_r2_loader.dll,,怎么处理。。...
  20. C语言大数相乘(整形)

热门文章

  1. 【转】后勤常用查询报告
  2. VF01自动生成会计凭证
  3. 9种蔬菜吃不对胜似砒霜
  4. 21、Power Query-列文本格式处理
  5. OA系统常见的审批流程
  6. SAP进销存难点分析及对策
  7. 不知事务码MB1A / MB1B / MB1C之间有什么区别吗?
  8. 使用AT SELECTION-SCREEN事件验证用户输入条件的反思
  9. Function One
  10. 发挥数据库价值,企业实现最大数据价值挖掘的路径在这里