2 条题解
-
1
出题人题解
设在所有比赛结束后,进行 轮操作之前,SailTuT 的 Rating 为 ,Yue_chen 的 Rating 为 。
每一轮操作,SailTuT 的目标是尽可能减小 ,Yue_chen 的目标是尽可能扩大 。
又因为 Rating 可以为负数,所以,实际上初始 Rating = 1000 是无效信息,我们只需要关注双方 Rating 的差值。我们设 ,,当且仅当操作完成后 ,SailTuT 能取得胜利。
所以每一轮的操作应当是这样的:
-
轮到 SailTuT 操作时,减掉最不利的一轮,即 最大的一轮,然后 ,特别地,如果不存在 ,则不要操作;
-
轮到 Yue_chen 操作时,减掉最不利的一轮,即 最小的一轮,然后 ,特别地,如果不存在 ,则不要操作;
代码如下(C++):
#include <bits/stdc++.h> using namespace std; using ll = long long; void solve() { int n, t; cin >> n >> t; vector<int> a(n + 1), b(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; } vector<int> dis(n + 1); ll sumdis = 0; for (int i = 1; i <= n; i++) { cin >> b[i]; dis[i] = b[i] - a[i]; sumdis += dis[i]; } if (t == 0) { // 坑点:操作数为 0 cout << (sumdis < 0 ? "YES" : "NO") << "\n"; return; } sort(dis.begin() + 1, dis.end()); // 进行排序,方便找最值 int spos = n, ypos = 1; // 当前 d 的最值所在位置 for (int i = 1; i <= t; i++) { if (i & 1) { // SailTuT 操作 if (dis[spos] >= 0) { // 确保删除操作对自己有利,写 > 0 亦可 sumdis -= dis[spos--]; // spos-- 顺便更新了 spos 位置 } } else { // Yue_chen 操作 if (dis[ypos] <= 0) { sumdis -= dis[ypos++]; } } } cout << (sumdis < 0 ? "YES" : "NO") << "\n"; } signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int __t = 1; cin >> __t; while (__t--) { solve(); } return 0; }
-
-
0
SailTuT VS. Yue_chen
偶像对决吗有点意思 题目大意为去掉某些场次的影响判断最后帆神的rating是否可以严格大于肖神,那么可以将对应场次的帆神rating变化值与肖神rating变化值取差,并从小到大排序。对于帆神,当然要将自己提rating比肖神少的场次进行unrated,即将判断数组从左往右第一个小于0的值去掉,否则不操作;而对于肖神则正好相反,即尝试去掉最大的大于零的值。最后比较剩余元素的和是否大于0即可
参考代码(python)
from sys import stdin,setrecursionlimit from math import inf,ceil,sqrt from collections import Counter,deque for _ in range(int(stdin.readline())): n,t=[int(_) for _ in stdin.readline().split()] a=[int(_) for _ in stdin.readline().split()] b=[int(_) for _ in stdin.readline().split()] c=[a[i]-b[i] for i in range(n)] c.sort() l,r=0,n-1 for i in range(1,t+1): if i&1: if c[l]<0: l+=1 else: if c[r]>0: r-=1 s=0 for i in range(l,r+1): s+=c[i] if s>0: print('YES') else: print('NO')
- 1
信息
- ID
- 1099
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 22
- 已通过
- 3
- 上传者