随笔分类 - 信竞
信息技术竞赛
摘要:鬼子进村 fhq treap "题面" 观察题目发现可用平衡树做:每次鬼子拆家即从平衡树中加入被拆的节点;每次村民修房子都向平衡树中删除该节点;每次查询时,只需要求出其后驱与前驱,易知 为答案。 使用$\text{fhq treap}$实现平衡树部分 cpp include include defi
阅读全文
摘要:P3979 遥远的国度 树剖 "题面" 需要想一下的树剖题,对于询问三需要处理换跟后的情况。我们以1为树根跑一遍剖分,对于换跟进行分类讨论,算出实际答案。讨论有三种情况: (以1为树根的树上) 跟在询问节点的祖先上:因为不影响,所以直接求子树最小值 跟即询问节点:直接查全树 跟在询问节点子树中:画图
阅读全文
摘要:莫队总结 离线莫队 离线处理询问,暴力按 一定顺序 处理区间询问, 这样我们可以利用上一次询问得到的信息来处理当前询问 ,大大加快速度。 我们一般先按每块$\sqrt{n}$大小对各询问区间左端点分块编号(其中$n$为总区间大小,$m$为询问次数,注意随机数据时$\frac{n}{\sqrt{m\t
阅读全文
摘要:P2709 小B的询问 莫队 "题面" 只要能想出$O(1)$的方式转移$[l,r]$,莫队就不难了。此题求区间$\sum_{i=1}^kcnt[i]^2$,那我们就$O(1)$更新就好了,先减去原来的贡献,更新 再加上现在的贡献,这样就更新完了。 注意:莫队 小心初始化 ,直接 等可能会炸。 cp
阅读全文
摘要:[HAOI2015]树上操作 树链剖分 "题面" 裸树剖,线段树带 cpp include include define MAXN 100010 define ll long long define sl (x 1; buildt(sl, l, mid); buildt(sr, mid+1, r);
阅读全文
摘要:[ZJOI2008]树的统计 "题面" 裸树剖,一个线段树同时维护 和`max`就好了。~~庆祝半小时1A此题。~~ 另外注意,线段树同时支持「区间修改」和「区间查询」时才需要用到 lazy tag。 cpp include include define MAXN 30003 define sl (
阅读全文
摘要:CF915E 动态开线段树 "题面" 因为$n\le10^9$,所以动态开点,线段树维护$[1,n]$天非工作日数量。 之前的结构体写法被卡了,只能改成函数传 (虽然也不难) 动态开点好写,但是~~太菜了~~线段树部分写炸了,对 标记理解不深,下放标记时注意不要把本来子区间的信息覆盖了, 下放完标记
阅读全文
摘要:UVA1674 闪电的能量 树剖 "题面" 水。树剖模板 cpp include include include define MAXN 50005 define sl (x 1; buildt(sl, l, mid); buildt(sr, mid+1, r); } void push_down(
阅读全文
摘要:树链剖分总结 原理 将树边归到至多$logn$条连续树边构成的重边中,再在各条重边上建线段树,每次操作先遍历所有经过的重边再依次线段树上操作,复杂度${logn}^2$ 树剖代码量并不大,只是其包含了线段树;树剖本身并不难,只是看你怎么维护线段树 实现 初始化 两次$dfs$求得所需信息 第一次求得
阅读全文
摘要:rt,一个~~憨批~~错误 我,作为一个宏使用狂热爱好者, 函数当然用宏定义 于是,我在 "这道树剖题" 中大量使用了此宏,比如下面: cpp if(l
阅读全文
摘要:Sublime Text 3 C++ 配置 先将 添加至环境变量中,然后打开Sublime Text,菜单 两种模式, 直接在Sublime Text中输出; 则弹出cmd窗口 Build, 切换模式
阅读全文
摘要:[POI2008]BLO Blockade 割点 "题面" 容易想到用$\text{Tarjan}$求割点。对于非割点,会损失$2\times(n 1)$次访问(注意是互相访问,所以要乘2);对于割点,损失的访问次数即为$\sum^{k}_{i=1}sz[i]\times(n sz[i])$(割点被
阅读全文
摘要:黑匣子 对顶堆 对顶堆,由一个小跟堆和一个大根堆组成,且 满足小跟堆堆顶大于大根堆堆顶 。 include define MAXN 200002 using namespace std; priority_queue big; priority_queue, greater sm; int a[MA
阅读全文
摘要:spfa板子 Heap+Dijkstra都会写,突然发现spfa不会写了…… 记录是否已在队列中 更高效的 "dfs版spfa判负环"
阅读全文
摘要:[ZJOI2009]假期的宿舍 二分图匹配匈牙利 一个人对应一张床,每个人对床可能不止一种选择,可以猜出是二分图匹配。 床只能由本校的学生提供,而需要床的有住校并且本校和外校两种人。最后统计二分图匹配对数是否等于需要的床数即可。 注意细节,认真审题。 cpp include include defi
阅读全文
摘要:windy数 "题面 P2657 windy数" 比较简单的数位DP。但是需要注意此题与 "[CQOI2016]手机号码" 不一样,数的位数长度不定,另外根据样例1可知前一数位为前导0时也满足条件,所以要再添加一个上一位是否为前导零标记。 cpp include include define ll
阅读全文
摘要:[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的 )和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好了,答案为$work(R) work(L 1)$
阅读全文
摘要:[BJOI2019]排兵布阵 DP 比较好想的DP,设$dp[i][j]$表示第$i$个城堡时,已派出$j$个士兵。决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费)。我们发现又可以排序预处理出$a[i][j]$表示第$i$个城堡,出兵数量第$j$大的人出兵数量(因为这样可以很容易算出
阅读全文
摘要:多重背包二进制优化 将$num$件,价值$v$,花费$cost$的物品$(v,w)$拆分为$(v,w),(v\times 2^1,w\times 2^1),(v\times 2^2,w\times 2^2),\cdots,(x,y)$(其中$(x,y)$是无法被拆分剩下来的余项),如此便可通过这些$
阅读全文
摘要:BZOJ 3211 花神游历各国 线段树 各数根号之和无法合并,无法用线段树维护,只能 暴力开根号 ~~(毒瘤)~~。但是又注意到$10^9$级别的数开方次数不超过10,任何数(除$0$)开到最后都为$1$,并且后续修改操作并不会再修改值,所以维护区间和,区间正常查询,区间递归到每一个数暴力修改,修
阅读全文

浙公网安备 33010602011771号