力扣508周赛

📅 2026/6/30 21:19:59
力扣508周赛
第一题 3974. K 个元素的最大总和题解按从大到小依次选k个元素判断mul的正负决定累加时是否乘以mulmul减一。其中数组长度为10^5所以每次去最大元素用暴暴力遍历会超我这里用大跟堆实现。下面给出小跟堆代码。void up(int i, vectorint a) { int t i 1; if (!t) return; if (a[t] a[i]) { swap(a[t], a[i]); up(t, a); } } void down(int i, int n, vectorint a) { int l i * 2; int r i * 2 1; if (r n) { int k r; if (a[l] a[r]) { k l; } if (a[i] a[k]) { swap(a[i],a[k]); down(k, n, a); } } }else if (l n) { if (a[i] a[l]) { swap(a[i], a[l]); down(l, n, a); } } }第二题