CF 896 C Willem, Chtholly and Seniorious(珂朵莉树模板)

CF 896 C. Willem, Chtholly and Seniorious(珂朵莉树模板)

Problem - C - Codeforces

大意:给出一个区间 , 要求进行四种操作 , 区间加 , 区间第k大 , 区间推平 , 区间求和。

珂朵莉树模板题 , 练手即可。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
const int N = 1e5 + 10;
const int mod = 1e9 + 7;
typedef pair<int,int>PII;struct node{int l , r;mutable int v;node(int l , int r = 0 , int v = 0) : l(l), r(r), v(v){}bool operator < (const node &a) const {return l < a.l;}
};set<node>s;set<node>::iterator split(int pos){set<node>::iterator it = s.lower_bound(node(pos));if(it != s.end() && it->l == pos) {return it;}it--;if (it->r < pos) return s.end();int l = it->l;int r = it->r;int v = it->v;s.erase(it);s.insert(node(l , pos - 1 , v));return s.insert(node(pos , r , v)).first;
}inline int qp(int x , int y , int p){int res = 1 % p;x = x % p; while(y){if(y & 1) res = res * x % p;x = x * x % p;y >>= 1;}return res;
}void assign(int l , int r , int x) {set<node>::iterator itr = split(r + 1) , itl = split(l);s.erase(itl , itr);s.insert(node(l , r , x));
}void add(int l , int r , int x){set<node>::iterator itr = split(r + 1) , itl = split(l);for(auto i = itl ; i != itr ; i ++)  i->v += x;
}inline int kth(int l , int r , int x){vector<PII>v;set<node>::iterator itr = split(r + 1) , itl = split(l);for(auto i = itl ; i != itr ; i ++) v.emplace_back(i->v , i->r - i->l + 1);sort(v.begin() , v.end());for(auto [val , num] : v){if(x > num) x -= num;else return val;}
}inline int sum(int l , int r , int x , int p){int res = 0;set<node>::iterator itr = split(r + 1) , itl = split(l);for(auto i = itl ; i != itr ; i ++){res = (res + qp(i->v , x , p) * (i->r - i->l + 1) % p) % p;}return res;
}int n , m , seed , vmax , op , a[N] , x , y , l , r;inline int rnd(){int res = seed;seed = (seed * 7 + 13) % mod;return res;
}signed main(){IOScin >> n >> m >> seed >> vmax;for(int i = 1 ; i <= n ; i ++){a[i] = (rnd() % vmax) + 1;s.insert(node{i , i , a[i]});}for(int i = 1 ; i <= m ; i ++){op = rnd() % 4 + 1;l = rnd() % n + 1;r = rnd() % n + 1;if(l > r) swap(l , r);if(op == 3){x = rnd() % (r - l + 1) + 1;}else{x = rnd() % vmax + 1;}if(op == 4) y = rnd() % vmax + 1;if(op == 1) add(l , r , x);if(op == 2) assign(l , r , x);if(op == 3) cout << kth(l , r , x) << "\n";if(op == 4) cout << sum(l , r , x , y) << "\n";}return 0;
}
//freopen("文件名.in","r",stdin);
//freopen("文件名.out","w",stdout);

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

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

相关文章

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】

&#x1f600;前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…

VS Code 使用 clang++ 编译,使用 cppvsdbg 或 lldb 调试的配置方法

需要安装的 VS Code LLVM VS Code 需要安装的插件&#xff1a; C/C&#xff08;用来配置 c_cpp_properties.json&#xff09; CodeLLDB&#xff08;如果你要用 lldb 调试&#xff0c;那么这个插件就需要安装&#xff0c;用来连接到 lldb 调试器&#xff09; 流程 我们都…

Redis的数据结构与单线程架构

"飞吧&#xff0c;去寻觅红色的流星" Redis中的五种数据结构和编码 Redis是一种通过键值对关系存储数据的软件&#xff0c;在前一篇中&#xff0c;我们可以使用type命令实际返回当前键所对应的数据结构类型&#xff0c;例如: String\list\hash\set等等。 但…

开源项目-数据可视化分析平台

哈喽,大家好,今天给大家带来一个开源项目-数据可视化分析平台。项目通过SpringBoot实现 数据可视化分析平台主要有数据源管理,项目管理,数据集管理,图表管理,看板管理等功能 登录 数据源管理 数据源管理功能可以添加MySQL,Oracle,PostgreSQL等类型的数据源信息 项目…

ResNet详解:网络结构解读与PyTorch实现教程

目录 一、深度残差网络&#xff08;Deep Residual Networks&#xff09;简介深度学习与网络深度的挑战残差学习的提出为什么ResNet有效&#xff1f; 二、深度学习与梯度消失问题梯度消失问题定义为什么会出现梯度消失&#xff1f;激活函数初始化方法网络深度 如何解决梯度消失问…

电脑共享文件夹-实现手机和其他电脑的文件同步更新

一、首先是电脑和手机需要处于同一个路由器下 二、创建一个文件夹&#xff0c;随便命名 三、点击属性-共享-Everyone-添加&#xff08;设置读取/写入&#xff09;-最后点击共享 四、这里要注意&#xff0c;如果电脑之前没设置过共享文件夹会有一个弹窗&#xff0c;点第一个就好…

09 生产者分区机制

kafka如何保证消息的有序 可以通过key-ording策略解决。kafka可以为每条消息定义消息键&#xff0c;也称为key&#xff0c;通常是带有业务属性的比如用户id之类的。有相同消息键的消息会被发到同一个分区。下面实现了key-ordering策略&#xff0c;对key的hashcode进行取模来决…

C++ STL map

文章目录 Map、HashMap概念map、hashmap 的区别引用头文件初始化赋值map 自定义 key 类型map 的 value 自定义数据类型遍历常用方法插入查找 key修改 value删除元素清空元素 map 中每一个元素都是一个 key-value 对&#xff0c;数据类型为 pair std::pair 主要的作用是将两个数…

OpenAI推出ChatGPT企业版,提供更高安全和隐私保障

&#x1f989; AI新闻 &#x1f680; OpenAI推出ChatGPT企业版&#xff0c;提供更高安全和隐私保障 摘要&#xff1a;OpenAI发布了面向企业用户的ChatGPT企业版&#xff0c;用户可以无限制地访问强大的GPT-4模型&#xff0c;进行更深入的数据分析&#xff0c;并且拥有完全控制…

uniapp获取 pdf文件流 并展示

1、流数据 uni.request({ url: this.$config.apiUrl“/api/report/content/fill?codebv.mf.refund.pay.voucher&busiNo00201323051500148949”, header: { ‘content-type’: ‘application/json;charsetutf-8’, ‘X-App-Code’: ‘weixin’, ‘X-Source’: ‘program’,…

AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统

基于AI相关的技术来对一些重复性的但是又比较重要的工作来做智能化助力是一个非常有潜力的场景&#xff0c;关于这方面的项目开发实践在我之前的文章中也有不少的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a;《AI助力智能安检&#xff0c;基于目标检测模型实现…

配置uniapp调试环境

目录 uni-app介绍 uni-app开发工具HBuilderX 创建项目前提条件 uni-app项目结构 配置mumu模拟器 uni-app生命周期 1.应用生命周期 小程序规范 2.页面生命周期-小程序规范 3.组件生命周期 vue规范 uni-app登录按钮方法 uni-app发布安卓app uni-app介绍 uni-app 是一个…

微信小程序 通过setData 给两个变量设置同一个数组时,为什么修改一个变量,另一个会也被修改?

在微信小程序中&#xff0c;使用 setData 方法更新数据时&#xff0c;如果给两个变量设置同一个数组&#xff0c;修改其中一个变量的值会导致另一个变量也被修改的原因是&#xff0c;数组是引用类型的数据&#xff0c;在内存中的存储方式是按引用地址存储。 当你将一个数组赋值…

Linux(进程间通信)

目录 一、通信概念 二、进程间通信机制 1、管道 1.1 匿名管道&#xff08;Anonymous Pipe&#xff09; 1.2 命名管道&#xff08;Named Pipe&#xff09; 2、信号量 2.1 概念 2.2 API详解 2.3 使用示例 3、消息队列 3.1 概念 3.2 API函数 3.3 应用代码 4、共享内…

湖北咸宁农业三维扫描数字化农业3d打印制造应用-CASAIM中科广电

农业是人类衣食之源、生存之本&#xff0c;是一切生产的首要条件&#xff0c;CASAIM在农业三维扫描和3d打印应用上有丰富经验。 1.三维扫描技术在农业领域的应用 CASAIM三维扫描是集光学、机电和计算机技术于一体的高新无损检测技术&#xff0c;能够对实物的空间外形、结构乃…

adb shell获取安卓设备电量ROM内存帧率等信息

adb shell获取安卓设备电量ROM内存帧率等信息 adb shell指令获取Android设备的运行状态&#xff0c;如电池信息&#xff08;包含电量百分比&#xff0c;电池状态&#xff0c;电池温度&#xff0c;电池电压&#xff0c;充放电电流&#xff09;&#xff0c;CPU占比&#xff0c;内…

2023年MySQL核心技术面试第一篇

目录 一 . 存储&#xff1a;一个完整的数据存储过程是怎样的&#xff1f; 1.1 数据存储过程 1.1.1 创建MySQl 数据库 1.1.1.1 为什么我们要先创建一个数据库&#xff0c;而不是直接创建数据表&#xff1f; 1.1.1.2基本操作部分 1.2 选择索引问题 二 . 字段&#xff1a;这么多的…

【算法与数据结构】513、LeetCode找树左下角的值

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;这道题用层序遍历来做比较简单&#xff0c;最底层最左边节点就是层序遍历当中最底层元素容器的第一个值…

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误&#xff1a;缺少服务名称报错&#xff1a;9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…