首页 > 其他分享 >Closest Cow Wins S 最近的奶牛获胜

Closest Cow Wins S 最近的奶牛获胜

时间:2023-07-11 21:11:36浏览次数:50  
标签:10 John Closest Cow Wins 样例 草地 Farmer 奶牛

Closest Cow Wins S 最近的奶牛获胜

题目传送门

目录

题目描述

Farmer John 沿着一条高速公路拥有一个很长的农场,可以被看作类似于一维数轴。沿着农场有 \(K\) 块草地(\(1 \leq K \leq 2\cdot 10^5\));第 \(i\) 块草地位于位置 \(p_i\) 并具有美味值 \(t_i\)(\(0\le t_i\le 10^9\))。Farmer John 的死对头 Farmer Nhoj 已经将他的 \(M\) 头奶牛(\(1 \leq M \leq 2\cdot 10^5\))放在了位置 \(f_1 \ldots f_M\) 。所有这些 \(K+M\) 个位置均是 \([0,10^9]\) 范围内的不同整数。

Farmer John 需要选择 \(N\)(\(1\le N\le 2\cdot 10^5\))个位置(不一定是整数)放置他的奶牛。这些位置必须与 Farmer Nhoj 的奶牛已经占用的位置不同,但是 Farmer John 可以将他的奶牛放在与草地相同的位置。

拥有最靠近某个草地的奶牛的农夫拥有这一草地。如果来自两方农夫的两头奶牛距这一草地相等,则 Farmer Nhoj 拥有该草地。

给定 Farmer Nhoj 的奶牛的位置以及草地的位置和美味值,求 Farmer John 的奶牛以最优方式放置时可以达到的最大总美味值。

输入格式

输入的第一行包含 \(K\)、\(M\) 和 \(N\)。

以下 \(K\) 行每行包含两个空格分隔的整数 \(p_i\) 和 \(t_i\)。

以下 \(M\) 行每行包含一个整数 \(f_i\)。

输出格式

输出一个整数,表示最大总美味值。注意这个问题的答案可能无法用 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 将奶牛放在位置 \(11.5\) 和 \(8\) 则他可以得到总美味值 \(10+12+14=36\)。

思路

先按照坐标排序

找出要占领每个草堆的最小距离,以这个为半径记录一条线段

暴力查找被最多线段覆盖的点

有一些小细节,自己看一下就好了。

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);
    }
}

标签:10,John,Closest,Cow,Wins,样例,草地,Farmer,奶牛
From: https://www.cnblogs.com/2020fengziyang/p/17545941.html

相关文章

  • 在WinServer 2022 Core 上安装SCVMM2022和SqlServer2022
    在WindowsServer2022Core上安装SystemCenterVirtualMachineManager(VMM)2022管理服务器和SqlServer2022CU5系统环境如下:OS:windowsserver2022CoreDataCenterDB:SqlServer2022withCU5ADK: Windows11版本22H2的ADK: https://learn.microsoft.com/zh-cn/wi......
  • LWC 51:681. Next Closest Time
    LWC51:681.NextClosestTime传送门:681.NextClosestTimeProblem:Givenatimerepresentedintheformat“HH:MM”,formthenextclosesttimebyreusingthecurrentdigits.Thereisnolimitonhowmanytimesadigitcanbereused.Youmayassumethegiveninp......
  • P3047 [USACO12FEB] Nearby Cows G
    #include<iostream>#include<vector>usingnamespacestd;constintN=100010,M=30;intn,m;intw[N];vector<int>g[N];intf[N][M],ans[N][M];voidDP1(intu,intfa){ for(inti=0;i<=m;i++)f[u][i]=w[u]; for(intx:g......
  • P3089 [USACO13NOV] Pogo-Cow S 弹簧踩高跷
    P3089[USACO13NOV]Pogo-CowS弹簧踩高跷洛谷题目传送门目录P3089[USACO13NOV]Pogo-CowS弹簧踩高跷题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示题目大意方法一(线段树维护dp)code方法二(单调队列维护dp)code题目描述Inanill-conceivedattempttoenhanc......
  • winscp 使用root身份登录
    一般root账户在服务器上会被禁止ssh,此时普通用户需要通过sudo执行管理员权限命令。如果需要使用winscp,会有普通用户权限不足的问题。本文提供一个方法可使用普通用户通过sudo提权使用winscp的方法首先确认自己的普通账户sudo能够免密码执行,然后在服务器上查看sftp-server程序......
  • 非静态内部类newInstance
    https://stackoverflow.com/questions/25634542/newinstance-with-inner-classes Non-staticinnerclassesneedaninstanceoftheouterclasstoworkproperly.So,theydon't"really"haveadefaultconstructor,theyalwayshaveakindofhidd......
  • qcow2云镜像,内置启动初始化配置文件及说明
    云镜像,内置启动初始化配置文件及说明cat/etc/cloud/cloud.cfg|egrep-v"^$|^#"users:-defaultdisable_root:truepreserve_hostname:falsecloud_init_modules:-migrator-seed_random-bootcmd-write-files-growpart-resizefs-disk_setup-mounts......
  • winserver2012 登录秘密找回
      参考:https://wenku.csdn.net/answer/a7ed8fe6403cc45052a9a2f0d88601d6 实践后的方法:①登录界面连续点击多次【shift】点击多次后会弹出任务管理器,如图 ②文件》运行新任务》cmd》确定或者:文件》运行新任务》浏览 C:\Windows\System32\cmd.exe》确定③cmd输......
  • leetcode 16 最接近的三数之和 3sum-closest【ct】
    ===思路:在遍历中去计算,每一轮循环中都去计算,如果distance更小就去更新distance。如果sum>target,end--,如果sum<target,start++,如果等于,就可以直接返回target  ......
  • C:\Windows\WinSxS 目录是 Windows 操作系统中一个重要的系统目录,它包含了组件存储
    C:\Windows\WinSxS目录是Windows操作系统中一个重要的系统目录,它包含了组件存储和组件映像服务(ComponentStoreandComponentBasedServicing)的相关文件。WinSxS目录主要用于存储操作系统及其组件的多个版本和配置文件。它的主要功能是支持系统的“部署”、“维护”和“修......