摘要:
link 如果没有环的话其实就是一个比较水的树形背包。但是现在有环,并且当我们选择环中任何一点时其他环上的点也都要被选择,然后就可以缩点解决环的问题。 然后缩点后会形成一个森林,我们建虚点$0$连向各自联通块的根,然后做一个树上背包即可 #include<iostream> #include<cst 阅读全文
摘要:
一个模拟赛 pdf $NOIP$ 普及组难度 纯原创试题 题解周日发布 T1 solution by:sry 一个比较简单的离线操作。 时间复杂度:$O(n\sqrt{n})$ T2 solution by:WHT 首先是看一波数据范围,然后发现$m=8$,这就让我们想到了状压$DP$,对于每一个点 阅读全文
摘要:
link 这题卡我精度,调了一晚上才调对,因为没有想到图还可以不连通 其实可以预处理出好多东西,距离($dis(u,v)$),买卖物品(从$u$到$v$买卖物品的最大利润,例($max{S_{u,i}-B_{v,i}}$),然后其实可以发现就是一个十分普通普遍的分数规划式子,就每次二分$k$,然后建 阅读全文
摘要:
link 几乎是一个可持久化线段树板子,但是调了半天,因为有一个坑点。此题要维护一个加点,删点的线段树,查找前$k$小的和,所以可以想到差分维护删除。先将优先级离散化,然后每次通过时间建树,内容存的是优先级,然后就慢慢去写就行,最后发现有一步是if(l==r) return sum[rt]/size 阅读全文
摘要:
link 也许本身想去写点分治的,但是最后因为码量太大就放弃了 然后就顺手写了个树形$dp$,其实跟点分治的思想一样,我们只要每次统计一条路径的上端点,什么意思呢,就是我们将要统计$(u,v)$是否合法呢,只要去$lca(u,v)$就行。然后就定$dp$数组为$dp(i,j)$表示为当前到第i个节点 阅读全文
摘要:
link 其实网络流就是再考你如何去建边。 先见$S$,$T$为源点与汇点,然后将$S$连向每一个单位,流量为每个单位的人数,然后将每一个单位连向每一个餐桌,流量为$1$,最后在将每一个餐桌与$T$相连,流量为每个餐桌容量,然后跑一边$Dinic$最大流就行,只需要优化一点点,每次$dfs$增广多条 阅读全文
摘要:
link 其实就是一道二分图匹配板子,我们建立$S$,$T$为源点与汇点,然后分别将$S$连向所有正驾驶员,边权为$1$,然后将副驾驶员与$T$相连,边权为$1$,将数据中给出的$(a,b)$,将$a$连向$b$,边权为$1$,然后把反向边记好以后就跑一遍最大流就行 #include<iostrea 阅读全文
摘要:
笔记--最大流 $EK$ $Dinic$ $EK$: 运用反向边可以给当前图一次反悔的机会,就是其实现在的增广路并不是最优的,然后就$bfs$找增广路即可 $Dicnic$: 我们发现其实每一次先$bfs$一下分层,然后$dfs$会更快一些,这就是$Dinic$的思想 然后优化此算法: 发现每一次可 阅读全文
摘要:
link 设颜色为$i$的个数为$a_i$ 我们可以发现$[l,r]$里面的答案为 $\frac{ \sum _{i=1}^x a_i\times (a_i-1)}{\sum_{i=1}^x a_i}$ 化简得 $\frac{\sum_{i=1}^x a_i^2-(r-l+1)}{(r-l+1)\t 阅读全文
摘要:
link 第一次写可持久化线段树,可以很明显的想到二分一个美味度,因为很明显此题具有单调性。 然后就可以随便乱搞了,按照美味度排序,然后按照每升价格建一个可持久化线段树,然后主要是check函数 当我们要判断一个美味度是否可行的时候,我们先可以将其下标得到,然后贪心去先选择价格最小的,然后就是个模拟 阅读全文
摘要:
第一次考$NOIP$的我已经自闭了 $CCF$告诉我们了一件事情,要对自己写的程序有信仰,相信$CCF$的数据是水的 普及组: 分数:$100+100+30+100=330$ $1.titile$: $cin$,$scanf$都试了试,却没有$A$掉第二个样例,最后$getchar()$$5$次$A 阅读全文
摘要:
题目 官方题解 T1: 单调栈,单调队列因为认为考场上会写崩所以写了一个十分暴力的方法(线段树) 然后做一做区间覆盖即可 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> 阅读全文
摘要:
题目 官方题解 T1: 一道水题 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<stack> using namespace std; inline 阅读全文
摘要:
题目 官方题解 T1: 我们可以把问题化简为$a\times b \times c \leq n $中的有序$(a,b,c)$有多少组。分三种情况考虑 当$a=b=c$时,答案十分好统计 当$a<b<c$时,统计完答案$\times 6$ 当$a=b$ and $a<c$时,答案$\times 3$ 阅读全文
摘要:
题目pdf 官方题解 T1: 我们可以发现此题若要求$[L,R]$区间的答案,其实就是再求前缀和,我们设$b$为当前出现次数最多的字符,$c$为最小,所以答案为$s[b]_r-s[c]_r-(s[b]_{l-1}-s[c]_{l-1})$,其实我们可以用一个数组$minv[b][c]$记录这个式子$ 阅读全文
摘要:
link 我们可以很容易的推断出$-1$是单调不降的,若$i>j$且$a_i$与$a_j$都没有填数,若填完之后$a_i>a_j$或者$a_i<a_j$,则对答案产生影响的只在$[i,j]$之间,则$a_i<a_j$对答案产生的贡献更小,则其实每个不同位置的$-1$其实是互不影响的,所以就可以用$d 阅读全文
摘要:
题目 这是$NOIP$模拟赛( ) T1: 想的太复杂了,开头$1$个小时认为此题不可做,所以到最后也懒得打$O(n)$的方法,只打了$O(n^2)$的东西 我的做法: 先把数据的图建出来,然后查看对于每个列是否没产生矛盾 #include<iostream> #include<cstring> # 阅读全文
摘要:
题目 题解 T1: 简单$bfs$或者跑个最短路即可 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #include<algorithm> using namespace s 阅读全文
摘要:
主要是怎么处理矛盾 矛盾的条件有$2$种: 第一种是当把所有相等的$a$都全部找到后,他们并没有全联通,所以矛盾,因为没有两个是相同的 第二种是在2组$(l,r,a)$,$(l1,r1,a1)$中,$a<a1$并且$(l,r)$ 包含在$(l1,r1)$,矛盾 所以怎么去维护,第一种直接暴力查询,第 阅读全文
摘要:
link 思维题目,题目描述其实说的就是这是一个树,想到树形$dp$。若两个铁路不向交,则每个点的度都$\leq 2$。所以现在就可以搞dp了。 怎么去维护答案,容易想到设$dp(i,j,k)$为现在到达第i号节点,当前到i的距离为j满足时,节点i已经与$k$个儿子($0\leq k \leq 2$ 阅读全文