07 2018 档案

摘要:" 传送门 " Solution: 与上一题十分类似的,我们考虑维护一个节点的区间从左到右包含最左端点的最大值,以及从右到左的最大值,以及整体的最大值,以及当前区间的权值和。 不过方便一点,我们不用再去维护区间左右端点的值,因为有了区间的权值和,父节点的lmax=max(lson.lmax,lson 阅读全文
posted @ 2018-07-31 16:07 Patrickpwq 阅读(74) 评论(0) 推荐(0)
摘要:" 传送门 " Solution: 考虑在区间维护五个值: 一个是le 代表从左端点开始向右的最大01序列 一个是ri 代表从右端点开始向左的最大01序列 一个是all 代表整个区间最大的01序列(可以不含左,右端点) xl 代表区间左端点的值 xr 代表区间右端点的值 这样之后,每次push_up 阅读全文
posted @ 2018-07-31 15:35 Patrickpwq 阅读(252) 评论(0) 推荐(0)
摘要:" 传送门 " 只需要对懒标记做文章,每次xor1,并且我们可以发现,一个区间xor1后权值和变为了l r+1 sum,知道这两个这道题就可做了。 cpp include define N 200005 using namespace std; int n,m,a[N]; struct node { 阅读全文
posted @ 2018-07-31 15:27 Patrickpwq 阅读(160) 评论(0) 推荐(0)
摘要:"传送门" Solution: 一辆车的载重,取决于他到终点上的路的载重最小值,最小值越大,装的就越多 考虑如何找路径,如果bfs或者dfs的话,TLE。 这时想到,我们可以做一颗最大生成树(按照权值从大到小排序),在生成树的基础上,两点之间都是联通的,而且载重也是最优的。 这时考虑如何在生成树上找 阅读全文
posted @ 2018-07-31 14:46 Patrickpwq 阅读(99) 评论(0) 推荐(0)
摘要:"传送门" Solution: 并查集,维护种类。 father维护可追溯的根节点,num维护与根节点的关系,我们定义0表示x与根节点同类,1表示x吃根节点,2表示根节点吃x。 当getfather(X)==(Y) 若D==1,而num[X]!=num[Y], 则此话为假。(D==1 表示X与Y为同 阅读全文
posted @ 2018-07-31 12:06 Patrickpwq 阅读(139) 评论(0) 推荐(0)
摘要:"传送门" 关于如何把多叉树转化为二叉树,有个口诀,叫做左儿子不变,右儿子兄♂弟。 详细的不多说,可以去参考一下相关资料。 等转化为二叉树了过后,让我们来琢磨一下。 左儿子:原根节点的孩子。 右儿子:原根节点的兄 ~~♂贵~~ 。 也就是说,不能直接套用第一题的方程,但是可以对dp数组进行相同的定义 阅读全文
posted @ 2018-07-30 17:10 Patrickpwq 阅读(191) 评论(0) 推荐(0)
摘要:" 传送门 " 这道题是个很好做的二叉树 首先考虑给DP数组下定义,一般来说树形DP的DP数组的第一维都是当前节点的编号。 这道题光一维肯定是不够的 ,那么加维,发现dp[i][j]表示当前节点为i,保留j个节点的最大苹果数量比较ok。 那么方程就显而易见了,dp[i][j]=max(dp[i][j 阅读全文
posted @ 2018-07-30 17:06 Patrickpwq 阅读(151) 评论(0) 推荐(0)
摘要:Problem: 在SD食堂,所有的座位是一行一行的排列。现在有N个座位排成一行,依次编号1,2,…,N,每个座位只能坐一个人,现在L想数一下有多少个人坐着,一个一个数太慢了,L决定只选择M段连续的座位,对每段分别数出人数。由于食堂噪音十分嘈杂,L无法专心,可能有输错了。但是L认为没有数漏,最多是重 阅读全文
posted @ 2018-07-30 16:59 Patrickpwq 阅读(111) 评论(0) 推荐(0)
摘要:Problem: 有 n 个不同的数列成一个队列,现在可以若干次选择两个数交换位置,每个数只能被交换 一次。现在 L想知道能得到多少种不同的队列。 输入 第一行是一个整数 T,表示有 T组数据 接下来 T行,每一行是一个整数N表示数量 输出 T行,每行一个正整数表示这组数据的答案(模1e9+7的值) 阅读全文
posted @ 2018-07-30 14:37 Patrickpwq 阅读(99) 评论(0) 推荐(0)
摘要:[传送门][1] Solution: 考虑倍增,维护up和w数组,up[i][j]代表i节点向上跳2^j能到达的节点,w[i][j]代表i节点及其以上2^j的和,一遍dfs,常规倍增处理即可。 特别地,w[i][0]的值不是val[father],而是val[i] include define N 阅读全文
posted @ 2018-07-29 23:35 Patrickpwq 阅读(113) 评论(0) 推荐(0)
摘要:[传送门][1] 题意:给出区间[1,n],下面有m组数据。l r,v区间[l,r]之和为v,每输入一组数据,判断此组条件是否与前面冲突 ,如果此条件冲突,则忽视它,最后输出与前面冲突的数据的个数. Solution: 带权并查集维护区间。 可以这么考虑,当几个区间能够拼起来的时,比如[1,3],[ 阅读全文
posted @ 2018-07-29 16:14 Patrickpwq 阅读(83) 评论(0) 推荐(0)
摘要:[传送门][1] [1]: http://poj.org/problem?id=1988 题意:现在有n个立方体,n个坑。有p种操作,分为M与C。对于M操作:给出x,y,需要把x立方体所在的坑里的立方体全部搬到y立方体所在的坑上。对于C操作,给出x,需要输出x立方体下面的立方体个数。 Solutio 阅读全文
posted @ 2018-07-29 11:46 Patrickpwq 阅读(82) 评论(0) 推荐(0)
摘要:[ 传送门 ][1] [1]: http://acm.hdu.edu.cn/showproblem.php?pid=3635 题目大意:有n个龙蛋,分别坐落在n个城市。现在有m个操作。操作分为T,Q。对于T:给出x,y,把x所在的城市中的蛋全部移到y所在城市去。对于Q:给出x,我们需要输出x所在的城 阅读全文
posted @ 2018-07-29 11:28 Patrickpwq 阅读(78) 评论(0) 推荐(0)
摘要:先强调一下网络流 及最大流的通俗概念吧 (这里引用几个大佬的说法) 算了...自己戳进去看吧 懒得复制了(我不确定大佬后面写的能不能看懂 反正我是看不懂) https://blog.csdn.net/wzw1376124061/article/details/55001639 (看一下开头对网络流 阅读全文
posted @ 2018-07-28 16:38 Patrickpwq 阅读(358) 评论(0) 推荐(0)