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

洛谷 P10374 操作

原题链接:P10374 [AHOI2024 初中组] 操作

题目大意:给长度为n的数组,初始全部为空,给定m个机器,然后使用了k台机器。机器有二种操作,如果第一种操作,那么就是对数组位置为x的点加上y。第二种操作就是,操作从x到y的所有机器。先给出n,m,k,然后给出k个操作的机器,然后给出m台机器的操作。特别的,如果操作第10台机器,并且这个机器是第二种操作,当前机器的y不会大于等于10。

思路:对于第一种操作可以O(1)时间内完成,对于第二种操作因为题目的限制,y不会大于等于当前机器的编号,所以肯定不会成环,并且第二种操作是不会对数组产生影响的,第二种操作是通过操作一对数组产生影响。如果正着遍历数组,那么就会多次重复的使用操作一的机器,明显会超时,所以可以考虑倒着遍历所以的机器,然后利用差分来解决这个问题。

//冷静,冷静,冷静
//调不出来就重构 
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld; 
typedef pair<ll,ll> pii;
const int N=1e6+10,mod=1e4+7;
ll f[N],p[N];
struct node
{ll cz,x,y;
}op[N];
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,m,k;cin>>n>>m>>k;for(int i=1;i<=k;i++){ll v;cin>>v;p[v]++;p[v-1]--;//记录当前机器被使用 }for(int i=1;i<=m;i++){cin>>op[i].cz>>op[i].x>>op[i].y;}ll now=0;for(int i=m;i;i--){now+=p[i];//当前机器的使用次数 if(op[i].cz==1)//如果是操作一,就直接对数组操作 {f[op[i].x]+=op[i].y*now;//操作次数乘上一次操作加的数 f[op[i].x]=f[op[i].x]%=mod;}else//第二种操作 {p[op[i].x-1]-=now;p[op[i].x-1]=p[op[i].x-1]%mod+mod;p[op[i].x-1]%=mod;//now为当前机器的操作次数,那么利用差分,就可以让x->y这一部分的机器操作now次 p[op[i].y]+=now;p[op[i].y]%=mod;}}for(int i=1;i<=n;i++){cout<<f[i]<<' ';}return 0;
}

相关文章:

  • 【面试必看】Java并发
  • 经典面试题:MySQL如何调优?
  • JAVA实现图书管理系统(初阶)
  • LeetCode26. 删除有序数组中的重复项
  • win10/win11 优先调用大核的电源计划性能设置
  • 在vue中实现下载文件功能
  • VUE3-form表单保存附件与基本信息
  • 【C++初阶】—— 类和对象 (上)
  • 深入了解Redis的过期策略和内存淘汰机制
  • 5月27日
  • Spring Boot中如何实现定时任务?
  • el-select 组件获取整个对象
  • 模型实战(20)之 yolov8分类模型训练自己的数据集
  • yolov8+ROS+ubuntu18.04——学习记录
  • Redis篇 String
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • C++类中的特殊成员函数
  • CentOS 7 修改主机名
  • golang中接口赋值与方法集
  • HTTP请求重发
  • Java,console输出实时的转向GUI textbox
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • log4j2输出到kafka
  • node和express搭建代理服务器(源码)
  • oschina
  • react 代码优化(一) ——事件处理
  • Redux系列x:源码分析
  • 深度学习中的信息论知识详解
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 用简单代码看卷积组块发展
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #HarmonyOS:基础语法
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #每天一道面试题# 什么是MySQL的回表查询
  • (3)选择元素——(17)练习(Exercises)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (PySpark)RDD实验实战——求商品销量排行
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (第二周)效能测试
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)c52学习之旅-流水LED灯
  • (转)可以带来幸福的一本书
  • .dwp和.webpart的区别
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .skip() 和 .only() 的使用