ABC467
D计算几何给四个点其中两个pq属于一个圆另外两个rs属于另一个圆。问有没有可能这两个圆的圆心相同给了圆上两点可以确定圆心在这两点形成的线段的中垂线上。如果两个中垂线有交点则交点就是公共圆心。转化为直线交点问题如果两个中垂线不平行则一定有交点如果平行则只有两个直线重合时才有交点。于是问题转化成判断两个中垂线是否平行这可以用向量叉乘等于0来表示。获取两个直线的方向向量太麻烦的话由于都是中垂线可以直接看pq,rs两个向量是否平行是等价的。判断两个中垂线是否重合如果是手算这不难列出两个直线表达式然后看化简后是否相同。但是这是计算几何系数化简并不好做。考虑重合时满足的其他特征如果重合那么pq,rs平行且pq rs的中垂线相同那么pqsr构成一个梯形检查梯形的性质是好做的比如可以检查对角线相等且斜边相等计算线段长度就可以这是简单的structpoint{intx,y;voidread(){cinxy;}};intcross(via,vib){returna[0]*b[1]-a[1]*b[0];}voidsolve(){point p,q,r,s;p.read();q.read();r.read();s.read();vi pq{p.x-q.x,p.y-q.y};vi rs{r.x-s.x,r.y-s.y};if(cross(pq,rs)0){// cout ok ;if(dis(p.x,p.y,r.x,r.y)dis(q.x,q.y,s.x,s.y)dis(p.x,p.y,s.x,s.y)dis(q.x,q.y,r.x,r.y)){coutYes\n;}else{coutNo\n;}}else{coutYes\n;}}E取模 差分给定A,B一次操作可以给A的一个元素1问最少多少次操作使得AiAi1Bi(modM)A_iA_{i1}B_i(mod M)Ai​Ai1​Bi​(modM)注意到B是确定的那么这个约束其实规定了任意相邻A的递推关系也就是说确定了A1A_1A1​后面的就都确定了只需要考虑A1A_1A1​在[0,M−1][0,M-1][0,M−1]里取什么值。设AiA_iAi​最终加addiadd_iaddi​那么假设add1add_1add1​确定了add2add_2add2​为(A1A2−B1−add1)mod M(A_1A_2-B_1-add_1)\mod M(A1​A2​−B1​−add1​)modM类似地add3add_3add3​为(A2A3−B2−add2)mod M(A_2A_3-B_2-add_2)\mod M(A2​A3​−B2​−add2​)modMaddiadd_iaddi​是可以递推的这和前面的分析一样并且更关键的是注意每一轮递推都会和前一个addi−1add_{i-1}addi−1​符号相反因此add1add_1add1​1所有奇数下标的add都1所有偶数下标的add都-1那么add1add_1add1​1对整体答案的影响是奇数下标个数-偶数下标个数不妨设这个值为diff。此外考虑取模奇数位置1到M了会变成0或者说会-M偶数位置-1到-1了会变成M-1也就是会M。A1A_1A1​能取的值就是[0,M−1][0,M-1][0,M−1]那么add1取值范围也是add_1取值范围也是add1​取值范围也是[0,M-1]最终答案是一个关于最终答案是一个关于最终答案是一个关于add_1$的函数在没有触发取模规则时就是一个线性函数斜率diff触发取模规则的地方会有一些C突变。现在就是求这个函数的最值。考虑枚举自变量取值M1e9M1e9M1e9太大了不行但注意对于每个addiadd_iaddi​最多取模一次因此总的突变位置只有O(n)O(n)O(n)个剩余位置都是线性单增的最值点一定是出现在突变位置具体来说由于CC正负都有可能最值可能是突变点或前一个位置但绝不可能是线性单增过程中的某个点。于是我们用差分标记所有突变位置然后做一次前缀和累加只计算所有突变点和前一个点更新最值。中间的线性部分跳过线性部分的贡献可以O(1)O(1)O(1)计算。需要注意线性段有一种情况下可能是最值就是定义域右端点上要么收的特判一下这个点要么在记录差分的map力给m−1m-1m−1点也做一个0的标记这样也会计算这个点的答案。voidsolve(){intn,m;cinnm;via(n1),b(n);rep(i,1,n){cina[i];}rep(i,1,n-1){cinb[i];}intsum0;viadd(n1);rep(i,2,n){intxb[i-1]-a[i]-a[i-1]-add[i-1];x(x%mm)%m;sumx;add[i]x;}intanssum;intk0;rep(i,1,n){if(i%2){k;}else{k--;}}mapint,intmp;rep(i,1,n){if(i%2){mp[m-add[i]]-m;}else{mp[add[i]1]m;}}intpre0;if(!mp.count(m-1)){mp[m-1]0;}for(auto[cur,dif]:mp){if(curm)break;sum(cur-pre-1)*k;ansmin(ans,sum);sumkdif;ansmin(ans,sum);precur;}coutans;}F线段树 离散化 贪心带修规划问题每个任务准备需要ai准备完了还需要bi的延迟延迟期间可以干别的。问做完所有任务的最短时间。每次会修改一个任务的a或b询问新的结果。这种都先考虑不带修怎么做。这种题要是能做要么DP要么贪心。从简单的开始思考先考虑贪心。贪心策略无非就是按A或B的大小排序。实际答案就是按B排序可以用交换贪心证明在按B降序的基础上交换任意两个任务都是不会更优的。如果不带修按B排序后一次扫描即可确定答案。具体过程是每次在最后新增一个任务答案要么不变前面某个任务的延迟b很大覆盖了这个新任务的ab 要么是这个新任务的结束时间也就是所有a的和加上这个新任务的b发现这个过程可以用线段树维护。于是考虑线段树由于必须按B降序考虑用B作为线段树下标。考虑合并两个区间合并时类似前面的分析答案要么是左区间的答案最后一个结束的任务在左区间有一个超大b比右区间总时间都长要么是左区间的a的和加上右区间的延迟最后一个结束的任务在右区间左区间的b不用考虑了只考虑a带来的延迟于是线段树每个节点需要保存区间内a的和以及区间内所有任务的总时间。更新时如果改的是a改属性a。如果改的是b由于b是作为下标的意味着要在线段树上取消一个元素然后在另一个下标新增一个元素。由于b很大需要离散化再建树。这里有个问题一个b可能同时有多个任务但我们这个设计一个叶子只能对应一个元素所以需要区分b相同的多个元素。具体做法是离散化时对b,id二元组离散化不只对b离散化这样任何一个修改都对应线段树上一个唯一叶子。structTree{#definelsu1#definersu1|1structNode{intl,r,mx,sum;Node operator(constNodeo){Node res;res.mxmax(mx,o.mxsum);res.ll;res.ro.r;res.sumsumo.sum;returnres;}}tr[N2];voidpushup(intu){tr[u]tr[ls]tr[rs];}voidbuild(intu,intl,intr){tr[u]{l,r,0,0};if(lr)return;intmid(lr)1;build(ls,l,mid);build(rs,mid1,r);pushup(u);}voidmodify(intu,intidx,pii val){if(tr[u].ltr[u].r){tr[u].sumval.fi;tr[u].mxval.fival.se;return;}else{intmid(tr[u].ltr[u].r)1;if(mididx)modify(ls,idx,val);elsemodify(rs,idx,val);pushup(u);}}Nodequery(intu,intl,intr){if(ltr[u].ltr[u].rr)returntr[u];intmid(tr[u].ltr[u].r)1;if(rmid)returnquery(ls,l,r);if(lmid)returnquery(rs,l,r);returnquery(ls,l,r)query(rs,l,r);}}t;voidsolve(){intn,q;cinnq;via(n1),b(n1);rep(i,1,n){cina[i];}vectorpiiall;rep(i,1,n){cinb[i];all.push_back({b[i],i});}viop(q1),idx(q1),val(q1);rep(i,1,q){cinop[i]idx[i]val[i];if(op[i]2)all.push_back({val[i],idx[i]});}sort(all.begin(),all.end(),[](piia,piib){returna.fib.fi;});all.erase(unique(all.begin(),all.end()),all.end());inttotall.size()10;viitop(n1);mappii,intmp;intcnt0;for(autop:all){mp[p]cnt;}t.build(1,1,tot);rep(i,1,n){itop[i]mp[{b[i],i}];t.modify(1,itop[i],{a[i],b[i]});}rep(i,1,q){intididx[i];if(op[i]1){a[id]val[i];t.modify(1,itop[id],{a[id],b[id]});}else{t.modify(1,itop[id],{0,0});b[id]val[i];itop[id]mp[{b[id],id}];t.modify(1,itop[id],{a[id],b[id]});}coutt.query(1,1,tot).mx\n;}}

相关新闻

LLM-Pruner: On the Structural Pruning of Large Language Models 解读

LLM-Pruner: On the Structural Pruning of Large Language Models 解读

一、论文基本信息 论文题目:LLM-Pruner: On the Structural Pruning of Large Language Models 作者:Xinyin Ma、Gongfan Fang、Xinchao Wang 发表会议:NeurIPS 2023 官方代码:horseee/LLM-Pruner。官方仓库标注这是 NeurIPS …

2026/7/23 22:37:41阅读更多 →
CAN/CAN FD调试--笔记1

CAN/CAN FD调试--笔记1

CAN/CAN FD调试–笔记1 一、CAN 和 CAN FD 的配置差别 1.1 BSR 位的作用:速率切换标志 CAN FD 支持两种比特率: 仲裁段(Arbitration Phase):与传统 CAN 相同的低速速率(用于仲裁,确保兼容性…

2026/7/23 22:37:41阅读更多 →
海康摄像头RTSP转换前端浏览器实时播放

海康摄像头RTSP转换前端浏览器实时播放

背景: 公司运维平台需求:把机房监控接入,可在运维平台web实时查看。 解决方案:前端无法播放RTSP数据,问了deepseek和查看别人的建议,最后决定采用以下方案: 基于 ffmpeg 的 Node 后端推流方案 …

2026/7/23 22:37:41阅读更多 →
虹膜VS指纹:2026年,谁才是下一代生物识别的终极答案?

虹膜VS指纹:2026年,谁才是下一代生物识别的终极答案?

最新内容搜索网络研观观阅读在制定企业级安全架构、国家级数字身份(National ID)或公共防务领域的身份验证方案时,决策者们正面临着一个前所未有的十字路口:究竟该坚守历史悠久的指纹识别,还是全面转向风头正劲的虹膜识…

2026/7/24 0:02:06阅读更多 →
企业短信平台技术架构与合规落地实战:验证码、通知、营销短信底层原理与避坑方案

企业短信平台技术架构与合规落地实战:验证码、通知、营销短信底层原理与避坑方案

标签:#短信平台 #企业短信 #验证码短信 #营销短信 #通信架构 #合规风控阅读对象:后端开发、系统集成、企业IT运维、业务中台对接、通信项目交付工程师摘要:短信是互联网、政企、电商、金融体系中最高可用、最低延迟的基础触达通道&#xff0c…

2026/7/24 0:02:06阅读更多 →
隐私小号中间号技术架构实战:隐私通话、号码保护、AXB中继模式与企业落地避坑

隐私小号中间号技术架构实战:隐私通话、号码保护、AXB中继模式与企业落地避坑

标签:#隐私小号 #中间号 #AXB中继 #号码隐私保护 #语音中继 #企业通信安全阅读对象:后端开发、通信架构师、系统集成、政企交付、客服中台对接工程师摘要:在电商外卖、网约车、物流配送、同城服务、外勤运维等场景中,用户与服务人…

2026/7/24 0:02:06阅读更多 →
隐藏了IP却躲不开“数字指纹”:微软遥测技术是如何协助FBI抓获黑客的?

隐藏了IP却躲不开“数字指纹”:微软遥测技术是如何协助FBI抓获黑客的?

最新内容请搜索网络研观观阅读 在很多人的认知中,VPN(虚拟专用网络)是网络世界的“隐身斗篷”。只要开启了 VPN,真实的 IP 地址就会被隐藏,网络活动似乎就变得无迹可寻。然而,近期美国解封的一份刑事诉状彻…

2026/7/24 0:02:06阅读更多 →
2026年全球网络安全大盘点:119项核心数据硬核拆解

2026年全球网络安全大盘点:119项核心数据硬核拆解

现代黑客早就不是当年那些在小黑屋里单纯为了炫技的“技术宅”了,现在的网络犯罪已经是一条年产值万亿美元的“黑金产业链”。随着生成式 AI 和智能武器的爆发,2026 年的网络安全形势可以说是全面进入了“神仙打架”的硬核时代。 很多老板总觉得“我们公…

2026/7/24 0:02:06阅读更多 →
【Unity学习】

【Unity学习】

文章目录c#脚本基本语句一、游戏启动的基本语句二、游戏运行的基本语句1.游戏运行的基本语句2.对物体的相关操作三、Unity组件的一些方法1.Rigidbody组件2.Collider组件3.Audio Source组件四、Unity脚本常用的方法实现1.角色移动和视角移动c#脚本基本语句 一、游戏启动的基本语…

2026/7/24 0:00:06阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →