随笔分类 -  信竞

信息技术竞赛
摘要:「CQOI2006」简单题 线段树 水。区间修改,单点查询。用线段树维护区间$[L,R]$内的所有$1$的个数,懒标记表示为当前区间是否需要反转(相对于区间当前状态),下方标记时懒标记取反即可。 cpp include include define sl (x 1; buildt(l, mid, x 阅读全文
posted @ 2019-07-11 14:54 Santiego 阅读(159) 评论(0) 推荐(0)
摘要:[HNOI2008] 越狱 快速幂 水。考虑不发生越狱的情况:即宗教相同的都不相邻,一号任意放$m$种宗教的人,此后$n 1$个房间都放与上一个宗教不同的人,有$m 1$种,所以共有$m (m 1)^{n 1}$种。答案即$m^n m (m 1)^{n 1}$。快速幂即可。 注意,这里需要考虑模后相 阅读全文
posted @ 2019-07-06 20:54 Santiego 阅读(151) 评论(0) 推荐(0)
摘要:P3066 逃跑的Barn 左偏树 "题面" 题意:给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个。 注意到答案的两个性质: 一个点的所有答案一定 包含 在其所有儿子的答案中 如果节点$i​$当前满足条件,那么所有距离(相对于根节点)比它小的节点当前也都满足(所以建个大 阅读全文
posted @ 2019-06-17 15:28 Santiego 阅读(128) 评论(0) 推荐(0)
摘要:P1552 [APIO2012]派遣 "题面 " 考虑枚举每个节点作为管理者,计算所获得的满意程度以更新答案。对于每个节点的计算,贪心,维护一个大根堆,每次弹出薪水最大的人。这里注意,一旦一个人被弹出,那么不再可能出现在其祖先们的最优解里(~~废话~~),所以使用可并堆左偏树优化复杂度。 cpp i 阅读全文
posted @ 2019-06-17 13:47 Santiego 阅读(164) 评论(0) 推荐(0)
摘要:左偏树总结 左偏树 一种合并复杂度为$O(log_2^n)$的 可并堆 具有左偏性质,左子树距离大于右子树距离,即$dis[ls]\ge dis[rs]$(这里一个点的距离定义为子树中离他最近的外节点到这个节点的距离,~~其实不需要纠结这个~~) 我们合并时每次将当前节点的右儿子和另一个堆的堆顶合并 阅读全文
posted @ 2019-06-17 13:40 Santiego 阅读(218) 评论(0) 推荐(0)
摘要:[USACO17JAN] 晋升者计数 dfs序+树状数组 "题面 洛谷P3605" 题意:一棵有点权的树,找出树中所有$(u,v)$的对数,其中$u,v$满足$val(u)\le val(v)$并且$u$为$v$的祖先。 本来想用dfs序+主席树做,每次查询$u$在其子树的大小排名,但是因为不熟写挂 阅读全文
posted @ 2019-06-07 22:40 Santiego 阅读(184) 评论(0) 推荐(0)
摘要:索引 算法笔记 高级数据结构 "树链剖分" "fhq treap总结" "树状数组" "莫队总结" "分块" "树上差分" "线段树合并" "主席树" "倍增" "种族并查集" "Splay" "左偏树总结" "字典树" 图论 "spfa−dfs" "差分约束" "Dijkstra+优先队列 堆优化 阅读全文
posted @ 2019-06-06 23:21 Santiego
摘要:[USACO10FEB]慢下来Slowing down "题面 洛谷P2982" ~~本来想写树剖来着~~ 暴力数据结构直接模拟,每头牛回到自己的农场后,其子树下的所有牛回到农舍时,必定会经过此牛舍,即:每头牛回舍后,会对其子树所有点造成多一次慢下来的机会。所以先使用$dfs$序将子树操作转化为线性 阅读全文
posted @ 2019-06-06 23:12 Santiego 阅读(149) 评论(0) 推荐(0)
摘要:P1558 色板游戏 状压线段树 "题面 洛谷P1558" 每次不同颜色覆盖一段区间,每次询问一段区间有多少种颜色 因为颜色数$T$很小,使用二进制表示状态当前区间有那些颜色,二进制第$i$位表示此区间是否含有$i$这种颜色,线段树合并信息时左右儿子信息或一下就好了。 读入 炸了我好久,最后换成 就 阅读全文
posted @ 2019-06-05 11:08 Santiego 阅读(286) 评论(0) 推荐(0)
摘要:P2184 贪婪大陆 用树状数组记录前$i$长度共有$sum1$个区间结束,前$j$长度共用$sum2$个区间开始,答案显然为$sum2 sum1$。 善用指针减少代码量: 阅读全文
posted @ 2019-06-04 13:34 Santiego 阅读(163) 评论(0) 推荐(0)
摘要:APIO2009 抢掠计划 Tarjan spfa/DAG DP "题面" 一道$Tarjan$缩点水题。因为可以反复经过节点,所以把一个联通快中的所有路口看做一个整体,缩点后直接跑$spfa$或者dp就好了。 在DAG上跑dp,复杂度$O(n)$,而$spfa$为$O(kn)$,所以还是优先选择d 阅读全文
posted @ 2019-05-29 13:50 Santiego 阅读(163) 评论(0) 推荐(0)
摘要:[HNOI2009]最小圈 分数规划 spfa判负环 "题面" 思路难,代码简单。 题目求圈上最小平均值,问题可看为一个 0/1规划问题 ,每个边有$a[i],b[i]$两个属性,$a[i]=w(u,v),b[i]=1$,问题转化为$min(\frac{\sum^{k}_{i=1}a[i]}{\su 阅读全文
posted @ 2019-05-25 11:42 Santiego 阅读(136) 评论(0) 推荐(0)
摘要:$spfa dfs$优化板子 快速判断是否存在负环(没负环时不要作死用) cpp bool spfa(int u){ vis[u]=1; for(register int i=head[u];i;i=nxt[i]){ int v=vv[i]; if(dis[v] 阅读全文
posted @ 2019-05-24 17:58 Santiego 阅读(428) 评论(0) 推荐(0)
摘要:差分约束总结 问题模型 求解由若干不等式限制的一组最大或最小未知数解 思想 首先我们来看看最短路的松弛操作,以$spfa$为例: 即当图中存在$dis[v] dis[u]+w​$时,就立刻松弛使其满足$dis[v]\le dis[u]+w​$,所以我们可以容易得到,当一张图跑完一次最短路后, 对于任 阅读全文
posted @ 2019-05-22 13:51 Santiego 阅读(162) 评论(0) 推荐(0)
摘要:[ZJOI2005]午餐 "题面 洛谷P2577 " 思路 如果题中只有一个窗口,那么此题就是一道贪心水题(接水),显然贪心策略是 让吃饭久的人先吃 。但是此题有两个窗口,所以贪心后,需要动态规划决定让第$i$个人去第一或第二窗口吃饭。 dp状态$dp[i][j]$表示到第$i$个人,第一个窗口已排 阅读全文
posted @ 2019-05-13 13:51 Santiego 阅读(184) 评论(0) 推荐(0)
摘要:悬线法DP总结 问题模型 求满足某种条件(如01交替)的最大矩形(正方形) 思想 先预处理出$ml[i][j],mr[i][j],mt[i][j]$,分别表示当前位置$(i,j)$能向左扩展到的 最左边 的编号、能向右扩展到的最右边的编号、能向上扩展到的最大高度。 然后在做$DP$时,除第一行,每行 阅读全文
posted @ 2019-05-11 11:38 Santiego 阅读(676) 评论(0) 推荐(0)
摘要:P4568 飞行路线 分层图最短路 分层图最短路 问题模型 求最短路时,可有$k$次更改边权(减为0) 思路 在普通求$Dijkstra$基础上,$dis[x][j]$多开一维$j$以存已用了多少次机会,然后每次松弛时,做完普通松弛操作后,还要使用一次机会(如果可以),类同$DP$。 每次普通松弛: 阅读全文
posted @ 2019-05-02 20:26 Santiego 阅读(181) 评论(0) 推荐(0)
摘要:个人备忘 阅读全文
posted @ 2019-05-02 16:10 Santiego 阅读(346) 评论(0) 推荐(0)
摘要:主席树备忘 非堆式动态建树 传统线段树都是通过$cur include define MAXN 200010 define MAXM MAXN 20 using namespace std; int n,q,sz,L[MAXM],R[MAXM],val[MAXM]; int a[MAXN],s[MA 阅读全文
posted @ 2019-05-01 15:36 Santiego 阅读(256) 评论(0) 推荐(0)
摘要:Vim备忘 下载 "gVim 8.1 for Windows" 命令 分屏 .vimrc 配置 来自 "mhy12345" 大佬 阅读全文
posted @ 2019-04-29 19:58 Santiego 阅读(222) 评论(0) 推荐(0)