Closest Cow Wins S 最近的奶牛获胜
Closest Cow Wins S 最近的奶牛获胜
题目描述
Farmer John 沿着一条高速公路拥有一个很长的农场,可以被看作类似于一维数轴。沿着农场有
Farmer John 需要选择
拥有最靠近某个草地的奶牛的农夫拥有这一草地。如果来自两方农夫的两头奶牛距这一草地相等,则 Farmer Nhoj 拥有该草地。
给定 Farmer Nhoj 的奶牛的位置以及草地的位置和美味值,求 Farmer John 的奶牛以最优方式放置时可以达到的最大总美味值。
输入格式
输入的第一行包含
以下
以下
输出格式
输出一个整数,表示最大总美味值。注意这个问题的答案可能无法用 32 位整数型存储,你可能需要使用 64 位整数型(例如,C 或 C++ 中的 "long long")。
样例 #1
样例输入 #1
6 5 2
0 4
4 6
8 10
10 8
12 12
13 14
2
3
5
7
11
样例输出 #1
36
提示
【样例解释】
如果 Farmer John 将奶牛放在位置
思路
先按照坐标排序
找出要占领每个草堆的最小距离,以这个为半径记录一条线段
暴力查找被最多线段覆盖的点
有一些小细节,自己看一下就好了。
code
#include <bits/stdc++.h>
#define LL long long
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
using namespace std;
const int N = 2e5 + 5;
const LL inf = 1e18 + 5;
LL ans;
LL k , m , n , cow[N] , tot = 1 , v[N];
struct node {
LL p , t;
} re[N];
struct Q {
LL l , r , t;
} q[N];
bool cmp(node x , node y) { return x.p < y.p; }
bool cmp2(Q x , Q y) {
if (x.l < y.l) return 1;
if (x.l == y.l && x.r < y.r) return 1;
else return 0;
}
int main () {
scanf ("%lld%lld%lld" , &k , &m , &n);
fu (i , 1 , k) scanf ("%lld%lld" , &re[i].p , &re[i].t);
fu(i , 1 , m) scanf ("%lld" , &cow[i]);
sort (re + 1 , re + k + 1 , cmp) , sort (cow + 1 , cow + m + 1);
fu (i , 1 , k) {
int r = upper_bound(cow + 1 , cow + m + 1 , re[i].p) - cow;
int l = r - 1;
if (r == 1)
q[i].l = max (0ll , re[i].p - (cow[r] - re[i].p)) , r = cow[r];
else if (r == m + 1)
q[i].l = cow[l] , q[i].r = min (re[i].p + re[i].p - cow[l] , inf);
else if (re[i].p - cow[l] <= cow[r] - re[i].p)
q[i].l = cow[l] , q[i].r = min (re[i].p + (re[i].p - cow[l]) , inf);
else
q[i].l = max (0ll , re[i].p - (cow[r] - re[i].p)) , q[i].r = cow[r];
q[i].t = re[i].t;
}
sort (q + 1 , q + k + 1 , cmp2);
v[tot] = q[1].t;
fu (i , 2 , k) {
if (q[i].l < q[i - 1].r)
v[tot] += q[i].t , q[i].r = q[i - 1].r;
else
v[++tot] += q[i].t;
}
sort (v + 1 , v + tot + 1);
int o = 0;
for (int i = tot ; i >= 1 ; i --) {
ans += v[i];
o ++;
if (o == n) printf ("%lld" , ans) , exit (0);
}
}
如果人生会有很长,愿有你的荣耀永不散场
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?