ODT_ODT2是什么意思

ODT_ODT2是什么意思ODT练手CF915E题意:Q次区间(1~n)操作,k=2区间(l,r)变为1,k=1区间(l,r)变为0,一开始全是1问每次操作后1的数目n<=1e9Q<=1e5#include<bits/stdc++.h>usingnamespacestd;#definelllonglongllqmod(lla,llb,llmod){…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ODT练手

CF915E  题意:Q次区间(1~n)操作,k=2区间(l,r)变为1, k=1区间(l,r)变为0 ,一开始全是1问每次操作后1的数目

n<=1e9  Q<=1e5

#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll qmod(ll a,ll b,ll mod){
	ll res=1;
	while(b){
		res=res*a%mod;
		if(a&1)a=a*a%mod;
		b=b>>1;
	}return res%mod;
}
inline int read(){
   int s=0,w=1;char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}

ll ans=0;
namespace ODT{//珂朵莉树 
	#define Poi set<node>::iterator 
	#define ll long long
	struct node{
		int l,r;mutable ll v;
		node(int l,int r,ll v):l(l),r(r),v(v){}
		bool operator <(const node &V)const{
			return l<V.l;
		}
	};
	set<node>S;
	inline Poi spilt(int pos){//核心 根据区间操作 维护新的区间到set 
		Poi poi=S.lower_bound(node(pos,-1,0));
		if(poi!=S.end()&&poi->l==pos)return poi;
		poi--;
		int nl=poi->l;
		int nr=poi->r;
		ll nv=poi->v;
		S.erase(poi);
		S.insert(node(nl,pos-1,nv));
		return S.insert(node(pos,nr,nv)).first;
	}
	inline void fuck(int l,int r,ll v){//核心 区间赋值,减少node 
		Poi por=spilt(r+1);
		Poi pol=spilt(l);
		S.erase(pol,por);
		S.insert(node(l,r,v));
	}
	void add(int l,int r,ll val){//区间加 
		Poi por=spilt(r+1);
		Poi pol=spilt(l);
		for(;pol!=por;pol->v+=val,++pol);
	}
	
	void op3(int l,int r,int v){//区间操作自定义 
		Poi por=spilt(r+1);//先右后左防止RE 
		Poi pol=spilt(l);Poi pok=pol;
		for(;pok!=por;++pok){
			int col=pok->v;
			if(col==0)ans-=(pok->r-pok->l+1);
		}
		S.erase(pol,por);
		S.insert(node(l,r,v));
		if(v==0)ans+=r-l+1;
	}
	
	
	ll op4(int l,int r,ll x,ll mod){
		Poi por=spilt(r+1);
		Poi pol=spilt(l);
		for(;pol!=por;++pol){
			ans=ans+qmod(pol->v,x,mod);
			ans%=mod;
		}
		return ans;
	}
}

int main(){
	using namespace ODT;
	int n,q;n=read();q=read();
	
	S.insert(node(1,n,0));ans=n;
	while(q--){
		int l,r,v;l=read();r=read();v=read();
		op3(l,r,v%2);
		printf("%d\n",ans); 
	}
	
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195422.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • not apng file怎么解决_function

    not apng file怎么解决_functionpadStartisnotafunction问题描述微信小程序开发时,控制台padStartisnotafunction;解决方案不用这个方法了呗,或者自己重新在String.prototype.padStart中自己实现,毕竟是es6之后的方法,经测试,微信6.6.6版本不支持,6.6.10版本支持,和版本也有一定的关系,期望以后的支持性…

    2022年9月9日
    0
  • 为什么L1正则化导致稀疏解「建议收藏」

    一、从数据先验的角度首先你要知道L1范式和L2范式是怎么来的,然后是为什么要把L1或者L2正则项加到代价函数中去.L1,L2范式来自于对数据的先验知识.如果你认为,你现有的数据来自于高斯分布,那么就应该在代价函数中加入数据先验P(x),一般由于推导和计算方便会加入对数似然,也就是log(P(x)),然后再去优化,这样最终的结果是,由于你的模型参数考虑了数据先验,模型效果当然就更好.哦对了,如果你…

    2022年4月12日
    65
  • Spring Boot 中使用 @Transactional 注解配置事务管理

    Spring Boot 中使用 @Transactional 注解配置事务管理事务管理是应用系统开发中必不可少的一部分。Spring为事务管理提供了丰富的功能支持。Spring事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染,因此在实际使用中声明式事务用的比较多。

    2022年6月6日
    106
  • 浅谈 AnalyticDB SQL 优化「建议收藏」

    浅谈 AnalyticDB SQL 优化「建议收藏」数据库性能优化需要从多个方面进行综合考虑。例如系统资源是否充足、资源模型的设计(高性能vs大存储)、表的设计以及规划、SQL改写和优化等等,本文只要介绍ADBsql的优化。

    2022年9月16日
    0
  • 使用xsync脚本分发「建议收藏」

    使用xsync脚本分发「建议收藏」为什么使用xsync脚本来分发文件因为操作简单,只需要执行脚本在后面加上需要分发的文件就行了然后底层不一致,scp使用的是安全拷贝,而xsync使用的是增量拷贝由于底层不一致,xsync比scp快上许多使用脚本来分发文件之前不同节点之间的免密登录安排上脚本实现#!/bin/bash#1输入参数个数,如果没有参数就会退出pcount=$#if((pcount==0));thenechonoargs;exit;fi#2需要分发的文件名称p1=$1fname=`

    2022年5月18日
    51
  • shell中if语句_shell脚本if判断

    shell中if语句_shell脚本if判断提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、if语句1.if单分支判断2.if双分支判断3.if多分支判断总结提示:以下是本篇文章正文内容,下面案例可供参考一、if语句1.if单分支判断●当“条件成立”时执行命令序列●否则不执行任合操作语法格式♦if空格条件测试then命令序列fiif加空格加一个条件测试,如果这个条件测试结果为真那么就执行then后面的命令序列,这个命令序列可以是一条命令也可以是多条命令只要条件测试为真,.

    2022年8月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号