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

计算几何(简单旋转卡壳)2024昆明邀请赛

题目链接

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
typedef pair<int,int>PII;
typedef priority_queue<int> upq;
typedef priority_queue<int,vector<int>,greater<int>> dpq;
const int M=998244353;struct Point{ll x,y;
};
ll cross(Point a,Point b,Point c){ //叉积return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);
}
ll dis(Point a,Point b){ //距离return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);  
}
void solved()
{ll n; cin>>n;ll x,y,r; cin>>x>>y>>r;vector<Point>v(n+1);v[n].x=x; v[n].y=y;for(int i=0;i<n;i++){cin>>v[i].x>>v[i].y;}ll ans=0,now=0;for(int i=0,j=1;i<n;i++){while(1){int next_j=(j+1)%n; ll _cross=cross(v[i],v[next_j],v[n]);		//此处特别注意线段优先级 if(_cross<=0) break;		//维护圆心在分割点左侧,叉积大于0if((__int128)_cross*_cross<(__int128)r*r*dis(v[i],v[next_j])) break; // 判断直线i-net_j到o的距离是否 >= r(通过叉积平方与r2*向量长度平方比较) (可以推得)_cross=cross(v[i],v[j],v[next_j]);now+=abs(_cross);j=next_j;}ans=max(ans,now);int next_i=(i+1)%n;		//移动i指针算减少贡献 ll _cross=cross(v[i],v[j],v[next_i]);now-=abs(_cross);}cout<<ans<<'\n';
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t; cin>>t;while(t--)solved();
}

http://www.xdnf.cn/news/3729.html

相关文章:

  • [FPGA Video IP] Multi-Scaler
  • [Control-Chaos] Heart Broken(心臟破裂)
  • 完整的 VS Code + CMake + Qt + GCC 项目构建方案:EXE 程序与多个 DLL 库
  • Linux运维中常用的磁盘监控方式
  • # 前后端分离象棋对战项目开发记录
  • 安卓游戏APK文件解密与编辑的完整攻略
  • NVIDIA Performance Primitives (NPP) 库全面解析
  • string--OJ1
  • linux的信号量初识
  • Linux-06-磁盘分区类命令
  • 数字智慧方案6181丨智慧医院智慧后勤发展顶层设计及应用解决方案(42页PPT)(文末有下载方式)
  • 【言语理解】中心理解题目之结构分析
  • Laravel 12 实现 API 登录令牌认证
  • 贪心算法解决会议安排问题
  • 架构进阶:深入学习企业总体架构规划(Oracle 战略专家培训课件)【附全文阅读】
  • 初始化列表详解
  • 基于SpringBoot的同城宠物照看管理系统
  • stm32 hal库 SPI使用(二)硬件SPI的HAL库函数调用
  • 架构师面试(三十八):注册中心架构模式
  • 数字智慧方案6189丨智慧应急综合解决方案(46页PPT)(文末有下载方式)
  • Linux操作系统系统编程:x86-64架构下的系统调用
  • 数字智慧方案5872丨智慧交通解决方案(54页PPT)(文末有下载方式)
  • 13分区排烟 无法远程启动 12-1-4,排烟管道出口未连接室外
  • vmware虚拟机Linux系统( CentOS7)初始化没有选择Pinyin,无法输入中文(Linux系统输入中文)
  • 计算机网络——客户端/服务端,URI与URL的区别,以及TCP/IP核心机制全解析
  • 红鸟3D互动系统棋类源码一键部署教程(含多个打包版本与功能解构)
  • C++ 赋值运算符重载详解
  • 全局分割与实例分割技术对比:U-Net与Mask R-CNN
  • Python项目源码69:一键解析+csv保存通达信日线数据3.0
  • C++map和set