当前位置: 首页 > news >正文

P10190 [USACO24FEB] Target Practice II S

洛谷

首先进行分类讨论。

对于每个右上角的点,为了不让箭穿过箭靶,必须分配一只向下射的奶牛,即斜率为负数的奶牛。

右下角的点同理,只能选择斜率为正数的点。

对于左上角左下角,不管斜率为正还是负都可以射到。

那么无解条件明显就是斜率为正的和斜率为负的其中有一个不到 \(n\)

但是我们的高度会受到射击点的 \(x\)\(y\) 坐标以及奶牛的斜率 \(k\) 影响。

此时我们发现这并不好直接贪心处理。

但是我们可以发现题目所问的问题是最小的最大距离,明显可以二分。

那么我们可以二分两次,分别得到最低的最高点和最高的最低点。

我们二分出来一个最高点,再枚举每个斜率为负的需要射的点,此时计算出一个满足条件的最大斜率,分配小于等于这个斜率的最大斜率即可,可以用 set 维护。

那么最低点也是同理了。

但是对于左边的点又该怎么分配?

容易发现左边的点 \(x\) 都相等,那么有影响的只有 \(y\)\(k\) 了,我们将 \(y\) 小的分给斜率为负的,\(y\) 大的分给斜率为正的即可。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,sx,a[160005],b[160005],cnta,cntb;
struct P{int x,y,yy;
}c[40005];
int d[80005];
multiset<int> s;
bool check(int mid){s.clear();for(int i=1;i<=cntb;i++)s.insert(-b[i]);for(int i=1;i<=n;i++){if(mid<c[i].yy)return false;auto it=s.upper_bound((mid-c[i].yy)/c[i].x);if(it==s.begin())return false;it--;s.erase(it);}for(int i=2*n;i>3*n-cntb;i--){if(mid<d[i])return false;auto it=s.upper_bound((mid-d[i])/sx);if(it==s.begin())return false;it--;s.erase(it);}return true;
}
bool check2(int mid){s.clear();for(int i=1;i<=cnta;i++)s.insert(a[i]);for(int i=1;i<=n;i++){if(mid>c[i].y)return false;auto it=s.upper_bound((c[i].y-mid)/c[i].x);if(it==s.begin())return false;it--;s.erase(it);}for(int i=1;i<=cnta-n;i++){if(mid>d[i])return false;auto it=s.upper_bound((d[i]-mid)/sx);if(it==s.begin())return false;it--;s.erase(it);}return true;
}
signed main(){cin>>T;while(T--){cnta=cntb=0;cin>>n>>sx;for(int i=1;i<=n;i++)cin>>c[i].y>>c[i].yy>>c[i].x;for(int i=1,x;i<=4*n;i++){cin>>x;if(x>0)a[++cnta]=x;else b[++cntb]=x;}if(cnta<n||cntb<n){cout<<-1<<endl;continue;}for(int i=1;i<=n;i++)d[i]=c[i].y,d[i+n]=c[i].yy;sort(d+1,d+2*n+1);int l=-1e18,r=1e18;while(l<=r){int mid=l+r>>1;if(check(mid))r=mid-1;else l=mid+1;}int res=r+1;l=-1e18,r=1e18;while(l<=r){int mid=l+r>>1;if(check2(mid))l=mid+1;else r=mid-1;}cout<<res-l+1<<endl;}return 0;
}
http://www.gsyq.cn/news/75797.html

相关文章:

  • 仿生手的混合结构设计与神经形态触觉传感
  • AI语料优化新势力:助力企业抢占智能时代先机的优质服务商推荐
  • P10779 BZOJ4316 小 C 的独立集
  • P2475 [SCOI2008] 斜堆
  • P4037 [JSOI2008] 魔兽地图
  • 李宏毅机器学习笔记41 - 实践
  • P3596 [POI 2015 R3] 高速公路现代化 Highway modernization
  • AI Browser:我用 CC 做了个桌面版 Manus
  • P4953 [USACO02FEB] Cow Cycling
  • 用 GitHub issue 寫博客很好,但我要放棄了
  • 周边的车间厂房工厂通风降温工业冷风机源头厂家,有热源的车间通风降温/铁皮厂房车间降温/铁皮房车间厂房降温工业冷风机供应商有哪些
  • 用 Astro 重做網站這件事
  • 美化 BroadcastChannel
  • 克服EMD端点效应的齿轮箱故障特征识别方法
  • Hugging Face 论文页面功能指南
  • 北京上门回收老酒名酒茅台五粮液
  • P5202 [USACO19JAN] Redistricting P
  • 详细介绍:数据结构5:二叉树
  • P10602 [CEOI 2009] Harbingers
  • 2025 Newest Autel BMW G-Chassis IMMO Add Key (1-Year License) for IM508/IM608/IM1/IM2
  • Go 1.25 发布:性能、器具与生态的全面进化
  • 实用指南:OSG多视口与多通道渲染核心技术解析
  • P8313 [COCI 2021/2022 #4] Izbori
  • 2025 最新智能制造服务商 / 厂家 TOP5 评测!科技赋能 + 全周期服务权威推荐榜单发布,引领智慧工厂建设新生态
  • CF762E Radio stations
  • 【拓补排序 TB_sort】P4017 最大食物链计数
  • 2025年深圳AI搜索排名优化公司推荐
  • Easysearch 2.0.0 性能测试
  • 基于STM32标准库的FreeRTOS移植与任务创建 - 详解
  • 2025 最新工业机器人应用服务商 / 厂家 TOP5 评测!科技赋能 + 全生命周期服务权威榜单发布,重构智能制造生态