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

计算几何(简单旋转卡壳)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();
}

相关文章:

  • Expected SARSA算法详解:python 从零实现
  • 仿腾讯会议——注册登录实现
  • Day.js和Moment.js对比,日期时间库怎么选?
  • SALOME源码分析: ParaVis
  • 【连载9】基础智能体的进展与挑战综述-行动系统
  • 基于STM32的带恒温系统智能外卖柜设计
  • B站Michale_ee——ESP32_IDF SDK——FreeRTOS_5 事件组同步与等待
  • 如何让模型聪明地选择特征:一种“蒸馏及选择”的方法
  • 使用 Tesseract 实现藏文OCR
  • 大数据面试问答-数据湖
  • Codex CLI轻量级 AI 编程智能体 :openai又放大招了
  • 正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真
  • 在pycharm profession 2020.3上安装使用xlwings
  • Ubuntu 安装 MySQL8
  • 游戏通用活动框架
  • C++拷贝构造函数详解
  • Wireshark网络抓包工具基础使用教程
  • 4.5 使用busybox制作根文件系统
  • 开源ERP系统对比:Dolibarr、ERPNext与Odoo
  • AI大模型-解决开发环境配置不足问题
  • 从“土”到“潮”,唢呐何以“圈粉”年轻人
  • 前行中的“模速空间”:要攻克核心技术,也要成为年轻人创业首选地
  • 200枚篆刻聚焦北京中轴线,“印记”申遗往事
  • 今年一季度全国社会物流总额达91万亿元,工业品比重超八成
  • 淮安四韵·名城新章: 网络名人领略“运河之都”魅力
  • 《九龙城寨之围城》斩获香港金像奖九项大奖,包括最佳影片