CF915E Physical Education Lessons
时间:2021-02-21
本文章向大家介绍CF915E Physical Education Lessons ,主要包括CF915E Physical Education Lessons 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
CF915E Physical Education Lessons
这个题挺裸。
首先一开始想到线段树,然后写完一看数据范围 \(n\leq 10^9\),立马吓得删代码。
可是我们仔细看,\(1\leq 3*10^5\),不是很大,说明线段树上真正有效的区间很少。我们可以维护一个动态开点的线段树,安利一个 ctrl+z 把代码拉了回来改改过了。
有一个问题是可以开多少点呢?我们能开多少开多少,经计算:
\[259*1024*1024/4/4=16384000
\]
那就开 \(1.6*10^7\) 个呗~。
//Don't act like a loser.
//This code is written by huayucaiji
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
using namespace std;
int read() {
char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}
const int MAXN=16e6+10;
int n,m,cnt,root;
struct seg_tree {
int sum,lazy,lson,rson;
}s[MAXN];
int newnode() {
cnt++;
s[cnt].lazy=-1;
return cnt;
}
void pushdown(int l,int r,int p) {
if(l==r||s[p].lazy==-1) {
return ;
}
if(!s[p].lson) {
s[p].lson=newnode();
}
if(!s[p].rson) {
s[p].rson=newnode();
}
int mid=(l+r)>>1;
s[s[p].lson].sum=(mid-l+1)*s[p].lazy;
s[s[p].rson].sum=(r-mid)*s[p].lazy;
s[s[p].lson].lazy=s[s[p].rson].lazy=s[p].lazy;
s[p].lazy=-1;
}
void modify(int l,int r,int &p,int x,int y,int val) {
if(r<x||y<l) {
return ;
}
if(!p) {
p=newnode();
}
if(x<=l&&r<=y) {
s[p].lazy=val;
s[p].sum=(r-l+1)*val;
return ;
}
pushdown(l,r,p);
int mid=(l+r)>>1;
modify(l,mid,s[p].lson,x,y,val);
modify(mid+1,r,s[p].rson,x,y,val);
s[p].sum=s[s[p].lson].sum+s[s[p].rson].sum;
}
signed main() {
cin>>n>>m;
modify(1,n,root,1,n,1);
for(int i=1;i<=m;i++) {
int l=read(),r=read(),opt=read();
if(opt==1) {
modify(1,n,root,l,r,0);
}
else {
modify(1,n,root,l,r,1);
}
printf("%d\n",s[1].sum);
}
return 0;
}
原文地址:https://www.cnblogs.com/huayucaiji/p/CF915E.html
- 常用但容易忘记的sql语句(sql server为主)
- 利用java的接口实现回调
- java的静态属性,静态块,构造函数的执行顺序
- bootstrap validator 使用示例
- 如何通过jq和php实现返回父级页面(附带记忆功能)
- springmvc下载文件
- PHP获取URL地址的一些坑
- 使用ResourceBundle读取配置文件
- 关于exp statistics的问题和简单测试(82天)
- laravel访问路由在nginx服务器上无法处理
- How Tomcat Works, A Guide to Developing Your Own Java Servlet Container
- 【开发指南】如何为nexus 5编译固件
- 支持向量机(SVM)入门详解(续)与python实现
- 数据库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui
- 关于pandas.eval使用的一些问题。
- Flutter基础widgets教程-Slider篇
- 带你认识Pytest(三)
- Additive Powers-of-Two (APoT) Quantization:硬件友好的非均匀量化方法
- Flutter基础widgets教程-SnackBar篇
- Redash 二开 - 后端环境搭建
- Flutter基础widgets教程-Stepper篇
- Flutter基础widgets教程-Switch篇
- 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析
- python 协程新版
- 14.深入k8s:kube-proxy ipvs及其源码分析
- netty
- Flutter基础widgets教程-TabBar篇
- 厉害了!华为将发布国产编程语言,打破国外垄断!