2025.10.5 2024CCPC郑州

news/2025/10/5 16:44:36/文章来源:https://www.cnblogs.com/wiene/p/19126704

施工中……
vp 5/13 (B C F L M)

简要题解

L

找规律,模拟即可

B

按题意BFS即可

F

发现如果第三天不被影响,那么后面都将重复前两天。
如果第三天被影响,那么说明单天的任务无法在一天内做完,后面都将被影响。
模拟前两天,直接计算即可。

M

列出式子,发现确定 \(p_1\) 后,后续所有结果都确定。
又发现 \(\sigma_{i}{p_i}\)\(p_1\) 的增大而单增,二分 \(p_1\) 即可。
注意精度!

C

发现\(x,y\)相对独立,先考虑一维情况。
考虑二分的过程,发现可以轻松解决一维的情况,可以用来判断是否无解。
考虑拓展,发现\(x,y\)的二分次数不同,直接合并会出现不合法操作。
猜测手玩发现,每个可以取到的\(x,y\),都可以通过与四个顶点操作得到!
递归处理即可。

补题

G

若是存在合法方案,区间的最小值和最大值一定会取在一起。
经典套路,哈希判断值域区间的对称性。

哈希要用双哈希!!!!!!

#include<bits/stdc++.h>
#define int long long
using namespace std;inline int read(){int ans=0,a=getchar();while('0'>a||a>'9')a=getchar();while('0'<=a&&a<='9')ans=ans*10+a-'0',a=getchar();return ans; 
} // 双模数定义
const int mod1=1000001011;
const int mod2=1000000007;
const int h1=1000213;
const int h2=911382629;
int pw1[200005],pw2[200005];    // 两个基的幂次数组
int inv1[200005],inv2[200005];  // 两个基逆元的幂次数组
int invp1,invp2;                // 两个基的逆元
int a[200005];// 线段树节点:维护最大值、最小值和两个模数的正逆哈希和
int tree1[800005],tree2[800005];// 最大值、最小值
int sum_a1[800005],sum_b1[800005];// 模数1的正哈希和、逆哈希和
int sum_a2[800005],sum_b2[800005];// 模数2的正哈希和、逆哈希和
int tag[800005];                // 加法懒标记// 快速幂(带模数参数)
inline int pw(int x,int y,int mod){int ans=1;x%=mod;while(y){if(y&1)ans=1ll*ans*x%mod;x=1ll*x*x%mod;y>>=1;}return ans;
}// 线段树上传操作
inline void up(int now){tree1[now]=max(tree1[now<<1],tree1[now<<1|1]);tree2[now]=min(tree2[now<<1],tree2[now<<1|1]);sum_a1[now]=(sum_a1[now<<1]+sum_a1[now<<1|1])%mod1;sum_b1[now]=(sum_b1[now<<1]+sum_b1[now<<1|1])%mod1;sum_a2[now]=(sum_a2[now<<1]+sum_a2[now<<1|1])%mod2;sum_b2[now]=(sum_b2[now<<1]+sum_b2[now<<1|1])%mod2;
}// 线段树下推操作
inline void push_down(int now){if(tag[now]){int v=tag[now];// 左子树更新tag[now<<1]+=v;tree1[now<<1]+=v;tree2[now<<1]+=v;// 模数1处理sum_a1[now<<1]=1ll*sum_a1[now<<1]*pw(h1,v,mod1)%mod1;sum_b1[now<<1]=1ll*sum_b1[now<<1]*pw(invp1,v,mod1)%mod1;// 模数2处理sum_a2[now<<1]=1ll*sum_a2[now<<1]*pw(h2,v,mod2)%mod2;sum_b2[now<<1]=1ll*sum_b2[now<<1]*pw(invp2,v,mod2)%mod2;// 右子树更新tag[now<<1|1]+=v;tree1[now<<1|1]+=v;tree2[now<<1|1]+=v;// 模数1处理sum_a1[now<<1|1]=1ll*sum_a1[now<<1|1]*pw(h1,v,mod1)%mod1;sum_b1[now<<1|1]=1ll*sum_b1[now<<1|1]*pw(invp1,v,mod1)%mod1;// 模数2处理sum_a2[now<<1|1]=1ll*sum_a2[now<<1|1]*pw(h2,v,mod2)%mod2;sum_b2[now<<1|1]=1ll*sum_b2[now<<1|1]*pw(invp2,v,mod2)%mod2;tag[now]=0;}
}// 构建线段树
void build(int now,int l,int r){if(l==r){tree2[now]=tree1[now]=a[l];// 初始化两个模数的哈希值sum_a1[now]=pw1[a[l]]%mod1;sum_b1[now]=inv1[a[l]]%mod1;sum_a2[now]=pw2[a[l]]%mod2;sum_b2[now]=inv2[a[l]]%mod2;return ;}int mid=l+r>>1;build(now<<1,l,mid);build(now<<1|1,mid+1,r);up(now);
}// 查询区间最小值
int find1(int now,int l,int r,int l1,int r1){if(l>=l1&&r<=r1)return tree2[now];int mid=l+r>>1,ans=1e18;push_down(now);if(mid>=l1)ans=min(ans,find1(now<<1,l,mid,l1,r1));if(mid+1<=r1)ans=min(ans,find1(now<<1|1,mid+1,r,l1,r1));return ans;
}// 查询区间最大值
int find2(int now,int l,int r,int l1,int r1){if(l>=l1&&r<=r1)return tree1[now];int mid=l+r>>1,ans=0;push_down(now); if(mid>=l1)ans=max(ans,find2(now<<1,l,mid,l1,r1));if(mid+1<=r1)ans=max(ans,find2(now<<1|1,mid+1,r,l1,r1));return ans;
}// 区间修改(加法)
void modify(int now,int l,int r,int l1,int r1,int v){if(l>=l1&&r<=r1){tag[now]+=v;tree1[now]+=v;tree2[now]+=v;// 同步更新两个模数的哈希值sum_a1[now]=1ll*sum_a1[now]*pw1[v]%mod1;sum_b1[now]=1ll*sum_b1[now]*inv1[v]%mod1;sum_a2[now]=1ll*sum_a2[now]*pw2[v]%mod2;sum_b2[now]=1ll*sum_b2[now]*inv2[v]%mod2;return ;}int mid=l+r>>1;push_down(now);if(mid>=l1)modify(now<<1,l,mid,l1,r1,v);if(mid+1<=r1)modify(now<<1|1,mid+1,r,l1,r1,v);up(now);
}// 哈希查询结果结构体
struct HashRes{int a1,b1,a2,b2; // 分别对应mod1正和、mod1逆和、mod2正和、mod2逆和
};// 查询区间哈希和
HashRes find(int now,int l,int r,int l1,int r1){if(l>=l1&&r<=r1){return {sum_a1[now],sum_b1[now],sum_a2[now],sum_b2[now]};}int mid=l+r>>1;push_down(now);HashRes res={0,0,0,0};if(mid>=l1){HashRes tmp=find(now<<1,l,mid,l1,r1);res.a1=(res.a1+tmp.a1)%mod1;res.b1=(res.b1+tmp.b1)%mod1;res.a2=(res.a2+tmp.a2)%mod2;res.b2=(res.b2+tmp.b2)%mod2;}if(mid+1<=r1){HashRes tmp=find(now<<1|1,mid+1,r,l1,r1);res.a1=(res.a1+tmp.a1)%mod1;res.b1=(res.b1+tmp.b1)%mod1;res.a2=(res.a2+tmp.a2)%mod2;res.b2=(res.b2+tmp.b2)%mod2;}return res;
}signed main(){freopen("test.in","r",stdin); int n=read(),q=read();// 初始化幂次数组和逆元数组pw1[0]=1,pw2[0]=1;inv1[0]=1,inv2[0]=1;invp1=pw(h1,mod1-2,mod1);invp2=pw(h2,mod2-2,mod2);for(int i=1;i<=200000;i++){pw1[i]=1ll*pw1[i-1]*h1%mod1;pw2[i]=1ll*pw2[i-1]*h2%mod2;inv1[i]=1ll*inv1[i-1]*invp1%mod1;inv2[i]=1ll*inv2[i-1]*invp2%mod2;}for(int i=1;i<=n;i++){a[i]=read();} build(1,1,n); while(q--){int op=read(),l=read(),r=read();if(op==2){if((r-l+1)&1){ // 长度为奇数直接不符合puts("NO");continue;} int mn=find1(1,1,n,l,r);int mx=find2(1,1,n,l,r);HashRes tmp=find(1,1,n,l,r);// 验证两个模数的哈希条件bool ok1=(1ll*tmp.a1*pw(invp1,mn,mod1)%mod1 == 1ll*tmp.b1*pw(h1,mx,mod1)%mod1);bool ok2=(1ll*tmp.a2*pw(invp2,mn,mod2)%mod2 == 1ll*tmp.b2*pw(h2,mx,mod2)%mod2);if(ok1&&ok2)puts("YES");else puts("NO");}else {int v=read();modify(1,1,n,l,r,v);}}return 0;
}

K

A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20250531MATLAB三维绘图 - 教程

20250531MATLAB三维绘图 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

概率期望dp 复习笔记

## 题目分析 注意到 $a_i\in[1,3]$,故设 $f_{i,j,k}$ 表示现在碗里只有 $1$ 个的有 $i$ 碗,只有 $2$ 个的有 $j$ 碗,只有 $3$ 个的有 $k$ 碗。我们发现从 $f_{x,y,z}$ 推到 $f_{0,0,0}$ 是复杂的。不妨将整个过程反…

2016网站谷歌权重网站怎么做淘宝客

基本类型转换 1、自动类型转换2、强制类型转换 1、自动类型转换 定义&#xff1a;当Java程序在进行赋值或者运算时&#xff0c;精度小的类型会自动转换成精度大的数据类型&#xff0c;这个就是自动类型转换。&#xff08;自动小转大&#xff09; 背多芬&#xff1a; 这里要明…

南京网站开发个人旅游系统网站开发的背景

B站教学视频链接&#xff1a;2.3.4前馈全连接层-part2_哔哩哔哩_bilibili

【计网】第六章(网络层)习题测试 - 实践

【计网】第六章(网络层)习题测试 - 实践2025-10-05 16:31 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

04-springIOC03-通过配置类实现IOC

04-springIOC03-通过配置类实现IOC$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");Spring IOC基于Java配置类详解 一、IOC容器核心概念 1.1 什么是IOC(控制…

网站建设公司厦门wordpress上长缺少临时文件夹

目录 3. 使用 Microsoft 证书颁发机构创建 VMCA 证书模板3.1 打开 Certificate Template Console3.2 复制模板修改 Compatibility 选项卡修改 General 选项卡修改 Extensions 选项卡确认新模板 4. 将新模板添加到证书模板4.1 打开 Certificate Console4.2 创建证书模板 关联博文…

完整教程:爬虫--以爬取小说为例

完整教程:爬虫--以爬取小说为例pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

2025.10

不能再摆了吧Todolist:118e 的形式化理解方法,做一下 abc426,感觉有点难度,abc425f 的 poly 做法,149d 的 universal 做法,有交合并的复杂度证明,1554e 更快的做法。 [ARC121E] Directed Tree 考虑容斥转化为 \…

PCIe扫盲——物理层逻辑部分基础(一)

首先,回顾一下,之前看了很多遍的PCIe的Layer结构图:PCIe中的物理层主要完成编解码(8b/10b for Gen1&Gen2,128b/130b for Gen3 and later)、扰码与解扰码、串并转换、差分发送与接收、链路训练等功能。其中链…

旅游 便宜 网站建设做信息采集的网站

随着移动互联网的飞速发展&#xff0c;手机群控技术在市场推广、自动化测试、应用管理等领域的应用越来越广泛&#xff0c;手机群控软件作为一种能够同时控制多台手机设备的工具&#xff0c;其开发过程中&#xff0c;源代码的编写显得尤为重要。 1、设备连接与识别模块 设备连…

个人链接怎么制作湛江seo

网络通讯&#xff1a; 就是要把特定意义的数据通过物理介质传送给对方。把电信号变成有意义的数据&#xff1a; 以字节为单位分组&#xff0c;标识好每一组电信号的信息特征&#xff0c;按照分组的顺序来依次发送。 以太网规定&#xff1a;一组电信号为一个数据包&#xff0c…

做100个网站网站开发与硬件合同

在 Java中&#xff0c;有许多数字处理的类&#xff0c;比如Integer 类。但是Integer 类有一定的局限性&#xff0c;下面我们就来看看比 Integer 类更厉害的一个&#xff0c;BigInteger类。BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。我们都知道 Integer 是 I…

网站建设方案 filetype doc百度快照推广有效果吗

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

04-delphi10.3下PDFium5.8的PdfView1查找文本

04-delphi10.3下PDFium5.8的PdfView1查找文本https://www.cnblogs.com/txgh/p/15807085.html 在窗体上放置TPdfView组件PdfView1和TPdf组件Pdf1,并设置PdfView1的Pdf属性指向Pdf1 增加PdfView1的OnPaint事件PdfView1…

仅需3%训练数据的文本归一化技术

Proteno模型革新文本归一化技术,仅需传统方法3%的训练数据即可实现高性能,支持多语言处理,显著降低数据标注需求并减少不可接受错误,适用于语音合成系统的快速部署。仅需3%训练数据的文本归一化技术 在语音合成系统…

价值原语博弈协议:价值原语共识锚定原则

价值原语博弈协议:价值原语共识锚定原则目的 为价值原语博弈确立明确的操作边界,防止无限递归解构,确保系统在价值冲突场景中能快速转向解决方案构建。原则定义 当解构复杂价值主张至某一颗粒度时,若冲突各方均承认…

实用指南:工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包

实用指南:工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &q…

高密哪里做网站好许昌建设网站哪家好

使用python爬虫实现百度翻译功能 python爬虫实现百度翻译&#xff1a; python解释器【模拟浏览器】&#xff0c;发送【post请求】&#xff0c;传入待【翻译的内容】作为参数&#xff0c;获取【百度翻译的结果】 通过开发者工具&#xff0c;获取发送请求的地址 提示&#xff1a;…

网站推广论坛网络营销策划

自定义取出第几个分割字符前的字符串&#xff0c;默认位置&#xff08;0&#xff09;格式&#xff1a;dbo.split(字段名,分隔字符,取出的第几个字符串)如果没有分隔的字符&#xff0c;则返回整个字符串。如果取出的位置字符串的位置超出Index则返回空。CREATE FUNCTION [dbo].[…