9.26 模拟

T1 荒诞

题目大意

(1^2+2^2+...+n^2)

题目分析

水过。

T2 失意

题目大意

给定(n)个线段,从中取出(m)个线段使得这些线段交集最长,求最长长度以及一个任意的合法方案。

题目分析

求交集的长度很简单,就是(max(0,r_{min}-l_{max}))。那么我们将所有线段按左端点排序。枚举当前左端点(i),将左端点小于(i)的线段的右端点放入堆中。如果当前堆的大小(>m)就弹出堆中右端点最小的。当前最优答案就是堆中右端点最小值-(i)

T3 孤独

题目分析

容斥。但是在计算子集贡献的时候需要换一种快速的写法

for(int j=0;j<n;j++){
	for(int i=1;i<(1<<n);i++)if(i&(1<<j))cnt[i^(1<<j)]+=cnt[i];
}
原文地址:https://www.cnblogs.com/Trrui/p/9712546.html