洛谷P1276 校门外的树(增强版) 题目描述 校门外马路上本来从编号0到L,每一编号的位置都有1棵树。有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B);幸运的是还有植树者每次从编号C到D 中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗(记 1 C D...
操作1:种植[l,r]区间的树苗. 抽象到线段树操作就是 0: [l,r]区间 树数组-1,树苗数组-1. 1:[l,r] 区间 树苗数组+1 比较难处理的是树或树苗数组在[l,r]区间存在,树苗无法+1.树苗数组在[l,r]区间不存在就无法-1.再者就是计数时,需要计算砍掉的是树还是树苗. 很好的处理手段是将树与树苗合并统计:...
洛谷P1276 校门外的树(增强版)未完工 题目描述 校门外马路上本来从编号0到L,每一编号的位置都有1棵树。有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B);幸运的是还有植树者每次从编号C到D 中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗(记 1...
操作1:种植[l,r]区间的树苗. 抽象到线段树操作就是 0: [l,r]区间 树数组-1,树苗数组-1. 1:[l,r] 区间 树苗数组+1 比较难处理的是树或树苗数组在[l,r]区间存在,树苗无法+1.树苗数组在[l,r]区间不存在就无法-1.再者就是计数时,需要计算砍掉的是树还是树苗. 很好的处理手段是将树与树苗合并统计:...
P1276 校门外的树(增强版) #include<iostream> #include<string.h> #include<vector> using namespace std; const int N=1e4+10; int main() { vector<int> m(N,1);//由于C的数组没法初始化为1; //我就用了,vector容器,m(N,1):将容器m的N个单位赋值1 //1:代表原来的树 //0: 代表没有数...
校门外的树(增强版) 题目描述 校门外马路上本来从编号0 00到L LL,每一编号的位置都有一棵树。有砍树者每次从编号A AA到B BB处连续砍掉每一棵树,就连树苗也不放过(记0 A B,含A AA和B BB);幸运的是还有植树者每次从编号C CC到D DD中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种...
题解P1276 校门外的树(增强版) 前言 本蒟蒻重学线段树,发现了这道题可以用线段树做。 虽然数据范围很小可以直接暴力,但由于在练习线段树所以打算用线段树写这道题。 本题解针对已经有线段树基础的巨佬,不懂线段树原理的话可以学习线段树后再阅读本题解。
Luogu P1276 校门外的树(增强版) 本来看着是道普及-,就不打算写博客了,结果因为出了3次错,调试了15min就还是决定写一下…… 本题坑点: 1.每个位置有三种情况:空穴,树苗,树(而不只有空穴和树)。 2.每个位置初始是种了树的(注意是树)。 3.第二个输出是被砍后又种上的树苗数。
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean[] b = new boolean[sc.nextInt() + 1]; int t = sc.nextInt(), ans = 0; while(t-- > 0) { int start = sc.nextInt(), end = sc.nextInt(); ...
洛谷1276 校门外的树(增强版) 【题解】 用线段树维护即可。区间设为一个数以及询问区间的和。第二问的答案可以用砍掉的树的总数减去砍树区间覆盖的范围。 View Code