首页 > 其他分享 >20231009 模拟赛总结

20231009 模拟赛总结

时间:2023-10-09 17:24:31浏览次数:47  
标签:总结 le int 20231009 线段 靶子 区间 yq 模拟

模拟赛链接

排名:\(\text{rank 1}\)
分数:\(100+100+70+20=290\)
终于有一次模拟赛不掉分了。

T1:最后一课 / dist

题目描述:

在一个平面直角坐标系上,给定一条直线 \(y=k\) 和两个点 \(P(x_1,y_1),Q(x_2,y_2)\),求经过水平线的两点的最短距离。(\(k,x_1,y_1,x_2,y_2\le5\times10^8\))

思路:

先考虑最简单的情况,两个点分别在直线两侧,我们知道两点之间线段最短,那么就直接连一条线段即可。
另一种情况两个点在直线同侧,这样就变成了一个经典的题目:将军饮马。我们可以对其中一个点做的对称轴为该直线的对称,再将两点连线,就可以了。

代码:

#include <bits/stdc++.h>

using namespace std;

long long k, xp, yp, xq, yq;

int main() {
  freopen("dist.in", "r", stdin);
  freopen("dist.out", "w", stdout);
  cin >> k >> xp >> yp >> xq >> yq;
  (yp >= k) == (yq >= k) && (yq -= (yq - k) * 2);
  cout << (xp - xq) * (xp - xq) + (yp - yq) * (yp - yq);
  return 0;
}

T2:日常 / shooot

题目描述

Kiana 正在基地里打靶。在一条长度为 \(m\) 的线段上,有 \(n\) 个靶子,第 \(i\) 个靶子的覆盖了 \([l_i,r_i]\) 这一段区间,且靶子之间不存在交(注意交为一个点也算有交)。对于第 \(i\) 个靶子,其中的 \([x_i, y_i]\) 这一段区间被标成了红色。

接下来,Kiana 进行了 \(k\) 次射击,会发射一发子弹打在线段的某个位置。对于每次射击,基地的人工智能--你需要输出对应的结果。具体的,假如射到了已经射过的靶子,输出 Again,假如没有射在靶子上,输出 Failed 。假如不符合以上两条,且打到了红色区域,则输出 Perfect ,否则输出 Normal。(\(1 \le n, k \le 10^5, 1 \le l_i \le x_i \le y_i \le r_i \le m \le 10^9\))

思路:

看到这么多区间,还有多次询问点的状态,很容易想到二分(也可以想到线段树),由于这题的区间没有交集,所以很好处理。先二分找到这个点所在的区间,在看它是否在这个区间里,然后模拟即可。

代码:

#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e5 + 5;

int n, m, k;
bool vis[kMaxN];

struct Line {
  int l, x, y, r;
  bool operator<(const Line &y) const {
    return l < y.l;
  }
} a[kMaxN];

int main() {
  freopen("shoot.in", "r", stdin);
  freopen("shoot.out", "w", stdout);
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].l >> a[i].x >> a[i].y >> a[i].r;
  }
  sort(a + 1, a + 1 + n);
  for (int p, p1; k; k--) {
    cin >> p;
    p1 = upper_bound(a + 1, a + 1 + n, (Line){p, -1, -1, -1}) - a - 1;
    if (a[p1].r < p) {
      cout << "Failed\n";
    } else if (vis[p1]) {
      cout << "Again\n";
    } else if (a[p1].x <= p && p <= a[p1].y) {
      cout << "Perfect\n", vis[p1] = 1;
    } else {
      cout << "Normal\n", vis[p1] = 1;
    }
  }
  return 0;
}

标签:总结,le,int,20231009,线段,靶子,区间,yq,模拟
From: https://www.cnblogs.com/lrx-blogs/p/20231009-contest-summary.html

相关文章

  • 注意力机制总结
    空间注意力机制针对图片中不同的位置,不同的权重,即对不同位置的图像进行仿射变换,来得到输出以后进行分类。通道注意力机制首先使用全局池化,将H\timesW\timesC变为1\times1\timesC,然后每个通道对齐进行权重的调整。时间注意力机制在处理序列数据,如时间序列或文本数据时,......
  • ControlNet-trt优化总结4:onnx图修改与重建
    ControlNet-trt优化总结4:onnx图修改与重建在这一节中,主要总结网络层面的优化,针对于算子插件优化,主要聚焦于以下几点:修改onnx图,添加不支持的算子插件增加前后处理部分,前后处理导出为onnx图onnx图surgeon原有的graph中存在大量的GN操作,正常fp32的时候没有问题,但是当使用fp16......
  • 【白盒测试基础总结】(新手自学)
    白盒测试:看代码,找bug,需要熟悉代码逻辑。黑盒测试:看不到代码,点点点,只看输入输出,不需要了解过程。下面主要总结了白盒测试的定义、测试步骤、优缺点、测试目的特点、测试方法等。 ......
  • 【单调栈】总结
    单调栈有什么用?栈为容器,特性是后入先出。经典栈的应用场景大概为:浏览器的后退按钮实现等。即:栈的一个应用场景就是状态保持。单调栈和经典栈的区别是,栈是一股脑的存,单调栈是让栈内的元素(或者是栈内元素的对应元素)具有单调的特性。那这个单调的特性有啥用呢?我们不考虑其他的,只......
  • 华为云OBS配置-远程附件-20231009
    使用此服务前请先注册并绑定华为云官方合作伙伴账号,享受VIP服务和优惠价格(新购和续费都有专属折扣),更能领取大额代金券!  立即注册/已有账号绑定=>>! 如果不能绑定,请联系售前商务或工单联系售后处理!  创建华为云存储OBS步骤: 一、进入OBS控制台:https://storage.huawei......
  • CSS常用总结
    重置样式html,body,ul,li,a,p,div{padding:0;margin:0;//设置盒模型box-sizing:border-box;//移除移动端特有的点击高亮效果-webkit-tap-highlight-color:transparent;}body{font-family:"PingFangSC","MicrosoftYaHei","Helve......
  • Docker 安装 Redis 单机&集群总结
    前言Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库redis版本:redis:6.2.13作者:易墨安装单机版安装源:DockerHub默认配置文件:配置文件示例6.2运行时指定配置文件docke......
  • php模拟post提交请求,调用接口
    /***模拟post进行url请求*@paramstring$url*@paramstring$param*/functionrequest_post($url='',$param=''){if(empty($url)||empty($param)){returnfalse;}......
  • PHP的错误机制总结
    PHP的错误机制总结PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。特别说明:文章的PHP版本使用5.5.32PHP的错误级别https://www.clw9335.com/rj/首先需要了解php有哪些错误。截至到php5.5,一共有16个错误级别注意:尝试下面的代码的时候请确保打开er......
  • 随笔20231009
    诺贝尔经济学奖获得者弗里德曼说:花自己的钱办自己的事,最为经济;花自己的钱给别人办事,最有效率;花别人的钱为自己办事,最为浪费;花别人的钱为别人办事,最不负责任。花自己的钱办自己的事,既讲节约,又讲效果;花自己的钱,办别人的事,只讲节约,不讲效果;花别人的钱,办自己的事,只讲效果,不讲节约;花别......