@ACMLCZH学长出的毒瘤题T3.再也不是“善良”的出题人了. 题意:bzoj. 题解: 经典的树形DP题目,屡见不鲜了,然而我还是没有写出来. 这一类的题目有很多,例如这里的C题. 主要套路是把对儿子的枚举变成一个类似背包的转移方式,实现降复杂度. 需要注意的是某一个地方的DP值不能直接拿来判断是否有解,例如mod=1时,DP值全为0就没法判断了. 这里比较骚的操作是把mod的倍数变成mod,而0不变,这样就不会漏判. #include<bits/stdc++.h> #define F(i…
[BZOJ1063][NOI2008]道路设计(动态规划) 题面 BZOJ 题解 发现每个点最多只能被修一次等价于每个点最多只能和两条铁路相邻 考虑一个\(dp\) 设\(f[i][0/1/2]\)表示以\(i\)为根,当前点与他的儿子已经有\(0/1/2\)条铁路相邻的方案数 转移也很简单,考虑每个儿子,枚举是修还是不修就行了 这样的复杂度是\(O(n)\) 这样的前提是不需要计算答案的方案数,我们可以很容易想出来 现在考虑如何计算方案数. 考虑一下答案的范围,如果我们把这棵树进行树链剖分 重…
Description 有n种颜色的砖块,第i种颜色的砖块有a[i]个,你需要把他们放成一排,使得相邻两个砖块的颜色不相同,限定第一个砖块的颜色是start,最后一个砖块的颜色是end,请构造出一种合法的方案或判断无解. HINT [数据范围] n,m≤1000000,1≤start,end≤n ∑ai<=1000000 Solution 全网唯一 一篇O(n)题解+bzoj最优解 这个题看大家都是优先队列,然后直接贪心放置. 还有用权值线段树来模拟堆过的%%%. 其实不用带logn也可以过的.…
莫名其妙的变成了我们的noip互测题... 其实这题思想还是比较简单的,只是分类不好分而已 其实就是一个dfs的事 首先,非常明显,原题目中的所有关系可以抽象成一个图(这是...显而易见的吧...) 接下来,我们仅需在图上讨论即可 当然,这个图有几个部分组成其实并没有那么重要,毕竟,这些部分基本是互不干扰的. 所以接下来我们只需要对每一个块分别处理即可 我们来分类: 首先,如果所有块都是树,我们只需求出每个树上的最长链即可 接下来,如果存在环(包括真实的环和类环,即1-2-3-1和1-2-4+1…
1041 圆上的整点 暴力枚举 会超时 这道题很像之前一次noip模拟题(当时的我还太水了(虽然现在也很水)) x2+y2=R2 考虑变型 x2=(R+y)(R-y) int d=gcd(R,y) int a=R/d+y/d  b=R/d-y/d; gcd(a,b)=1; x2=d2*a*b; 易得到 a=u2 ,b=v2 v2+u2=2*R/d 然后暴力枚举即可 1045 糖果传递 第一行一个正整数n<=987654321,表示小朋友的个数. 这数据是在开玩笑吧... 看题解发现1e6就够了.…
二进制分组,算个小技巧 bzoj 4398福慧双修 给一张图,同一条边不同方向权值不同,一条边只能走一次,求从1号点出发再回到1号点的最短路 一开始没注意一条边只能走一次这个限制,打了个从一号点相邻节点为原点的dij,样例就挂了 其实就是要从这个错误思路上改进 对于不与1号点相接的边,权值为正,肯定不会重复走,所以这个条件可以忽略 考虑1号点相邻的点,走出第一步后所在的点,和走回1号点前的那个点不能相同 设这两个点编号为\(i\),\(j\),则\(i\),\(j\)的二进制至少有一位不同 所以…
bzoj1017: 树形dp. 设\(f[i][j][k]\)表示当前在点\(i\),有\(j\)个用于上层合成,花费金币为\(k\)的最大攻击力. bzoj1018: 一题多解. http://www.cnblogs.com/Sdchr/p/6104781.html bzoj1019: 待定系数+高斯消元. 或者递推. http://www.cnblogs.com/Sdchr/p/6105057.html bzoj1020: 迭代法. 论文:http://pan.baidu.com/s/1bn…
题目描述 现在请求你维护一个数列,要求提供以下两种操作:1.查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2.插入操作.语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾.限制:n是非负整数并且在长整范围内.注意:初始时数列是空的,没有一个数. 输入 第一行两个整数,M和D,其中M表示操作的个数(M <= 200,0…
题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12. 输出 可能越狱的状态数,模100003取余 样例输入 2 3 样例输出 6 题解 越狱状态数=总状态数-不越狱状态数=\(m^{n}-m\cdot\left(m-1\right)^{n-1}\) 快速幂+取模 #include&…
如题,题解传送门: 1001 1008 1012…