题意 题目链接 分析 钦定 \(k\) 个点作为深度为奇数的点,有 \(\binom{n-1}{k-1}\) 种方案. 将树黑白染色,这张完全二分图的生成树的个数就是我们钦定 \(k\) 个点之后合法的方案数. 然后就和 BZOJ4766文艺计算姬 一致了,假设两边点集大小分别为 \(n,m\) ,生成树个数就是 \(n^{m-1}m^{n-1}\) 证明可以考虑 prufer 序列还原树时的操作,将所有点先放入 set 中,每次将没有出现在序列中的编号最小的点拿出来和 prufer 序列开头的…
题面 传送门 题解 答案就是\(S(n-k,k)\times {n-1\choose k-1}\) 其中\(S(n,m)\)表示左边\(n\)个点,右边\(m\)个点的完全二分图的生成树个数,它的值为\(n^{m-1}m^{n-1}\),证明可以看这里 居然没想出来-- //minamoto #include<bits/stdc++.h> #define R register #define inline __inline__ __attribute__((always_inline)) #d…
题面传送门 一道代码让你觉得它是道给初学者做的题,然鹅我竟没想到? 首先考虑做一步转化,我们考虑将整棵树按深度奇偶性转化为一张二分图,即将深度为奇数的点视作二分图的左部,深度为偶数的点视作二分图的右部,这样我们肯定只能在左右部点之间连边,这大概算得上一个小套路吧,不过这还是萌新第一次见到这个套路呢,大佬不喜勿喷( 接下来考虑怎么求方案数,显然 \(1\) 只能放在左部点,我们还需从另外 \(n-1\) 个点中选出 \(k-1\) 个扔给左部,方案数为 \(\dbinom{n-1}{k-1}\),…
#6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领大洗女子学院的大家打败了其他所有高中,取得了胜利,当然也就不用废校了.然而一群战车道的领导表示他们是口胡的,废校还是要废的. 军神的母亲西住志穗怒斥废校男,为了不造个大新闻,废校男承诺如果大洗学院可以打败大学队,就不用废校.(有种 OI 选手 PK ACM 选手的感觉呀)然而实力差距太大了,大洗女子学院最强…
题面 传送门 题解 转化为\(dfs\)序之后就变成一个区间加,区间查询\(k\)小值的问题了,这显然只能分块了 然而我们分块之后需要在块内排序,然后二分\(k\)小值并在块内二分小于它的元素--一个根号两个\(\log\)很悬啊-- 每次操作的值加上的值不超过\(len\)一看就有阴谋 因为每次加上的值很小,我们分块的时候保证一个块内的最大值和最小值之差不超过某个常数,这样我们就可以做一个前缀和了,之后二分的时候不需要再在块内二分,可以减少一个\(\log\) 还有就是可能要定期重构块,具体细…
题面 传送门 题解 首先先把所有权值取个相反数来求最大收益,因为最小收益很奇怪 然后建图如下:\(S\to\)药,容量\(\inf+p_i\),药\(\to\)药材,容量\(\inf\),药材\(\to T\),容量\(\inf\),跑个最小割就是答案了 如果\(S\)到药的边被割了,看成不选这个药,如果药材到\(T\)的边被割了,看做选这个药材 不难发现几个性质 1.隔中间的边肯定是不优的 2.显然最少要割\(n\)条边,因为所有权值都是\(\inf\)级别的,且要求的是最小割,所以割掉的肯定…
又是经典模型的好题目 题目描述 人类智慧之神 zhangzj 最近有点胖,所以要减肥,他买了 NN 种减肥药,发现每种减肥药使用了若干种药材,总共正好有 NN 种不同的药材. 经过他的人脑实验,他发现如果他吃下去了 KK(0≤K≤N0≤K≤N)种减肥药,而这 KK 种减肥药使用的药材并集大小也为 KK,这 KK 种才会有效果,否则无效.第 ii 种减肥药在产生效果的时候会使 zhangzj 的体重增加 PiPi​ 斤,显然 PiPi​ 可以小于 00. 他想知道,一次吃药最好情况下体重变化量是多…
LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含的药材也等于$K$时才会有效果. 求最小收益,收益可能是负的.保证有完美匹配. 分析: 先把所有权值取相反数求最大收益,因为最小收益看着很难受. $S$->减肥药($inf$+收益),减肥药->药材($inf$),药材->$T$($inf$). 然后求最小割,答案就是$S$连出去的边的容量和…
[LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询问会给定一个长度为 \(k\) 的字符串 \(w\) 以及一对 \(L,R\), 求所有满足 \(i\in [L,R]\) 的 \(w[l_i:r_i]\) 在 \(s\) 中的出现次数之和. \(n,m,k,q\le 1\times 10^5\), \(\sum |w|\le 1\times 10…
[LOJ 6030] 「雅礼集训 2017 Day1」矩阵 题意 给定一个 \(n\times n\) 的 01 矩阵, 每次操作可以将一行转置后赋值给某一列, 问最少几次操作能让矩阵全为 1. 无解输出 -1. \(n \le 1000\). 题解 首先手玩下样例就可以发现一个非常虾皮的明显性质: 因为操作是赋值而不是取或, 于是一定是先让某一行都为 1 然后用这一行去染所有不是全 1 的列. 对于构造一个全 1 的行, 如果行号为 \(k\), 那么显然是用某一行的第 \(k\) 列上的 1…
[LOJ 6029] 「雅礼集训 2017 Day1」市场 题意 给定一个长度为 \(n\) 的数列(从 \(0\) 开始标号), 要求执行 \(q\) 次操作, 每次操作为如下四种操作之一: 1 l r c 给 \([l,r]\) 区间内的值全部加上 \(c\). 2 l r d 给 \([l,r]\) 区间内的值全部除以 \(d\), 向下取整. 3 l r 求 \([l,r]\) 区间内的最小值. 4 l r 求 \([l,r]\) 区间内的值之和. \(n,q\le 1\times 10…
「雅礼集训 2017 Day8」价 内存限制: 512 MiB时间限制: 1000 ms 输入文件: z.in输出文件: z.out   [分析] 蛤?一开始看错题了,但是也没有改,因为不会做. 一开始以为是并集全等,其实只是集合内元素个数相等. 如果是一开始的题意的话,就是选了什么药材就要选什么药,明显的一个最大权闭合子图[于是我真的就这样打了,加上暴力还搞了很多分 数量一样的话,男神有一个方法就是放大点权,普通选法的话左边比右边少,所以药的点权+INF,药材的点权-INF,然后做最大权闭合子…
题目传送门 传送门 题目大意 有一个位置数列,给定$n$条线索,每条线索从某一个位置开始,一直向左或者向右走,每遇到一个还没有在线索中出现的数就将它加入线索,问最小的可能的数列长度. 依次从左到右考虑每一位上填的数. 用$f_{L, a, R, b, S}$表示正在满足向右走的线索是$L$,前$a$个字符已经满足,正在满足向左走的线索是$R$,前$b$个字符还没有满足,还未被考虑的线索集合是$S$. 主要有两种转移: 填下一个字符 如果两个线索下一个要填的字符相同,那么直接填 如果不同则还需判断…
题目传送门 唯一的传送门 题目大意 给定$n$个串,每个串只包含 ' .问是否可能任意两个不同的串不满足一个是另一个的前缀. 2-sat的是显然的. 枚举每个通配符填0还是1,然后插入Trie树. 对于Trie的每个点在2-sat中建点. 如果其中一个点被选择,那么它祖先和所有后继的结束点都不能选.(然后逆否命题连边) 对于一个包含通配符的串,通配符替换为0以及通配符替换为1的否命题等价,同样,通配符替换为1以及通配符替换为0的否命题等价(连双向边). 对于一个不包含通配符的串,直接它到的节点的…
题目描述 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的有相同的事情发生.比如,有两个人同时在世纪之交 11 年的时候上台,同样喜欢与洋人谈笑风生,同样提出了以「三」字开头的理论. 你发现,一件事情可以看成是这个 01 串的一个前缀,这个前缀最右边的位置就是这个事情的结束时间. 两件事情的相似度可以看成,这两个前缀的最长公共后缀长度. 现在你很好奇,在一段区间内结束的…
这个题的搜索可以打到48分…… #include <cstdio> #include <cstring> #include <algorithm> ; bool must[N],in[N]; int cnt; int n,a[N][N],q[N],b[N]; inline bool judge(int len,int lim){ return lim-len>=cnt; } inline bool check(int len){ register int i,j,…
题目传送门 传送门 设 $m = \sum_{i = 1}^{n} a_i$. 总方案数显然等于 $\frac{m!}{\prod_{i = 1}^{n} a_i!}$. 考虑这样一个网格图,第 $i$ 行有 $a_i$ 个网格. 那么我们在这个网格中填 $1$ 到 $m$ ,如果保证每一行严格递增,那么第 $i$ 次移动后第 $j$ 维坐标就是第 $i$ 行中小于等于 $i$ 的数数量. 因此一条路径可以唯一对应一种填法. 路径中任意一个点都满足条件,等价于要求每一列递增. 这等价于给定杨表的…
loj 爆搜? 爆搜! 先分析一下,因为我们给出的是一个排列,然后让\(i\)给\(p_i\)连边,那么我们一定会得到若干个环,最后要使得所有点度数为1,也就是这些环有完备匹配,那么最后一定全是偶环.对于一个环,我们选点一定是隔一个选一个,所以每个环只有\(2\)种选法.如果我们先考虑长度为\(2\)的环,这种环选编号小的点显然更优,因为他要的是括号序列,左括号在越前面越好;剩下的环一定长度\(\ge 4\),那么这种环个数不超过\(\frac{100}{4}=25\)个,枚举每种环的选择情况即…
loj 注意到每次询问串长度都是给定的,并且询问串长\(k*\)询问次数\(q<10^5\),所以这里面一个东西大的时候另一个东西就小,那么考虑对较小的下功夫 如果\(k\le \sqrt{n}\),那么可以\(O(k^2)\)暴力枚举询问串的每一个子串,然后在\(S\)的sam找到这个子串对应的点,算出出现次数,并且乘上在区间\([a,b]\)中这个子串询问的出现次数.找到子串对应的点为了方便,可以依次让询问串的某个前缀在sam上匹配,然后按长度从大到小枚举前缀的后缀,从匹配位置开始倍增跳父亲…
https://loj.ac/problem/6046 最近遇到几个分块题,我发现我一遇到分块题就死活构造不出来 不对,明明是,遇到数据结构题,就死活构造不出来. 所以我就找了几个分块题做做. 其实分块,树上的,很多都是先求一个dfs序,或者树剖,用一个log的代价或者没有多余的代价变成序列上的东西 树上的东西想到dfs序和树剖不是套路么…… 很多不好维护的东西,都可以用分块来做,诶这不是我以前说过的么. 这道题,如果分块,那么按照套路,块内就可以排序,我们可以二分一个答案,然后在块内二分. 算…
我们考虑最小割. 我一开始觉得是裸的最小割,就直接S到每个减肥药连up+p[i]的边,减肥药到药材连inf边,药材到T连up,然后得到了40分的好成绩. 之后我发现这是一个假的最小割,最小割割的是代价或者得不到的收益,上面说的这种建图左边割掉的是收益,右边割掉的是代价,然后当然就gg了. 所以我们把p取相反数,因为有负权,我们在给所有边加上一个UP,之后就可以直接建图最小割了. #include <cstdio> #include <cstring> #include <io…
完了感觉最近留了好多坑的说,这题也是模模糊糊地会一点 首先我们发现题目要求的是单调不上升的序列个数,那么一个套路就是用值减去下标 然后考虑连续位置的限制,这个我们做一个置换然后尽量向后取 这样拿值和位置卷积就变成了合法方案数的分子\(\times\)总方案数的分母? 感觉策不太懂啊,QQ上加了一个dalao问下细节,具体的到时候来填吧 先把CODE放了 #include<cstdio> #include<cctype> #define RI register int #define…
我可以大喊一声这就是个套路题吗? 首先看到LCP问题,那么套路的想到SAM(SA的做法也有) LCP的长度是它们在parent树上的LCA(众所周知),所以我们考虑同时统计多个点之间的LCA对 树上问题的话请出万能算法--LCT(这里准确的说应该是实链剖分),我们只需要不停地access就可以找到LCA了 然后怎么统计最后的答案,区间询问用莫队?这里的两个信息(最大值,边的虚实)显然都不能撤销 我们直接大力离线,从左往右把点一个个扔到LCT上,然后对于每个点开一个树状数组维护后缀最大值,由于这里…
完全不会的数学神题,正解留着以后填坑 将一个口胡的部分分做法,我们考虑计算格点多边形(包括三角形)面积的皮克公式: \[S=a+\frac{1}{2}b-1\text({a为图形内部节点个数,b为边界上的点数})\] 那么我们枚举每一个点,考虑算出它作为内部节点的总方案数以及作为边界上的点的方案数 然后考虑还有一个\(-1\)的常数,应该减去的是三角形的个数 所以我们大力组合容斥算出三角形个数就得到了一个优秀的\(O(nm)\)做法 正解也许是推式子+容斥,放个CODE先坑了 Python3的:…
完了我是数学姿势越来越弱了,感觉这种CXRdalao秒掉的题我都要做好久 一些前置推导 首先我们很容易得出\((a+bi)(c+di)=k \Leftrightarrow ac-bd=k,ad+bc=0\) 我们可以直接\(ad+bc=0\Rightarrow ad=-bc\Rightarrow \frac{a}b=-\frac{c}{d}\) 考虑把这个分数化为最简的形式,那么就意味着我们要把\(\gcd\)拿出来 我们令\(\frac{a}b=\frac{p}{q}(\gcd(p,q)=1)…
题意 题目链接 Sol 只会后缀数组+暴躁莫队套set\(n \sqrt{n} \log n\)但绝对跑不过去. 正解是SAM + set启发式合并 + 二维数点/ SAM + LCT 但是我只会第一种qwq 首先一个性质是两个前缀的最长公共后缀就是他们再parent树上的LCA的len 那么我们考虑每个LCA的贡献. 把询问离线下来按右端点排序,对于当前点的子树中的点有一个显然的性质. 若存在四个点\(l, x, y, r\)满足\(l < x < y < r\),那么显然\(l, r…
我可以大喊一声这就是个思博题吗? 首先如果你能快速把握题目的意思后,就会发现题目就是让你求出每个点要成为树的重心至少要嫁接多少边 先说一个显然的结论,重心的答案为\(0\)(废话) 然后我们考虑贪心处理,每次肯定要砍断以重心为根的树的大小尽量大的子树 那么至少要砍多少呢,至少\(\frac{1}{2}\)要到吧,然后就是思博的感性理解了--这是每个点要砍的边的上界 假如我们总有一种方案可以使嫁接满足条件(兴许更多,但是这个不会证啊) 那么怎么判断是否达到上界呢,很简单,先取了必要的然后看剩下的有…
我可以大喊一声这就是个SB题吗? 首先讲一句如果你像神仙CXR一样精通搜索你就可以得到\(80pts\)(无Subtask)的好成绩 我们考虑挖掘一下题目的性质,首先发现这是一个置换,那么我们发现这的显然会成环 然后我们发现那个度数的性质其实就是告诉你环上的点必须左右括号相间 换而言之一个环其实只有两种状态,那么我们对于每一个环进行搜索的复杂度显然就是\(O(2^{\frac{n}{2}}n)\) 那么考虑\(n=100\)要怎么卡过去.我们发现一个长度为\(2\)的环显然必须令前面的为左括号,…
题意 链接 Sol 第一次做在二分图上博弈的题..感觉思路真是清奇.. 首先将图黑白染色. 对于某个点,若它一定在最大匹配上,那么Bob必胜.因为Bob可以一直沿着匹配边都,Alice只能走非匹配边.到最后一定是Alice不能移动. 否则Alice必胜.这个我不会证,但是又举不出反例来qwq.手玩了几个数据发现Alice总会有一种方法走某个非匹配边干掉Bob. 那么如何找不一定在最大匹配上的点呢?首先求出一个最大匹配,结论是从所有不在最大匹配上的点开始dfs,通过交叉边(目标点的匹配边)走到点都…
题意 链接 Sol 神仙题+神仙做法%%%%%%%% 我再来复述一遍.. 首先按照\(y\)坐标排序,然后维护一个扫描线从低处往高处考虑. 一个连通块的内状态使用两个变量即可维护\(ans\)表示联通块内的最大答案,\(f\)表示联通块内\(k=1\)的数量 若当前的水超过了当前的挡板,那么将当前联通块和下一个位置所在的联通块合并. 若是一个\(k=0\)的操作,则一定满足. 若是\(k=1\)的操作,那么就将\(f++\),然后更新一下答案. #include<bits/stdc++.h>…