摘要: "题目链接" 题意: 运送k个超级计算机,边是双向的,但是对于某一条边,一天只能运送一台机器,且不能出现同时双向运送,问最少需要多少天,并且输出每天的路径。 思路: 首先枚举天数用二分,极限情况最多100天,假设为lim; 然后把每个点都拆成$lim$个,表示在某天的这个点,那么对于输入的每条边$u阅读全文
posted @ 2019-05-15 15:50 qrfkickit 阅读(5) 评论(0) 编辑
摘要: "题目链接" 题意: DAG的最小路径覆盖,一条边可以被重复覆盖多次,但是一次只能沿着DAG的方向覆盖一条链,问最少覆盖次数。 思路: 看了半天没有思路,所以去搜索了题解,然后发现是有源汇上下界的最小流,这个东西依赖于有源汇上下界的可行流,然后又依赖于无源汇上下界可行流,所以就都去学了一下,写一个简阅读全文
posted @ 2019-05-09 21:12 qrfkickit 阅读(7) 评论(0) 编辑
摘要: https://vjudge.net/problem/UVA 12264 题意: 有很多个阵地,分为敌方和己方,每个士兵可以移动到相邻的己方的阵地,但是只能移动一步。 现在要让与敌方相邻的阵地中士兵最少的最多。 思路: 最少的最多,那显然二分。 二分这个最少的值。拆点,敌方阵地不管,S向己方阵地$i阅读全文
posted @ 2019-05-07 21:51 qrfkickit 阅读(11) 评论(0) 编辑
摘要: 题意: 给出一棵树,两种操作: 1.求出a到b的距离; 2.修改某一条边的权值。 思路: 可以用树链刨分(我不会 首先,求a到b的距离,因为有很多组询问,所以必须得用lca解决 ans = dis[a] + dis[b] - 2 * dis[lca(a,b)] dis是这个点到根的距离 修改某一条边阅读全文
posted @ 2018-06-12 14:58 qrfkickit 阅读(40) 评论(0) 编辑
摘要: 树状数组最原始的作用就是求前缀和,可以实现单点修改和区间查询。 但是假设现在有: 1.区间修改,单点查询 2.区间修改,区间查询 但是又不想敲线段树怎么办? 就用树状数组喽。 假设现在有一个原数组a(假设a[0] = 0),有一个数组d,d[i] = a[i] - a[i-1],那么 a[i] = 阅读全文
posted @ 2018-06-12 11:22 qrfkickit 阅读(1056) 评论(2) 编辑
摘要: 题意: 小Q非常喜欢数学,但是他的口算能力非常弱。因此他找到了小T,给了小T一个长度为nn的正整数序列a1,a2,...,ana1,a2,...,an,要求小T抛出mm个问题以训练他的口算能力。 每个问题给出三个正整数l,r,dl,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×a阅读全文
posted @ 2018-06-11 00:07 qrfkickit 阅读(49) 评论(0) 编辑
摘要: 题意: n枚硬币排成一圈,Alice和Bob轮流从其中取一枚或者两枚连续的硬币。 硬币取走之后留下空位,相隔空位的硬币不算连续的。 Alice先取,如果一个人取完之后没有硬币,那么这个人获胜。 思路: 当n <= 2,那么肯定是Alice获胜; 考虑,如果剩下偶数段石子,那么当Alice取了之后,B阅读全文
posted @ 2018-05-29 12:06 qrfkickit 阅读(27) 评论(0) 编辑
摘要: 题意: 给出一个数组,要求把他们排成升序,两个数字交换的代价是x + y,求代价的总和。 思路: 简单的逆序对变形,树状数组维护小于的cnt和sum即可。 代码:阅读全文
posted @ 2018-05-24 04:55 qrfkickit 阅读(24) 评论(0) 编辑
摘要: 题意: 给出一个N * N * N规模的矩阵,有2种操作:1.把A[i, j, k]反转,(x1<=i<=x2,y1<=j<=y2,z1<=k<=z2). 2.查询A[x,y,z]的值。 思路: 三维树状数组裸题,得画图好好推导一下。 区间更新,单点查询。 代码:阅读全文
posted @ 2018-05-24 04:52 qrfkickit 阅读(24) 评论(0) 编辑
摘要: 题意:二维平面上一开始所有星星都是暗淡的。 给出3种操作: 1.将x,y处的星星点亮; 2.将x,y处的星星灭掉; 3.统计x1,y1,x2,y2区间内有多少颗亮的星星。 思路: 二维树状数组裸题。 注意x1,x2,y1,y2数据给出的并不是有序的,这是一个坑点。 代码:阅读全文
posted @ 2018-05-24 04:49 qrfkickit 阅读(26) 评论(0) 编辑
摘要: 题意: 最开始有一个空的数组,有3中操作: 1.插入一个元素 2.删除一个元素 3.查询比a大的第k个元素是多少。 思路: 主要是第三个操作 树状数组求第k大是用的二分,判断满足的条件是大于等于0 这题首先得求出小于等于a的元素,假设是cnt,那么大于它的第k个元素,求的就是整个数组的第cnt + 阅读全文
posted @ 2018-05-24 04:46 qrfkickit 阅读(24) 评论(0) 编辑
摘要: 题意: 有若干棵树,每棵树有横坐标xi和高度hi。 把若干棵树按照x递增排序,每棵树的rank是ri,那么定义两颗树的F为abs(ri-rj)。 把若干棵树按照高度递增排序,每棵树的rank是ri,定义两棵树的D为min(ri,rj)。 两棵树的不和谐度定义为D * F。 求n棵树中任意两棵树的不和阅读全文
posted @ 2018-05-23 16:58 qrfkickit 阅读(26) 评论(0) 编辑
摘要: 题意: 有一棵树,这棵树上有很多果子,一开始每个果子都在,给出下面两种操作: 1.C x,改变果子x的状态,如果有,那么久摘下来;没有,就变为有; 2.Q x,问在x上面的(包括x)有多少个果子。 思路: 多叉树,朴素的更新方法就是从叶子到根的路径上的点的值全部更新,但是这样每更新的复杂度是O(n)阅读全文
posted @ 2018-05-23 16:01 qrfkickit 阅读(24) 评论(0) 编辑
摘要: 题意: 若干头牛排列在一条坐标轴上(位置都不同),每头牛都有一个音量vi,任意两头牛i,j之间要交流,他们发出的音量就是max(vi,vj) * 它们的距离。 问n / (n-1)对牛交流的音量的总和。 思路: 先无脑n ^ 2了一波,果然tle了,是我太naive。 首先把牛按照音量递增排序,对于阅读全文
posted @ 2018-05-23 04:03 qrfkickit 阅读(32) 评论(0) 编辑
摘要: 题意: 给出一个矩阵,有两种操作: 1.翻转给定的子矩阵; 2.查询a[i][j]的值。 思路: 树状数组是从小到大更新的。 这个题用二维树状数组可以解决,假设是一维树状数组, 0 0 0 0 0 0 我们把第三个到第四个翻转,变成 0 0 1 1 -1 0 sum[1] = 0,sum[2] = 阅读全文
posted @ 2018-05-22 23:11 qrfkickit 阅读(18) 评论(0) 编辑