[IOI2018]机械娃娃——线段树+构造】的更多相关文章

题目链接: IOI2018doll 题目大意:有一个起点和$m$个触发器,给出一个长度为$n$的序列$a$,要求从起点出发按$a$的顺序经过触发器并回到起点(一个触发器可能被经过多次也可能不被经过),起点和每个触发器都有一个出口和若干个入口.你可以在这些触发器之间加上一些开关,每个开关有两个出口$x,y$和若干个入口,当奇数次进入开关时会从$x$出来,当偶数次进入开关时会从$y$出来,要求第一次回到起点时所有开关都被经过偶数次且使用的开关数尽量少,输出每个元件的出口指向. 因为最后要求回到起点,…
题目链接: [IOI2018]meetings 题目大意:有$n$座山峰,每座山峰有一个高度,有$q$次询问,每次需要确定一个开会山峰使$[l,r]$所有山峰上的人都前往开会山峰,一个山峰的人去开会的代价为从这个山峰到开会山峰区间内山峰高度的最大值,对于每次询问求最小代价和. 还是按照编号都从$1$开始讲. 可以发现对于一个询问如果确定了开会地址那么答案只和每个点到开会点区间最大值有关. 而题目又没有强制在线,我们可以按区间最大值来分治. 我们设对于区间$[l,r]$的答案是$ans(l,r)$…
题意: 有M个限制,每个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是否有满足的数列. 思路: 看到大牛说是线段树,线段树对于区间操作,印象中乘啊,+啊,-啊都不错,但是并没有就是对于这个位运算就不懂了: 这题的题意就是构造,大致思路是 每条限制是对于每个区间处理就是或上q(可以保证相应的二进制一定是1),然后用线段树处理完m个限制,最后还要询问一下m个限制是否满足: 所以具体操作就是利用线段树进行区间或操作,区间查询且. PS: 在最后取n个数的时候撒比了,直接取了树上的n…
LOJ 洛谷 先令编号从\(1\)开始.我们要求\([1,i]\)这些数字能否构成一个矩形. 考虑能否用线段树维护,让每个叶子节点\(i\)表示前\(i\)个数能否构成矩形. 一种方法是维护前\(i\)个点最左上点和最右下点的坐标,直接判断这两个点构成的矩形面积是否是\(i\). 发现修改的时候这个最值不好维护,每次修改可能是\(O(n)\)的. 考虑合法矩形的特征.把前\(i\)个点标记为黑点,其余点是白点.那么前\(i\)个点构成了一个矩形当且仅当: 左边和上边都是白点的黑点有且只有一个.…
题目链接: IOI2018seat 题目大意:给出一个$H*W$的矩阵,将$0 \sim W*H-1$分别填入矩阵的格子里(每个格子里一个数),定义一个子矩阵是美妙的当且仅当这个子矩阵包含且仅包含$0 \sim i$($i$为$0 \sim W*H-1$的任意数)这些数,每次调换两个数的位置,求有多少个美妙的子矩阵. 这题思路真的很神. 原题编号从0开始,很不舒服,我们按从1开始的讲. 发现只需要判断[1,i]这些数是否组成了一个矩阵. 那么我们能不能用线段树,第i个叶子节点存前i个数的信息来判…
LINK:Phoenix and Memory 这场比赛标题好评 都是以凤凰这个单词开头的 有凤来仪吧. 其实和Hall定理关系不大. 不过这个定理有的时候会由于 先简述一下. 对于一张二分图 左边集合为S 右边集合为T 那么有完备匹配时 最大匹配数为 min(|S|,|T|). 这里不妨假设|S|<=|T|. 若存在完备匹配那么对于任意集合\(s\in S\)都有s连出的边>=|s|. 这个定理是一张二分图具有完备匹配的充分必要条件. 先证明必要性:如果不存在 那么一定有点无法匹配到. 再证…
题解上说的很清楚了,我照着写的,表示膜拜题解 然后时间复杂度我觉得应该是O(nlogn),虽然常数略大,预处理和倒着扫,都是O(nlogn) #include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> #include <vector> using namespace std; typedef long long LL; ; ],a[N<<…
线段树之——区间修改区间查询 1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN). 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点. 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b].因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长…
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 91385    Accepted Submission(s): 38511 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就…
原文链接:线段树(Segment Tree) 1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN). 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点. 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b].因此线段树是平衡二叉树,最后的子节点数目为N,即…