摘要: 题意: 给定n支铅笔,问能不能分成若干堆,使得每堆数量不小于k且每堆的最大值和最小值之差不大于d。 题解: 排序。从后往前扫一遍。考虑以每个点为最小值建堆是否合法。对于当前点i,它需要至少k支铅笔,但是最大值不超过a[i]+d,所以就会有一个成立的范围[l,r]。假设存在点k(l<=k<=r),使得 阅读全文
posted @ 2018-05-22 08:51 Pneuis 阅读(524) 评论(0) 推荐(0)
摘要: 题意: 给出一棵树,删掉其中一些边,要求生成的每个子树节点数一样。输出所有可以删掉的边数。 题解: 以节点1为根,预处理每个子树的大小。对于每个n的因数x,还需满足子树为他倍数的点够n/x个,那么删的边数就为n/x-1。 #include <bits/stdc++.h> using namespac 阅读全文
posted @ 2018-05-12 17:15 Pneuis 阅读(424) 评论(0) 推荐(0)
摘要: 题意: 一个区间支持三种操作,区间加,区间开根号和区间求和。 题解: 线段树的做法。对于区间开根号操作,如果要开根号的区间最大值和最小值相等的话相当于区间减操作。当最大值和最小值相差1时,如果最大值是平方数那么也相当于区间减操作,否则就是区间覆盖。 #include <iostream> #incl 阅读全文
posted @ 2018-05-11 18:07 Pneuis 阅读(301) 评论(0) 推荐(0)
摘要: 题意: 给出一个N个节点的有向图。图中任意两点进行通信的代价为路径上的边权和。如果两个点能互相到达那么代价为0。问从点0开始向其余所有点通信的最小代价和。保证能向所有点通信。 题解: 求出所有的强连通分量,然后进行缩点操作。最后贪心的找出每个点的最小代价,然后求和。 #include <iostre 阅读全文
posted @ 2018-05-05 23:55 Pneuis 阅读(174) 评论(0) 推荐(0)
摘要: 题意: 长度为N的序列,初始时间戳为0,有M次操作。 C l r d:代表区间[l, r]的数加d,当前时间戳加1. Q l r:代表输出当前时间戳内[l, r]的区间和. H l r t:代表输出时间戳为t时[l, r]的区间和. B t:代表把时间戳置为t. 题解: 先初始化一棵带lazy线段树 阅读全文
posted @ 2018-05-04 23:02 Pneuis 阅读(199) 评论(0) 推荐(0)
摘要: 题意: 给出一个长度为N的序列。M次操作,Q代表询问区间的第K大值,C代表修改一个位置的数。输出每次询问的第K大值。 题解: 修改第i个位置的数会影响i~n。所以可以用树状数组维护每次修改。树状数组的每个节点代表一棵树,统计结果时对应位置相加即可。 #include <bits/stdc++.h> 阅读全文
posted @ 2018-04-30 13:21 Pneuis 阅读(183) 评论(0) 推荐(0)
摘要: 题意; 一棵N个节点的树,有点权。M次询问,每次询问点(u,v)路径上有多少个权值不同的点。 题解: 树上开莫队,分块方法可以参照BZOJ1086题的方式。按照询问点(u,v)所在块将询问进行排序。更新路径时用vis数组标记路径上的点是否访问过。 #include <bits/stdc++.h> u 阅读全文
posted @ 2018-04-29 20:51 Pneuis 阅读(137) 评论(0) 推荐(0)
摘要: 题意: 给出一个长度为N的序列。Q次询问,每次询问一段区间的gcd值以及有多少区间的gcd值等于该值。 题解: 预处理st表。枚举左边界二分右边界求出所有gcd值的情况数。 #include <iostream> #include <cstdio> #include <cmath> #include 阅读全文
posted @ 2018-04-23 21:07 Pneuis 阅读(126) 评论(0) 推荐(0)
摘要: A.The game of Osho(sg函数+二项展开) 题意: 一共有G个子游戏,一个子游戏有Bi, Ni两个数字。两名玩家开始玩游戏,每名玩家从N中减去B的任意幂次的数,直到不能操作判定为输。问谁最终能赢。 题解: GYM - 101147 A.The game of Osho #includ 阅读全文
posted @ 2018-04-21 17:04 Pneuis 阅读(673) 评论(0) 推荐(0)
摘要: 题意: 一个人从城市0开始旅行。一共有N座城市,他每到一座城市都会寄一张明信片。给出从一座城市到另一座城市的概率和在每座城市寄出每张明信片的概率。给出长度为k的寄明信片的序列。问在该序列的条件下在第Z个城市寄出第Q张明信片的序列。 题解: 条件概率:P(A|B) = P(A,B)/P(B) dp[i 阅读全文
posted @ 2018-04-21 15:22 Pneuis 阅读(215) 评论(0) 推荐(0)