洛谷——P2781 传教
P2781 传教
题目背景
写完暑假作业后,bx2k去找pear玩。pear表示他要去汉中传教,于是bx2k准备跟着去围观。
题目描述
pear把即将接受传教的人排成一行,每个人从左到右的编号为1-n。每个人有一个信仰值,一开始所有人的信仰值为0。接着pear会做以下两件事之一:
1.pear向连续的一段人群传教。具体来说,pear会使第l个人到第r个人之间的所有人的信仰值增加k。
2.pear想知道某一段人的信仰值之和来得知泉岭精神是否深入人心。具体来说,pear会问bx2k第l个人到第r个人之间所有人的信仰值之和。
身为一个泉岭精神的信徒,bx2k自然会帮pear来算。但是bx2k太笨了,根本不会算。于是他想找你来帮忙。
输入输出格式
输入格式:
第一行包含两个整数n,m。分别表示接受传教的人数以及pear的操作数。
接下来m行,每行包含若干个整数。若第一个整数为1,则代表pear在进行传教,这一行接下来会包含l,r,k三个整数。否则第一个整数为2,代表pear的一个询问,这一行接下来会包含l,r两个整数。
输出格式:
输出若干行,每行包含1个整数,表示pear询问的答案。行数为pear的询问数量。
输入输出样例
说明
【样例说明】
一开始所有人的信仰值都为0,所以答案为0。到第五个操作时,五个人的信仰值分别为0,7,7,15,6。则答案为7+15=22
【数据范围与约定】
对于1-3测试点,n,m<=10
对于4-5测试点,n,m<=10^3
对于6-8测试点,没有传教操作。
对于所有测试点,n<=10^9,m<=10^3,0<l<=n,0<r<=n,k<=10
搜索??
明明是线段树裸题好不好,哈哈,恭喜你,编译都过不了、、(数据范围10^9)
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 100000000 using namespace std; int n,p,a,b,c,Q,ans; int read() { ,f=; char ch=getchar(); ;ch=getchar();} +ch-',ch=getchar(); return x*f; } struct Tree { int v,l,r,f; }tree[N]; void build(int k,int l,int r) { tree[k].l=l,tree[k].r=r; if(l==r) return ; ; build(k<<,l,mid); build(k<<|,mid+,r); tree[k].v=tree[k<<].v+tree[k<<|].v; } void down(int k) { tree[k<<].f+=tree[k].f; tree[k<<|].f+=tree[k].f; tree[k<<].v+=(tree[k<<].r-tree[k<<].l+)*tree[k].f; tree[k<<|].v+=(tree[k<<|].r-tree[k<<|].l+)*tree[k].f; tree[k].f=; } void change(int k) { if(tree[k].l>=a&&tree[k].r<=b) { tree[k].v+=(tree[k].r-tree[k].l+)*c; tree[k].f+=c; return ; } if(tree[k].f) down(k); ; ); |); tree[k].v=tree[k<<].v+tree[k<<|].v; } void ask(int k) { if(tree[k].l>=a&&tree[k].r<=b) { ans+=tree[k].v; return ; } if(tree[k].f) down(k); ; ); |); } int main() { n=read(); build(,,n); Q=read(); while(Q--) { p=read(),ans=; ) a=read(),b=read(),c=read(),change(); else { a=read(),b=read(),ask(); printf("%d\n",ans); } } ; }
0分线段树(全部RE)
将近m^2的做法
我们可以发现m的范围很小,可以支持m^2的操作,我们在每次执行到一个查询操作的时候,枚举在这个操作之前的操作,判断这个操作过的区间是否与我们要查询的区间相交,如果相交的话,我们求出相交的那一部分,左端点为这两段区间左端点的最小值,右端点为这两段区间的最大值,然后我们用这段相交的区间的区间大小*修改的值累加起来即为最终答案
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 1010 using namespace std; int n,m,p; long long ans; int read() { ,f=; char ch=getchar(); ;ch=getchar();} +ch-',ch=getchar(); return x*f; } struct Tree { int l,r,v; }tree[N]; void ask(int x,int y) { ;i<m;i++) { if(tree[i].l>y||tree[i].r<x) continue; ans+=1ll*(min(tree[i].r,y)-max(tree[i].l,x)+)*tree[i].v; } } int main() { n=read(),m=read(); ;i<=m;i++) { p=read(),ans=; ) tree[i].l=read(),tree[i].r=read(),tree[i].v=read(); else { tree[i].l=read(),tree[i].r=read(); ask(tree[i].l,tree[i].r); printf("%lld\n",ans); } } ; }
洛谷——P2781 传教的更多相关文章
- 题解——洛谷P2781 传教(线段树)
可以说是数据结构学傻了的典型案例了 昨天跳到这题上 然后思考了一下 噫!好!线段树裸题 然后打完板子,发现\( n \le 10^9 \) 显然线段树直接做不太行 然后这题又只有普及的难度 然后我就 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
随机推荐
- 1、python的基础
一.python组成 python程序的内容主要由变量.数据.关键字.操作符组成. 二.变量 在python中,变量指的是其指向的数据是可变的. 首先我们要了解一下python的内存管理.数据创建后就 ...
- Hotspot GC实现原理
GC扫描 可达性分析的GC Roots主要是全局性引用或在Stack Frame中 ,现在的应用仅仅方法区往往就有几百兆,这样要这个检查这里面的引用,就必然会消耗很多时间,效率很低. 分析工作在一个保 ...
- leetcode 【 Merge k Sorted Lists 】python 实现
题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- 数据库脚本开发日志模板 —— 项目需求 A
前言: 在经历的几家公司的多个项目开发管理中,用 git 或者 svn来管理项目代码,都着重项目代码的管理,却疏于相应脚本的管理.本文可以参考,作为项目需求对应脚本开发记录文件(也建议用单个文件夹下放 ...
- STL学习笔记8 -- 函数对象
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果 ...
- gcc学习记录2——多输入文件
首先有两个.c文件:circle.c和circulararea.c. 分别对两个源文件生成目标文件,circle.o和circulararea.o. gcc -c circle.c circularr ...
- [oldboy-django][2深入django]Form组件实现生成: select下拉框, checkbox复选框,radio单选框以及如何实现自定义数据格式要求
1 需求 - 1Form组件如何实现生成选择类标签: select,check, radio - 默认值 - 保留上次输入的值 - 2自定义验证规则 - RegexField - -
- [c++面试准备]--vector对象是如何增长的
参考资料:cpp primer 5th 背景: 为了支持快速的访问,vector/string将元素连续存储--每个元素都是紧挨着前一个元素存储. 如果我们向vector/string中添加新的元素, ...
- 浅谈JavaScript中的函数问题
前面的话:JavaScript可运行在所有主要平台的主流浏览器上,也可运行在每一个主流操作系统的服务器端上.所以呢,要想成为一名优秀的全栈工程师,必须懂得JavaScript语言.这是我整理的JS的部 ...
- JSP与JavaBeans
JavaBeans简介 JavaBeans是一种符合一定标准的普通java类,需要满足下面几点: 1 类是public 2 属性私有 3 空的public构造方法 4 通过getter setter操 ...