news 2026/7/14 7:04:13

题目总结:P6327

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
题目总结:P6327

背景

买了新电脑,就想着先把这道心腹大患解决了,起步即蓝题,开个好头,顺便水一篇题解。

题目大意

给出一个长度为nnn的整数序列a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an,进行mmm次操作,操作分为两类。
操作111:给出l,r,vl,r,vl,r,v,将al,al+1,…,ara_l,a_{l+1},\ldots,a_ral,al+1,,ar分别加上vvv
操作222:给出l,rl,rl,r,询问∑i=lrsin⁡(ai)\sum\limits_{i=l}^{r}\sin(a_i)i=lrsin(ai)
第一行输入一个整数nnn
接下来一行nnn个整数表示a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an
接下来一行一个整数mmm
接下来mmm行,每行表示一个操作,操作111表示为1 l r v,操作222表示为2 l r
对每个操作222,输出一行,表示答案,四舍五入保留一位小数。
保证答案的绝对值大于0.10.10.1,且答案的准确值的小数点后第二位不是444555
保证1≤n,m,ai,v≤2×1051\leq n,m,a_i,v\leq 2\times 10^51n,m,ai,v2×1051≤l≤r≤n1\leq l\leq r\leq n1lrn。保证所有输入的数都是正整数。

思路

三角函数对本初三蒟蒻很显然不是很友好,需要和差角公式:
sin⁡(A+B)=sin⁡Acos⁡B+cos⁡Asin⁡B\sin(A+B)=\sin A \cos B+\cos A \sin Bsin(A+B)=sinAcosB+cosAsinB
cos⁡(A+B)=cos⁡Acos⁡B−sin⁡Asin⁡B\cos(A+B)=\cos A\cos B-\sin A\sin Bcos(A+B)=cosAcosBsinAsinB
知道公式,就要开始搓线段树。
ts[o]ts[o]ts[o]维护区间的正弦值之和,tc[o]tc[o]tc[o]维护区间的余弦值之和,lazy[o]lazy[o]lazy[o]维护区间要加的数(整数)。
有两个地方需要用到和差角公式:pushdown和update。
pushdown时,要用lazy[o]lazy[o]lazy[o]更新ts/tc[o×2]ts/tc[o\times 2]ts/tc[o×2]ts/tc[o×2+1]ts/tc[o\times 2+1]ts/tc[o×2+1]
update时,要用vvv更新ts/tc[o]ts/tc[o]ts/tc[o]的值。
其实就是把求和变成公式求和,除了代码麻烦点儿,思路还是很清晰。

代码

#include<bits/stdc++.h>usingnamespacestd;#defineN200005#defineintlonglong//必备intn,m,a[N],lazy[4*N];doublets[4*N],tc[4*N];//voidbuild(into,intl,intr){if(l==r){ts[o]=sin(a[l]);tc[o]=cos(a[l]);return;}intmid=(l+r)/2;build(o*2,l,mid);build(o*2+1,mid+1,r);ts[o]=ts[o*2]+ts[o*2+1];tc[o]=tc[o*2]+tc[o*2+1];}voidpushdown(into,intl,intr){if(!lazy[o])return;lazy[o*2]+=lazy[o];lazy[o*2+1]+=lazy[o];doublesinb=sin(lazy[o]),cosb=cos(lazy[o]);doublesina=ts[o*2],cosa=tc[o*2];ts[o*2]=sina*cosb+cosa*sinb;tc[o*2]=cosa*cosb-sina*sinb;sina=ts[o*2+1],cosa=tc[o*2+1];ts[o*2+1]=sina*cosb+cosa*sinb;tc[o*2+1]=cosa*cosb-sina*sinb;lazy[o]=0;}voidupdate(into,intl,intr,intx,inty,intv){if(x<=l&&r<=y){doublesina=ts[o],sinb=sin(v),cosa=tc[o],cosb=cos(v);ts[o]=sina*cosb+cosa*sinb;tc[o]=cosa*cosb-sina*sinb;lazy[o]+=v;return;}pushdown(o,l,r);intmid=(l+r)/2;if(x<=mid)update(o*2,l,mid,x,y,v);if(y>mid)update(o*2+1,mid+1,r,x,y,v);ts[o]=ts[o*2]+ts[o*2+1];tc[o]=tc[o*2]+tc[o*2+1];}doublequery(into,intl,intr,intx,inty){if(x<=l&&r<=y)returnts[o];pushdown(o,l,r);intmid=(l+r)/2;doubleans=0;if(x<=mid)ans+=query(o*2,l,mid,x,y);if(y>mid)ans+=query(o*2+1,mid+1,r,x,y);returnans;}signedmain(){scanf("%lld",&n);for(inti=1;i<=n;i++)scanf("%lld",&a[i]);build(1,1,n);scanf("%lld",&m);intop,l,r,v;while(m--){scanf("%lld%lld%lld",&op,&l,&r);if(op==1){scanf("%lld",&v);update(1,1,n,l,r,v);}else{doubleans=query(1,1,n,l,r);printf("%.1lf\n",ans);}}return0;}

温馨提示:分割线以下内容糖分超标,谨慎观看。(但你已经看到了)😏


Conclusion

凑字数
虽然不是自己独立思考的结果,但是看见自己也能AC蓝题,还是非常有成就感。
虽然现在本蒟蒻还是有时会亖在橙题上,但我觉得努力一定会有收获,将来我也一定能切越来越多的蓝题、紫题、黑题……学无止境 ,超越自我。

谨以此篇,纪念自己的首道蓝题。\pmb{谨以此篇,纪念自己的首道蓝题。}谨以此篇,纪念自己的首道蓝题。
祝即将中考的自己和广大考生:\pmb{祝即将中考的自己和广大考生:}祝即将中考的自己和广大考生:
中考必胜!金榜题名!\pmb{中考必胜!金榜题名!}中考必胜!金榜题名!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 7:04:02

OpenGL 深度测试及Early-Z详解

在 3D 渲染中&#xff0c;如何正确且高效地处理物体的遮挡关系是核心问题之一。本文将深入探讨 OpenGL 中的**传统深度测试&#xff08;Depth Test&#xff09;**以及现代 GPU 硬件优化技术——**Early-Z 拒绝&#xff08;Early Depth Test&#xff09;**的工作原理、管线位置、…

作者头像 李华
网站建设 2026/7/14 7:02:45

PIC18F86J11驱动CMT-8540S蜂鸣器的嵌入式声音交互方案

1. 项目概述&#xff1a;为嵌入式系统添加声音交互功能在智能硬件和物联网设备开发中&#xff0c;声音交互是最直接有效的人机反馈方式之一。PIC18F86J11作为Microchip公司经典的8位微控制器&#xff0c;配合CMT-8540S-SMT贴片式蜂鸣器&#xff0c;可以构建一个轻量级的声音交互…

作者头像 李华
网站建设 2026/7/14 7:01:23

数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)

前言 基础版通讯录虽然跑通了&#xff0c;但每次用都挺折磨&#xff1a;输入汉字死循环、修改时要全部重输、只能按姓名查找... 这篇博客会记录我按优先级一步步优化的全过程&#xff0c;包括每一个功能的需求来源、遇到的问题、解决方案和代码修改&#xff0c;所有优化都是我…

作者头像 李华
网站建设 2026/7/14 6:58:22

Qt学习(开发环境Visual Studio)5.工程结构介绍

本文将介绍软件开发过程中的工程框架&#xff0c;作者对本模块并非精通&#xff0c;所写所作及代码均来自老师傅的传授&#xff0c;加上自己的理解。Doc&#xff1a;文档&#xff0c;主要包含软件的说明书、界面设计、算法开发要求等内容Src&#xff1a;码源&#xff0c;开发过…

作者头像 李华
网站建设 2026/7/14 6:55:05

2026年4月最新:全网深度测评10款专业写小说软件,到底哪个最好用?

现在的网文圈真的太卷了。如果是全职写小说的&#xff0c;光靠自己敲键盘&#xff0c;手速根本拼不过别人。很多人之前用通用AI写连载&#xff0c;结果写了几十万字后&#xff0c;AI把设定全忘了&#xff0c;出来的文字还满是不可否认、总而言之这种浓浓的机器味。 为了在保证…

作者头像 李华
网站建设 2026/7/14 6:54:57

Unity程序化生成实战:ProceduralToolkit核心功能与地下城构建

1. 项目概述&#xff1a;为什么你需要ProceduralToolkit&#xff1f;如果你在Unity里做过地形、建筑、植被或者任何需要大量、规则或随机内容生成的项目&#xff0c;那你一定体会过手动摆放的痛苦。一个关卡&#xff0c;成百上千棵树&#xff1b;一座城市&#xff0c;无数栋形态…

作者头像 李华