摘要:
【算法】高斯消元-异或方程组 【题解】良心简中题意 首先开关顺序没有意义。 然后就是每个点选或不选使得最后得到全部灯开启。 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的。 异或中1可以完美实现取反。 故令xi表示第i盏灯的开关情况,然后对每盏灯的亮灭列方程,即 (1*x1)^(1*x2) 阅读全文
摘要:
【算法】动态规划 【题解】yy出了O(1w log 1w)的算法。 将雪坡排序预处理出g[i]表示能力值为i的最短时长雪坡。 这样就可以定义work(t,c)表示时长t能力c的最多滑雪数量,work(t,c)=t/g[c]。 然后将课程按结束时间排序。 f[i]=f[j]+work(a[i].beg 阅读全文
摘要:
【算法】树上贪心 【题解】 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点。 从叶子开始贪心。 注意,如果它自己已经被选了就不需要选父节点了。 #include<cstdio> #include<algorithm> #include<cstring> #include<c 阅读全文
摘要:
【算法】DFS序+树状数组 【题解】题意相当于统计前i-1个点在第i个点的祖先的个数,显然可以用dfs维护,用树状数组差分维护前缀和。 出栈不新加节点就要注意左闭右开,即in[a[i]]处+1,ou[a[i]]+1处-1。 出栈新加节点就要注意数组开双倍。 #include<cstdio> #inc 阅读全文
摘要:
【算法】动态规划DP 【题解】 题目要求不严格递增或不严格递减。 首先修改后的数字一定是原来出现过的数字,这样就可以离散化。 f[i][j]表示前i个,第i个修改为第j个数字的最小代价,a表示排序后数组,b表示原数组。 f[i][j]=min(f[i-1][k])+abs(b[i]-a[j]) mi 阅读全文
摘要:
【算法】最短路树+(树链剖分+线段树)||最短路树+并查集 【题解】 两种方法的思想是一样的,首先题目限制了最短路树唯一。 那么建出最短路树后,就是询问对于每个点断掉父边后重新找路径的最小值,其它路径只能是这个点和其子树节点通过非树边到达非子树节点。 这样考虑很难统计,换个角度考虑每条非树边的影响。 阅读全文