随笔分类 - [经典题目]
一些好题目吧,总结下代码啥的
摘要:" bzoj4033 ,懒得复制,戳我戳我" Solution: 定义状态$dp[i][j]$表示$i$号节点为根节点的子树里面有$j$个黑色节点时最大的贡献值 然后我们要知道的就是子节点到根节点这条边会计算次数就是:子树中白色节点数$ $子树外白色节点数$+$子树中黑色节点数$ $子树外黑色节点数
阅读全文
摘要:" bzoj1190 ,懒得复制,戳我戳我" Solution: 这道题其实是一个背包(分组背包),但是由于数字比较大,就要重新构造dp式子。啃了三天才懂。 $dp[i][j]$表示背包容积为$j 2^i$时的最大价值。 首先,因为每一个物品一定是$a 2^b$,我们可以按照$b$值先按照普通的分组
阅读全文
摘要:" bzoj1864 ,懒得复制,戳我戳我" Solution: 其实想出来了$dp$方程推出来了最大值,一直没想到推最小值 $dp[i][1/0]$表示$i$号节点的子树中的绿色染色最大值,$1$表示该节点染色,$0$表示该节点不染色 $$dp[i][1]=dp[ls][0]+dp[rs][0]+
阅读全文
摘要:"懒得复制,戳我戳我" Solution: $Splay$板子题,注意可以选择相等大小 Code: cpp //It is coded by Ning_Mew on 4.10 include define ls(x) node[x].ch[0] define rs(x) node[x].ch[1]
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 题目大概意思就是找两条最短路后,找出最长公共部分 我们就只用以四个点为源点开始走$SPFA$,然后我们就只用遍历每条边然后建立一个新的拓扑图,然后随便搞一下就出来了 另外在建新图时不要跑边入队,不然一次性入队的点太多就会爆炸,只用遍历每一条边,然后把公共边
阅读全文
摘要:"懒得复制题面,戳我戳我" Question: ~~(因为网上找不到好的翻译,这里简单复述一下)~~ 告诉你$m1+m2$个约束条件,然后要你找出$X_1 X_n$这些数字,求满足要求的数列中不同的数字个数最多有多少个(exp:$1,2,3,3,2$里面就有三个不同的数) Solution: 首先的
阅读全文
摘要:"题面懒得复制,戳我戳我" Solution: 其实这个差分是挺显然的,我们可以用$s[i]$表示从第$1$到$i$中间的收入和 重点就在式子,比如读入$a$,$b$,$c$,显然可以得到一个式子:$$s[b] s[a 1]==c$$把这个式子变成不等式就是$$s[b] =c+s[a 1]$$$$s
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 首先考虑$X=1$的情况,我们其实只用用一下并查集把相等的点合为一个点 然后后面的四个式子我们就可以用差分约束了,就拿$X=2$的情况来说吧,我们用$S[i]$表示$i$号小朋友要拿多少糖果,如果X=2, 表示第A个小朋友分到的糖果必须少于第B个小朋友分到
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 这道题就是一个板子题 抽象成第$a$至第$b$间选择数的个数为$c$,我们就可以用前缀和来表示,这样就可以得到不等式$s[b] s[a 1] =c$,然后就可以差分约束了 这一个约束条件不够,因为每个数只能选择一次,所以补上$s[i+1] s[i] =0$
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 我感觉我也说不太好,看 "Awson的题解" 吧。 说一点之前打错的地方: 连边存的是hash后的数组下标 每个点存的是A状态与B状态,A操作的必胜还是必输态 然后就是一个要注意的点:我们是反向存边,由后状态推向先状态,如果后状态为必输态,那么先状态一定为
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 这题思路很神奇,首先你要知道这个毁灭树是怎么保证实现的:一句话就是如果该节点要被破坏,他的所有父节点就要被破坏,也就只要所有父节点的LCA被破坏就可以,所以我们就只用把这个点直接连向LCA。每个点都这么处理,最后面就是留下的一棵毁灭树,也就是$i$节点破坏
阅读全文
摘要:"懒得复制,直接贴链接吧" Solution: 水题一道,注意单独一个点的不算在食物链中,也就是$in[i]==0$ $out[i]==0$的点就不计算 Code: cpp //It is coded by Ning_Mew on 3.20 include using namespace std;
阅读全文
摘要:"懒得复制,原题目戳我" Solution: 这题没想到这么水,就是两个二分图而已 如果房间的二分图没匹配成功就直接进入下一个人 如果房间的二分图匹配成功,食物二分图匹配不成功就把房间的$be[ ]$数组还原,避免对后面匹配产生影响 都成功就直接$Ans++$就可以了,可能数据太水,感觉常数很大都过
阅读全文
摘要:"懒得复制,戳我戳我" Solution: 这个题面出的很毒瘤,读懂了其实是个板子题qwq 题面意思:有个$0$至$N 1$的数列是由另一个数列通过加减得到的,相当于将$A_i$变成$i$,每一步的代价计算就是$min(A_i i,N (A_i i))$,并且$A_i\left(0 using na
阅读全文
摘要:"原题戳我" Solution: (部分复制 "Navi_Aswon博客" ) 解释博客中的两个小地方: $$\sum_{\left(S是G中y→x的一条路径的点集\right))}\prod_{2≤j≤n,(j∉S)}degree_j$$ 因为加了$x$到$y$这条边出现了环,所以环上一定有一条边
阅读全文
摘要:"懒得复制题面,戳我" Solution: 处理出床位、要留校的人( 注意来访问的人一定住校 ),和人与人的关系(连边) 再接着就是二分图。 注意的就是连向的人必须是有床位的 还要注意的就是只用判断住校的同学 二分图板子都打错蠢死 cpp bool find(int k){ for(int i=he
阅读全文
摘要:原题目戳我 Solution: 这个二分图藏还是挺深的,重点在哪里呢?首先我们分析下,交换影响的会是哪里。 每一次交换只会影响某一行上的排列或者某一列上的排列,如果有矩阵是下面这样,就一定不会互相影响。 1 0 0 0 0 | 0 0 1 0 0 0 1 0 0 | 1 0 0 0 0 1 0 0
阅读全文
摘要:原题目戳我 Solution: 方法很巧妙,我们把每个装备的属性 与 装备编号连起来 从1-10000跑二分图,如果出现断层,就退出,输出答案就好。 memset清理bool快一点,int洛谷上超时了 板子题 Code: 1 //It is coded by Ning_Mew on 3.14 2 #
阅读全文
摘要:题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1。 由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如”i 号菜肴'必须'
阅读全文